ptrace
's interface allows you to read only one word at a time, and I'm trying to scan a larger portions of the stack
Bem, apenas use um loop, então. Eu sinceramente não vejo como isso constitui um problema com ptrace
, eu uso o tempo todo para acessar processos remotamente.
Eu uso algo assim:
static int memcpy_from_target(pid_t pid, char *dest, long src, size_t n)
{
static int const align = sizeof(long) - 1;
while (n)
{
size_t todo = MIN(n, sizeof(long) - (src & align));
long data = ptrace(PTRACE_PEEKTEXT, pid, src - (src & align), 0);
if (errno)
{
perror("ptrace_peektext (memcpy_from_target)");
return -1;
}
memcpy(dest, (char *)&data + (src & align), todo);
dest += todo; src += todo; n -= todo;
}
return 0;
}