Bonjour,
j'essaye de tracer un processus à l'aide de ptrace(). Comme j'exécute manuellement le processus tracé, je fork et j'attends que le processus fils appelle execve() et repasse la main. Ensuite dans le traceur (le processus parent) j'appelle ptrace() avec la requête PT_READ_I, seulement je ne sais pas trop quoi passer comme 3ème paramètre de la fonction (caddr_t addr)... d'apres le man, c'est l'adresse à laquelle on désire lire un entier dans le tracé, alors je rajouteavant de forker (fd étant le descripteur ouvert du binaire à tracer).Code:r_addr = mmap(0, 42, PROT_READ, MAP_PRIVATE | MAP_INHERIT, fd, 0);
Je passe cette addresse en paramètre à ptrace(), mais celui-ci échoue. Voilà l'appel que j'effectue:
pid étant l'adresse du tracé.Code:
1
2
3 errno = 0; if (ptrace(PT_READ_I, pid, r_addr, 0) == -1 && errno != 0) fail("[parent] PT_READ_I failed");
J'ai peut-être pris une mauvaise piste avec mmap()... quelqu'un pourrait m'aider? Merci d'avance :)