BinarySmash - Free Linux x86 disassembler

Stato
Discussione chiusa ad ulteriori risposte.

imported_BlackLight

Utente Silver
16 Agosto 2007
211
8
1
98
http://binarysmash.googlecode.com
Qui ho messo l'SVN del mio ambizioso (e masochista) progetto del disassemblatore per Linux x86. Per ora ci stiamo lavorando su io e konrad, presto si dovrebbero aggregare anche Chuzz ed evilsocket. Il progetto è a buon punto, lo scheletro di gestione del codice via header ELF l'ho già scritto e riconosce già tutte le MOV, PUSH, POP, LEA, INT, JMP vari e ora sto lavorando sui CMP. Ora c'è solo da implementare il riconoscimento degli altri principali opcode Assembly per processori Intel (esempio, gli opcode logico-aritmetici, una rogna da gestire a livello di opcode in quanto le possibilità di accoppiata byte-byte, word-word, long-long, reg-reg, reg-mem, reg-scal ecc. sono tantissime). Il metodo più veloce, IMHO, è assemblare un file ASM con le istruzioni che ci interessa tradurre, andare di objdump per vedere l'associazione statement ASM -> opcode e vedere come impostare il riconoscimento nel sorgente. In alternativa c'è il manuale rilasciato da Intel per gli sviluppatori sulle proprie CPU, che se volete vi posso linkare, contenente l'elenco completo degli opcode, ma lo reputo molto dispersivo e da usare solo in casi di estrema necessità.

Se volete partecipare ditemi pure, e passatemi il vostro account GMail che vi addo come developer all'SVN.
 
Ma quindi volevte fare una selezione degli opcode?e inserire solo quelli che vi interessano?perchè cosi mi pare di aver capito..e in tal caso quali andreste a estromettere?
 
@Mathetios: Ovviamente l'obiettivo è quello di includere TUTTI gli opcode di una CPU Intel. Ma quest'impresa è semplicemente titanica e non ci si può riuscire finché si è in 2 o 3 a collaborare, dato che ci sono anche, specie nelle CPU moderne, molti opcode per la gestione built-in delle stringhe, ad esempio, ed altri più esotici. Intanto cominciamo avendo come punto di riferimento gli opcode di un 386, poi eventualmente dopo si aggiungono le estensioni per la manipolazione delle stringhe o delle operazioni logico-aritmetiche avanzate tipiche delle CPU superiori, ma usate mooooolto molto relativamente.
 
Black mi complimento per il tuo materiale (questo ed altri che ho visto) sul reversing su linux. Mi dispiace solo che per motivi di tempo non posso coltivare linux.
cmq very good
Preddy
 
Eh eh se vuoi dare una mano sei benvenuto ;)
Tanto gli opcode Intel non cambiano da un sistema Windows a uno Unix, l'unica cosa che cambia (gestione degli header ELF) l'ho già implementata...
 
Quindi, e scusami se sono tardo a comprendere, partiretecon l'includere le funzioni base e poi andrete avanti con quelli più avanzati quando si formerà un gruppo più numeroso?
 
Ormai siamo a buon punto con gli opcode di base, mancano praticamente solo quelli logico-matematici (i più rognosi, considerando tutti i possibili casi) e qualche ritocco a quelli già presenti. Poi pian piano si vedrà, nemmeno io conosco tutti gli opcode introdotti nelle ultime CPU, e nemmeno, per dire, quelli per operare sulle stringhe o sui numeri a virgola mobile...
 
Stato
Discussione chiusa ad ulteriori risposte.