[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: