- Это мой код перехвата записи на языке C, он просто перехватывает эту функцию и помещает значение в файл журнала.
Код: Выделить всё
#include
#include
#include
#include
#include
ssize_t write(int fildes, const void *buf, size_t nbytes)
{
ssize_t (*new_write)(int fildes, const void *buf, size_t nbytes);
ssize_t result;
new_write = dlsym(RTLD_NEXT, "write");
result = new_write(fildes, buf, nbytes);
FILE *log_file = fopen("/home/cyberwolf/hooker.log", "a");
if (log_file != NULL)
{
pid_t pid = getpid();
const char *striped_string = ((int)nbytes,(const char *)buf);
fprintf(log_file, "{'is_hooked': true,'intersepted_string':%s,'pid':%d}", striped_string, pid);
fclose(log_file);
}
}
- Это мой простой код на языке C с функцией записи для проверки функции перехвата
Код: Выделить всё
#include
int main()
{
char str[13];
int s;
s=read(0, str,13);
write(1, str, s);
return 0;
}
Step_1
и в другом терминале я был слушайте с помощью файла перехвата
Step_2
теперь я ввожу такие данные
Step_3
Но я получал выходные данные так же, как и раньше я ввожу данные после того, как они печатались в новой строке, может кто-нибудь помочь, пожалуйста
Подробнее здесь: https://stackoverflow.com/questions/782 ... ld-preload