gdb и elf
> есть libconnect в портах freebsd - там перехватывается connect(2), дабы сделать
> bind(2) на локальную сторону сокета (bind адрес берется из переменной окружения
> CONN_ADDR). используется так:
> export LD_PRELOAD=/usr/local/lib/libconnect.so
> export CONN_ADDR=1.2.3.4
> ./program --op1 --op2
> попробуйте переписать и перегрузить нужную вам функцию по аналогии. ;)
> /swp
набросал такой тестик, но почему-то не раотает
что-то я делаю не так?
nb:[/home/dimka/test]$ cat Makefile
PSRC = main.c
LSRC = test_lib.c
LTARGET = library.so
PTARGET = program
all: $(LTARGET) $(PTARGET)
$(PTARGET): $(PSRC) Makefile
gcc $(PSRC) -o $@
$(LTARGET): $(LSRC) Makefile
gcc -shared -o $@ $(LSRC)
clean:
rm -f $(LTARGET) $(PTARGET)
.PHONY: all clean
nb:[/home/dimka/test]$ cat main.c
#include <stdio.h>
void foo(void)
{
printf("This is foo() from main\n");
}
int main(void)
{
foo();
return 0;
}
nb:[/home/dimka/test]$ cat test_lib.c
#include <stdio.h>
void foo(void)
{
printf("This is foo() from library\n");
}
nb:[/home/dimka/test]$ make clean all
rm -f library.so program
gcc -shared -o library.so test_lib.c
gcc main.c -o program
nb:[/home/dimka/test]$ LD_PRELOAD=/home/dimka/test/library.so ./program
This is foo() from main
или из простого бинарника функции не перехватить?
Reply to:
- References:
- gdb и elf
- From: "Dmitry E. Oboukhov" <dimka@avanto.org>
- Re: gdb и elf
- From: Покотиленко Костик <casper@meteor.dp.ua>
- Re: gdb и elf
- From: "Dmitry Fedorov" <dm.fedorov@gmail.com>
- gdb и elf
- From: "Dmitry E. Oboukhov" <dimka@avanto.org>
- Re: gdb и elf
- From: "Dmitry Fedorov" <dm.fedorov@gmail.com>
- gdb и elf
- From: "Dmitry E. Oboukhov" <dimka@avanto.org>
- Re: gdb и elf
- From: "mitrohin a.s." <swp@swp.pp.ru>