Возникла проблема: в целях отладки мне нужно подменить некоторые
символы в Libc таким образом, чтобы вместо оригинальной функции
вызвалась моя, что-то напечатала, а затем вызывала "настоящую"
функцию. Я делаю это посредством LD_PRELOAD.
Но это получается, если только у символа есть синоним. Вопрос такой:
как подменить символы, у которых нет синонимов? Ну например, я пишу
маленькую библиотеку mysocks.so:
#include <stdio.h>
int accept (int __fd, void *__addr, int *__addr_len) {
printf("mysocks::accept(fd=%d, addr=%X, addr_len=%X, *addr_len=%X)\n", __fd, __addr, __addr_len, *__addr_len);
int r = __libc_accept(__fd, __addr, __addr_len);
printf("mysocks::accept(fd=%d, addr=%X, addr_len=%X) returned %d\n", __fd, __addr, __addr_len, r);
return r;
}
int bind (int __fd, void *__addr, int __len) {
printf("mysocks::bind(__fd=%d, __addr=%X, __len=%X)\n", __fd, __addr, __len);
int r = __libc_bind(__fd, __addr, __len);
printf("mysocks::bind(__fd=%d, __addr=%X, __len=%X)=%d\n", __fd, __addr, __len, r);
return r;
}
У accept() есть синоним __libc_accept(), а у bind() - нет! Так что
загрузка этой библиотеки с LD_PRELOADК не работает.
Как же мне поступить с bind()?
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от Die-Hard
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от idle
Ответ на:
комментарий
от idle
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум accept() не прерывается сигналом (2010)
- Форум Сокеты в Си (продолжене) (2005)
- Форум ошибка сигментирования в so (2016)
- Форум Клиент, сервер и их правильная работа. (2005)
- Форум сваливается send (сокет) (2008)
- Форум Подключиться к unix-сокету через bash (2020)
- Форум Консольный обмен сообщениями (2017)
- Форум Сокеты передача сообщений между компьютерами. Помогите найти ошибку. (2012)
- Форум компилятор дает ошибку undefined reference (2015)
- Форум Соединится с сервером по сокету? (2020)