Newsgroup: it.comp.lang.c
Titolo: impossibile

Una domanda da principiante
Considerando che dall’eseguibile possiamo leggere l’assembler.
È possibile ritornare al linguaggio C dall’eseguibile?
Ciao duido
-- 
Posted from  [62.98.95.194] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

È possibile ritornare al linguaggio C dall’eseguibile?
No.
-- 
Andrea Laforgia - walkietalkie(at)
libero.it

No.
.. perche' non e' una traduzione 1 a 1. Al massimo puoi disassemblare
e leggerti l'assembler oppure disassemblare e lanciare il tuo programa
in ASM direttamente dal programma C (che non mi pare sia standard e la
sintassi cambia a seconda del compilatore, quindi devi leggerti la
documentazione).
Paolo :)

...proprio in nessun caso? sento tanto parlare di intelligenza artificiale,
non è possibile far imparare il linguaggio alla macchiana come un chatter
impara
a parlare con noi???
ciao duido
-- 
Posted from  [62.98.91.215] 


 No.
Parlando in senso stretto - cioe`, tornare al C con cui e` stato
scritto l'eseguibile, e` vero.  Esistono comunque dei programmi che
cercano di ricomporre il linguaggio originale - si chiamano
"decompilers".  Ma non credo che siano molto buoni o utili, e non e`
una cosa con cui sprecare il tempo.  Se vuoi i sorgenti, e` meglio
usare il software libero, dove li hai sempre:-)
-- 
David N. Welton
   Consulting: 
http://www.dedasys.com/
Free Software: 
http://people.debian.org/~davidw/
   Apache Tcl: 
http://tcl.apache.org/
     Personal: 
http://www.efn.org/~davidw/

 usare il software libero, dove li hai sempre:-)
Principalmente succede questo:
Tu scrivi un programma in cui le variabili, funzioni (classi) prendono un
nome e con questo li dai un valore semantico (oltre ad essere corretto
sintatico).
Il compilatore non sa cosa significano queste parole (umane) e alla fine
l'assembler non contiene niente di questa informazione (tranne le librerire
dinamiche/statiche che contengono almeno i nomi delle funzioni). Il
programma finale e privo di semantica (e non ha proprio bisogno) e quindi ci
vuole un umano che aggiunge di nuovo (nel reverse engineering) questa
semantica, analizzando passo per passo cosa fa il programma.
Alcuni passi per capire un programma sono facili (chiamate alle funzioni
standard).
Se si compila un programma con informazioni per il debugger e piu' facile
risalire al codice originale.
J.

 impara a parlare con noi???
Certo, io ormai i programmi glieli faccio scrivere da solo.
-- 
Posted from  [80.105.34.80] 


Vi ringrazio per il chiarimento...
anche se qualcuno ha sottovalutato la mia curiosità,
adesso ho capito qualcosa in più.
ciao duido
-- 
Posted from  [62.98.93.173] 


 E possibile ritornare al linguaggio C dall'eseguibile?
E` impossibile, con alcune riserve:
* Alcuni programmi permettono di ottere il source code.
* La qualita` del codice sara` pessima e non ci saranno nomi di
  variabili/funzioni.
* Non esiste alcuna garanzia che il codice cosi` ottenuto sia uguale a
  quello di partenza.
* Non esiste alcuna garanzia che il codice cosi` ottenuto ricompilato
  dia un eseguibili uguale a quello di partenza.
* Non esiste alcuna garanzia che il codice cosi` ottenuto sia
  sensato.
* Non funziona praticamente mai con le ottimizzazioni inserite dai
  moderni compilatori.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
"La mia teoria scientifica preferita e` quella secondo la quale gli 
 anelli di Saturno sarebbe interamente composti dai bagagli andati 
 persi nei viaggi aerei." -- Mark Russel