View Single Post
Old 16-12-2005, 23:47   #9
Maverick18
Senior Member
 
L'Avatar di Maverick18
 
Iscritto dal: Aug 2005
Messaggi: 2020
Quote:
Originariamente inviato da 71104
si, i disassemblatori traducono solo da linguaggio macchina a linguaggio assembly, ma in teoria è anche possibile tradurre il linguaggio macchina in qualcosa di abbastanza simile al codice originale C; i programmi che lo fanno si chiamano decompilatori, ed il loro mestiere non è tutto sommato così complesso come credi grazie al fatto che per certe cose esistono determinate convenzioni; ad esempio, ottenuto il disassemblato di un programma, è abbastanza semplice dividerlo in funzioni sapendo che le funzioni iniziano spesso col loro tipico codice di prologo per creare uno stack frame, cioè
Codice:
PUSH EBP
MOV EBP,ESP
seguito da una istruzione
Codice:
SUB ESP,qualcosa
che serve ad allocare nello stack lo spazio per le variabili locali; una volta individuato l'inizio di una funzione, è possibile ricostruire i vari tipi di statements if, while, for, do, eccetera sapendo il "pattern" secondo il quale il compilatore che ha generato quel programma assembla quegli statements; a un certo punto poi si arriva ad una qualche istruzione RET che ritorna alla funzione chiamante effettuando il cleanup dello stack (il valore di ritorno delle funzioni si trova quasi sempre in EAX).

un consiglio utile che posso darti se vuoi disassemblare il codice di un programma generato da un certo compilatore X, è quello di analizzare il codice assembly generato dallo stesso compilatore di programmi di cui hai anche i sorgenti originali: facendo il confronto tra istruzioni C e istruzioni assembly puoi capire moltissime cose su come ragiona un compilatore

per finire posso anche avvisarti di non fare come molti principianti che pensano che gli eseguibili contengano codice assembly puro... il formato dei .exe è abbastanza complesso ed è abbastanza dettagliatamente documentato da Microsoft nel documento che troverai non ricordo dove in MSDN
qualsiasi vero cracker quel documento secondo me deve saperlo a memoria come l'alfabeto, ed è anche bene che se lo tenga in qualche directory a portata di mano.

Grazie per l'aiuto.
Appena avrò tempo mi ci dedicherò.
Tra l'altro navigando qua è là ho trovato il sito di un esperto informatico italiano, Flavio Bernadotti, che ha scritto diversi libri su hacking,cracking,programmazione...
I libri sono gratuiti. Non li ho ancora letti ma scommetto che sono fatti benissimo; pensate che il libro su hacking e cracking è composto da più di 1600 pagine!! :P
__________________
<--- Transazioni concluse positivamente con: Cosmos77, king14, Max Med, fa22, ollavaollah, Starway13, giova22, Alex-RM, Serghei, Aldebaran78, djgusmy85, jjdave, pontyl, Lama dell'Ostello --->
Maverick18 è offline   Rispondi citando il messaggio o parte di esso