Я пытаюсь прочитать память другого процесса с помощью 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)