Newsgroup: it.comp.lang.c
Titolo: FAQ 10 - versione definitiva - "decompilare" un programma

4a - E' possibile ottenere il sorgente dal codice macchina ?
Tutte le istruzioni macchina devono passare dalla CPU per essere eseguite, e
questo comporta che debbano essere caricate in RAM. Qui esse sono
accessibili e quindi possono essere lette e tradotte in linguaggio assembler
con relativa facilità.
E' quindi possibile ottenere il listato assembler del programma; questa fase
si chiama deassemblazione e viene fatta con un disassembler. Dal momento che
l'assembler si pone allo stesso livello del linguaggio macchina il codice
prodotto è fedele.
Altro discorso è trasformare operazioni assembly in istruzioni di un
linguaggio ad alto livello come il C. Qui entrerebbe in gioco un fantomatico
"decompilatore" che, con la tecnica del "reverse engineering" cercherebbe di
interpretare gruppi di operazioni assembly e ricavarne equivalenti costrutti
in un linguaggio ad alto livello.
Strumenti del genere sono stati creati, ma, a causa delle ottimizzazioni del
compilatore è praticamente impossibile ottenere un sorgente anche solo
simile all'originale. Inoltre, cosa non da poco, si perdono tutti i nomi
delle variabili e delle funzioni, cosicchè il sorgente decompilato avrà per
variabili nomi del tipo v1,v2. e f1,f2. per le funzioni. Inoltre, il codice
sarà privo di commenti, incrementando la difficoltà di lettura. Non è detto,
infine, che compilandolo di nuovo, si ottenga lo stesso eseguibile!
In sintesi, dal punto di vista pratico, è per ora quasi impossibile lavorare
con il risultato di una decompilazione. Se volete fare gli hackers, imparate
l'assembler ;-) !
--
Marco Coppo
University Of Sheffield

> Se volete fare gli hackers, imparate l'assembler ;-) !
Mah .. a parte l'imparare l'assembler che in linea di massima e' una cosa
sempre positiva..credo pero' che il consiglio di studiare qualcosa di
specifico e mirato al fine di diventare un hacker sia forse la cosa a
riguardo piu' errata e fuorviante in assoluto. ;-)
 Vuoi modificare la tua frase errata in quella corretta? E' semplice.. basta
levare una sola parola.
 ecco qua : " Se volete fare gli hackers, imparate. "  .. ora va bene. ;-)

  ecco qua : " Se volete fare gli hackers, imparate. "  .. ora va bene. ;-)
Ok, grazie del consiglio. Essenzialmente comunque era una battuta per dire
che se si vuole "modificare" un programma esistente senza averne il sorgente
è più comodo lavorare con l'assembler.
ciao ciao


riguardo piu' errata e fuorviante in assoluto. ;-)
Perche' ? il termine "hacker" non ha nulla di negativo.
Per "hacker" non si intende ne' piu' ne' meno che intelligente
smanettatore, senza che cio' abbia implicazioni dannose.
Sono i mass media che hanno dato al termine delle connotazioni
negative. Leggi cosa dice Richard Stallman in proposito.
--
Andrea Laforgia (
andrea_...@bigfoot.com
)
---------------------------------------------

 Perche' ? il termine "hacker" non ha nulla di negativo.
La frase non era intesa nel dire che essere hacker sia una cosa
negativa,ma nel fatto che per "diventare hacker" e' errato specializzarsi
su pochi aspetti informatici, ma sarebbe meglio avere una buona e non
necessariamente ottima conoscenza di tutto.
Ivan Molella

Ormai ti leggo anche in bagno! :-)
-=Azathoth=-

-=Azathoth=-
 ha ha .. ma un po' d'intimita' .. e che caspita. :))

necessariamente ottima conoscenza di tutto.
Non voglio fare il pignolo, ma la frase che diventare hacker e' "la
cosa a riguardo piu' errata e fuorviante in assoluto" io la interpreto
come l'aver considerato l'essere hacker una cosa negativa. La tua e'
un'interpretazione diversa, ma a mio avviso *forzatamente* in
positivo.


"al fine di diventare un hacker......"
Ivan Molella