Перехват функции записи в программе C с помощью LD_PRELOADLinux

Ответить
Anonymous
 Перехват функции записи в программе C с помощью LD_PRELOAD

Сообщение Anonymous »

  • Это мой код перехвата записи на языке 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;
}
я запускал это с LD_PRELOAD, как показано ниже.
Step_1
и в другом терминале я был слушайте с помощью файла перехвата
Step_2
теперь я ввожу такие данные
Step_3
Но я получал выходные данные так же, как и раньше я ввожу данные после того, как они печатались в новой строке, может кто-нибудь помочь, пожалуйста

Подробнее здесь: https://stackoverflow.com/questions/782 ... ld-preload
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»