2016-11-27 1 views
0

J'ai un binaire dépouillé à analyser. Un code intéressant est situé à l'adresse 0x1234, comment puis-je trouver tous les sauts à cette adresse? (bien sûr, je ne m'attends pas à trouver des sauts calculés à cette adresse, seulement ceux qui sont codés en dur). Je ne peux pas utiliser une recherche simple car les instructions de sauts sont typiquement codées avec un décalage relatif et il y a beaucoup de sortes de sauts (je, jne, jmp ...). Je travaille avec GDB-PEDA sur x86_64/linux pour l'instant si cela doit être une approche spécifique à la plate-forme.comment trouver des sauts à une adresse particulière

+1

Je pense que vous devez exécuter le programme pour recueillir ces informations. Peut-être que l'enregistrement de processus de gdb peut être utile. Enregistrement activé (enregistrement btrace). Mettez un point d'arrêt à 0x1234. Puis, lorsque le point d'arrêt est atteint, utilisez l'historique des instructions d'enregistrement pour voir comment vous (et d'où) vous avez sauté. – dbrank0

+0

BTW: J'ai mal lu la question. Ceci n'est requis que si vous voulez trouver des sauts calculés. – dbrank0

Répondre

2

comment puis-je trouver tous les sauts à cette adresse?

Essayez objdump -d a.out | egrep 'j.* 0x1234'