Bonjour je connais PTRACE pour detecter les syscalls, mais je me demandais comment peut on detecter les appels aux fonctions internes du programme ?
EDIT: en regardant le man intel je me demande si c'est pas en detectant l'opcode E8 dans EIP.
Merci
Bonjour je connais PTRACE pour detecter les syscalls, mais je me demandais comment peut on detecter les appels aux fonctions internes du programme ?
EDIT: en regardant le man intel je me demande si c'est pas en detectant l'opcode E8 dans EIP.
Merci
ptrace te permet effectivement de détecter les appels systèmes. C'est un programme qui lance ton programme.
Ton idée à base de EIP, il me semble, nécessite que tu instrumentes (modifie) ton code...
Tu peux aussi lancer gdb et faire "(gdb) rbreak file.c:." ...
Il faudrait que tu expliques un peu plus ton cas d'usage.
Le cas d'usage est de coder un programme qui a pour but de detecter tous les appels aux fonctions interne du programme.
J'ai essaye en detectant la valeur E8 dans EIP mais je detecte trop de fonction par rapport a objdump en analysant les call.
Merci de votre aide.
C'est le programme qui se surveille lui même ? C'est ça ? Vous voulez vous même coder une fonction qui fasse quelque chose de particulier qui sera appelée à chaque appel de fonction "locale" au programme.
Du coup il faut surveiller tous les appels de fonctions du programme sauf les appels systèmes et l'appel au handler de la surveillance.
Je ne suis toujours pas sûr d'avoir compris si vous voulez faire un programme qui surveille n'importe quel autre process, ou un programme qui surveille sa propre exécution...
C'est un programme qui surveille n'importe quel autre programme.
J'arrive a detecter les syscall en forkant le programme cible puis regarde si il y a 0xcd 0x80 dans EIP mais pour les appels aux fonctions internes c'est plus compliques...
Merci.
Est-ce que tu as la main sur le code source du programme à surveiller ? Cela permettrait d'avoir la possibilité de contrôler la génération de l'exécutable (on pourrait ensuite regarder comment fonctionne les profiler et s'en inspirer par exemple)
Partager