Есть ли способ обнаружить вызовы process_vm_readv ()? - PullRequest
2 голосов
/ 14 февраля 2020

Я пытаюсь прочитать память другого процесса с помощью process_vm_readv().

Как только я прочитал значение, приложение закрывается само по себе (оно не падает). Каким-то образом приложение обнаруживает, что я использую системные вызовы и пытаюсь прочитать его память.

Я пытаюсь это сделать на ОС x 1015 * (7.0) на базе x86 с ядром Linux 4.4.

Эта функция крайне недокументирована, любая информация по этому вопросу будет полезна.

Здесь приведена сокращенная версия моего фактического кода.

#include <sys/uio.h>

size_t readMem()
{
    struct iovec local[1];
    struct iovec remote[1];
    char buf1[1024*8];
    ssize_t nread;
    pid_t pid = 3627; 

    local[0].iov_base = buf1;
    local[0].iov_len = sizeof(buf1);
    remote[0].iov_base = _ADDR // i in the loop below
    remote[0].iov_len = sizeof(buf1);

    return process_vm_readv(pid, local, 2, remote, 1, 0);
}  

Чтобы было понятно, это на самом деле функция. Я вызываю эту функцию из al oop, которая перебирает все адреса памяти процесса.

for(long int i=0x7000000;!found;i+=4090)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...