Поиск вызывающего сайта инструментированных системных вызовов - PullRequest
0 голосов
/ 02 мая 2019

В моем pintool я проверяю системные вызовы NtReadFile () и NtCreateFile (), используя PIN API:

PIN_AddSyscallEntryFunction() 
PIN_AddSyscallExitFunction()

Но выходные данные, кажется, загрязнены многими неожиданными дополнительными перехватами, я хотел бы отфильтровать.

Проблема в том, что функции SYSCALL_ENTRY_CALLBACK не позволяют получить доступ к информации, необходимой для определения того, откуда был создан системный вызов (вызывающий сайт), даже при входе. Проверяя значение REG_EIP (адрес указателя инструкции) juste перед выполнением системного вызова, я вижу, что я далеко от вызывающего сайта (вне диапазона адресов изображения, которое я обрабатываю, хотя системный вызов сделан в этом изображении).

Я также пытался обработать инструкции с помощью INS_IsSyscall() на IPOINT_BEFORE и проверить его адрес, но, похоже, слишком поздно (вне диапазона низких и высоких адресов изображения)

Как правильно обрабатывать только системные вызовы, начиная с изображения, которое я сейчас обрабатываю?

...