#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
Но я получал выходные данные так же, как и раньше я ввожу данные после того, как они печатались в новой строке, может кто-нибудь помочь, пожалуйста
[list] [*]Это мой код перехвата записи на языке C, он просто перехватывает эту функцию и помещает значение в файл журнала. [/list] [code]#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); } } [/code] [list] [*]Это мой простой код на языке C с функцией записи для проверки функции перехвата [/list] [code]#include int main() { char str[13]; int s; s=read(0, str,13); write(1, str, s); return 0; } [/code] я запускал это с LD_PRELOAD, как показано ниже. Step_1 и в другом терминале я был слушайте с помощью файла перехвата Step_2 теперь я ввожу такие данные Step_3 Но я получал выходные данные так же, как и раньше я ввожу данные после того, как они печатались в новой строке, может кто-нибудь помочь, пожалуйста