- Come reverser può essere sempre utile avere un convertitore
assembly -> opcode, al di fuori dei debugger/[dis]assemblatori - Perchè lo ha chiesto un mio amico e non ne ho trovati di decenti.
Detto questo, passiamo al progetto:
come accennato il programma (sotto licenza gpl) converte una riga o un listato assembly nel relativo codice macchina.
Diverse checkbox permettono di personalizzare sia l'input sia l'output.
La particolarità di questo programma sono:
- Supporto ai registri preceduti dal simbolo %
- Supporto ai commenti formato tasm (#) e c/c++ e java (//)
- Supporto per l'inserimento di numeri binari positivi ($bbbbbb) - i numeri negativi possono essere scritti in complemento a 2
- Supporto per l'inserimento di numeri esadecimali con la forma 0xY o con la forma Yh
- Individua un numero esadecimale anche se mancano le prefisso (0x) o del suffisso (h). Deve essere presente almeno una lettera (a..f)
- Spazio tra ogni byte
- Interruzione di linea per ogni linea assembly convertita
- Sequenze escape (\0x)
- Commenti ricopiati dall'input all'output
Il core del programma (disasm.zip), la parte che si preoccupa di convertire l'asm in codice macchina, è stato liberamente scaricato dal sito http://www.ollydbg.de. e modificato.
Lo stesso codice è sotto licenza gpl.
Le modifiche apportate sono:
- Aggiunta una funzione per il supporto dei registri preceduti dal simbolo %
- Aggiunto un parametro (perc) per annullare il supporto precedente
- Aggiunta una parte di codice per la conversione da binario a esadecimale (suppporto binario)
- Corrette alcune cose per il supporto dei numeri decimali interi
Il programma è stato scritto in C/C++, con visual studio 2005, per piattaforma windows.
Il cuore del programma include la libreria windows.h, quindi non è solo colpa mia ^^.