você pode substituir o código em tempo de execução pelo uso de LD_PRELOAD (@windows você pode usar uma técnica similar chamada desvios , bastante extravagantes). O que isto faz é informar ao vinculador dinâmico para primeiro carregar todas as libs no processo que você quer rodar e depois adicionar um pouco mais sobre ele. você normalmente usa assim:
% LD_PRELOAD=./mylib.so ls
e com isso você muda o que o ls
faz.
para o seu problema eu tentaria link , que você pode usar como:
% BIND_ADDR="ip_of_ethX" LD_PRELOAD=./bind.so twinkle
aqui está como você o constrói:
% wget http://www.ryde.net/code/bind.c.txt -O bind.c
% gcc -nostartfiles -fpic -shared bind.c -o bind.so -ldl -D_GNU_SOURCE
um tutorial mais longo é link
hacks e ferramentas semelhantes: