Newsgroup: it.comp.aiuto
Titolo: vedere il codice sorgente....

quale programma posso installare (e possibilmente dove lo trovo) per poter
decompilare un file exe?
ciao
2m23

 decompilare un file exe?
cerca in rete decompiler o discompiler o 'reverse engineering'.
   Un decompilatore solo non basterà, innanzitutto dovrai imparare a
riconoscere (tramite gli imports e tag particolari all'interno del file) il
linguaggio usato per programmare e il compilatore:
 IDA è il migliore decompilatore sul mercato ma il suo utilizzo è poco
'intuitivo' e quindi non indicato per un principiante, Wdasm è ottimo e
facile da usare ma praticamente solo per files compilati da C o assembler (i
files VBasic e Delphi diventano dei papponi terrificanti (ma non impossibili
da seguire)), per files Vbasic c'è l'ottimo Dodi Discompiler (purtroppo che
io sappia arriva solo al VB4), per files compilati da Delphi c'è DeDe
decompiler (ricostruisce i vari files sorgente e commenta i files
decompilati da Wdasm), un nuovo decompilatore/analizzatore di files è PE
Explorer che ti servirà anche come strumento iniziale per analizzare le
risorse impiegate dall'eseguibile (e quindi determinare quale decompilatore
utilizzare) il suo unico difetto è di analizzare solo files a 32bit in
formato PE (il formato windows), per gli eseguibili a 16 bit come
analizzatore di risorse puoi usare , oltre a questi ti serviranno dei
riconoscitori di protezioni/compressioni (sniffers) oltre ai relativi
decompressori/decrittatori (molti programmatori (quasi tutti) non apprezzano
che si decompili il loro lavoro). Consigliabili anche i vari debuggers
(Smartcheck, SoftICEe l'ultimo arrivato più 'facile' TRW2000. Non devono
mancare i vari Monitor (FileMon, RegMon APISpy e MemSpy) E questo è solo
l'inizio.... :o)
    Ottimi siti da visitare sono 
www.protools.com
 per i tools e Fravia per
l'enciclopedia del 'reverse engineering'. Di Fravia non posso darti un
indirizzo perchè cambia spesso.. ma una ricerca su google con le keywords
appropriate troverà sicuramente uno dei numerosi mirrors.....
ciao Mauro
P.S. Ricorda che il reverse engineering per scopi 'diversi' dallo
studio..... (capisci ammè...) è un reato...... :o)

 studio..... (capisci ammč...) č un reato...... :o)
ma siccome io studio (ma ndo'!!! :-p) non commetto reato!!! ^___^
ciao
2m23

 spero che sia stato chiaro e grazie...
eheheheh nono mi sa che non hai capito bene, l'hai compilato non significa
l'hai con Pilato... :o)
Il compilatore si occupa di 'tradurre' in linguaggio macchina le istruzioni
da te scritte in un linguaggio 'strutturato' come il C++ VB Delphi Java e
chi più ne ha più ne metta.... ergo, il compilatore si occupa di tradurre
quello che è stato scritto in un qualunque linguaggio comprensibile all'uomo
in una serie di istruzioni comprensibili dalla macchina. Un esempio
classico:
l'istruzione apparentemente semplice e chiara in linguaggio strutturato
'cambia la ruota perchè è bucata'
si traduce in linguaggio macchina nella serie di istruzioni necessarie a
sostituire la ruota....
(semplificando):
metti la marcia
tira il freno a mano
prendi la chiave dal cruscotto
vai dietro la macchina
apri con la chiave il baule
solleva il coperchio del baule
prendi la ruota di scorta
prendi il crick
prendi la chiave per smontare le ruote
porta il tutto sul lato dell'auto il cui sta la ruota bucata
metti il crick sotto la macchina
ecc ecc......
  Tutto questo diventa una serie di bytes la cui sequenza ha un significato
per la CPU e compagnia bella, se tu dici al PC 'scarica la posta' e non hai
una serie di interfacce (hardware e software) che si occupino di
interpretare e gestire questa istruzione ...la scatola magica torna ad
essere quello che è.... un inutile e brutto ammasso di alta tecnologia.....
   Per tornare al tuo discorso nessun decompilatore ti renderà 'esattamente'
il listato 'sorgente', Delphi e VB sono IMHO gli unici casi in cui il
listato fornito da decompilatore si avvicina abbastanza all'originale.
Questo perchè in effetti i programmi compilati in Delphi e sopratutto in
quella ciofeca grassa e spaventosamente avida di risorse che è il VB in
effetti sono solo una serie di richiami a routine in assembler contenute
nelle 'librerie' (dll) di sistema, ovviamente come ti dicevo nel mio post
precedente DEVI usare il compilatore adatto al linguaggio utilizzato dal
programmatore, quindi il tuo programma in VB compilato, lo devi decompilare
con Dodi discompiler se vuoi ottenerne un listato in VB, se usi Wdasm
ottieni un listato in assembler, perchè Wdasm è un decompilatore per
assembler.....mi pare esista anche un 'traduttore' di listati in C++ (non lo
conosco perchè mastico pochissimo il C++ preferisco l'assembler e mi sto
convertendo da poco al Delphi), dico traduttore e non decompilatore perchè
se ricordo bene non decompila gli eseguibili ma traduce i listati assembler
(quindi già decompilati) in C++ (ovviamente occorre che siano stati scritti
in C, perchè la struttura del programma altrimenti cambia, dubito possa
tradurre in C++ un programma scritto direttamente in assembler o peggio in
Vb o Delphi)
   Il reverse engineering si occupa proprio di interpretare questi listati
forniti dai decompilatori per 'studiare' le tecniche utilizzate dai
programmatori, facendo tesoro dei loro errori (ce ne sono sempre) e qualche
volta per correggerli e personalizzare il programma (pensa che ci sono delle
persone orribili che ritengono che le protezioni anti pirateria siano degli
'errori' di programmazione....mah....). Mi scuso per la lunghezza del post
.....
ciao Mauro