2010-07-08 3 views
6

Beaucoup d'entre vous se rappellent peut-être l'ancien programme DOS - debug. Bien que désuet à bien des égards, une des bonnes choses à ce sujet était que l'on pouvait facilement trouver la séquence d'octets pour une instruction donnée sans avoir à passer par les étapes d'écriture, compilation, désassemblage, examen du contenu du fichier. .. Entrez l'instruction, puis videz l'adresse d'instruction. 'debug' ne fait malheureusement pas d'instructions en 32 bits.Programme de débogage comme DOS pour l'assemblage x86 32 bits

Est-ce que quelqu'un sait d'un outil qui fait quelque chose de similaire pour les instructions x86 32 bits? Je ne veux pas passer par tout le processus de compilation; J'ai juste besoin d'être capable d'entrer quelques instructions et de faire sortir la longueur de l'instruction et sa séquence d'octets.

+0

Question intéressante! Pourquoi ne pas étiqueter le "débogage"? – pmod

+0

Je n'avais pas pensé à ajouter la balise 'debugging' jusqu'à ce que vous l'ayez mentionné. Je vous remercie. – Sparky

Répondre

4

DOS debug était un assembleur interactif ainsi qu'un débogueur, En entrant le code d'assemblage, cette ligne a été immédiatement convertie en code machine, ce qui a été éliminé.

Alors tout ce dont vous avez besoin est d'automatiser votre assembleur favori avec un script ou un fichier batch.

est ici une fonction bash je suis venu avec une minute ou deux à l'aide du nasm populaire assembleur:

opcode() { 
    echo $* > tmp.S && nasm tmp.S -o tmp.o && od -x tmp.o 
    rm -f tmp.o tmp.S 
} 

prend moins d'une seconde. Invocation ressemble à ceci:

$ opcode mov eax, [ebx] 
0000000 6667 038b 
0000004 
$ opcode fadd st0,st1 
0000000 c1d8 
0000002 

Pas génial, mais vous pouvez modifier la ligne de commande pour une meilleure sortie od. Cette idée devrait fonctionner avec n'importe quel assembleur de ligne de commande tant que vous lui dites d'utiliser un format de sortie binaire simple.

+0

Merci! Tu gères! – Sparky

1

Il y a quelques débogueurs de ligne de commande 32 bits simples à trouver. En fonction de votre description, OllyDbg pourrait bien correspondre à vos besoins. Au moins certaines versions de Microsoft Debugging Tools for Windows incluent un nom PEH, qui signifie Commandline Debugger (bien que je ne l'ai pas vérifié que la version liée comprend ce ...)

+0

Intéressant. Je ne sais pas encore si cela convient à mes objectifs, mais je joue toujours avec. Merci pour la suggestion. – Sparky

Questions connexes