Использование Ptrace для отслеживания местоположения открываемых файлов - PullRequest
2 голосов
/ 20 марта 2012

Я использовал следующий код, который фактически возвращает мне содержимое в регистрах (eax, ebx, ecx) всякий раз, когда вызывается системный вызов open.Теперь, после долгой борьбы, я понял, что означают значения из этого Вопрос .
ebx содержит указатель на имя файла.Но когда я пытался получить к нему доступ, у меня возникала ошибка сегментации.Куда я иду не так?Код можно получить из здесь

1 Ответ

2 голосов
/ 20 марта 2012

Каждый процесс имеет свое собственное адресное пространство.Адрес, полученный из другого процесса, не будет действительным в вашем.Один из способов чтения памяти в другом процессе - это использовать PTRACE_PEEKDATA.В Linux другим способом было бы открыть /proc/<pid>/mem, найти адрес и прочитать его как файл.

...