Se creo un file in C e lo compilo, è possibile risalire al codice sorgente dall'eseguibile?
Se si, il codice è proprio uguale a come lo si è scritto inizialmente?
Se creo un file in C e lo compilo, è possibile risalire al codice sorgente dall'eseguibile?
Se si, il codice è proprio uguale a come lo si è scritto inizialmente?
No
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.
No, è impossibile risalire da un programma scritto in C compilato al suo sorgente, una volta tramutato in istruzioni eseguibili al massimo puoi capire il suo funzionamento guardando il disassemblato in Assembly.
An infinite number of monkeys typing into GNU emacs would never make a good program.Linus Torvalds
1) Si, è possibile. Ci sono tante tante difficoltà (e si può ottenere solo un codice sorgente equivalente all'originale, ma non ci sono garanzie che sia lo stesso), ma è possibile.
2) E' quasi sempre illegale decompilare un programma, ed è per questo che
3) su questo forum i decompilatori sono un argomento proibito.
Ciao!
"Let him who has understanding reckon the number of the beast, for it is a human number.
Its number is rw-rw-rw-."
Certamente non codice C.Originariamente inviato da Ippo343
1) Si, è possibile. Ci sono tante tante difficoltà (e si può ottenere solo un codice sorgente equivalente all'originale, ma non ci sono garanzie che sia lo stesso), ma è possibile.
2) E' quasi sempre illegale decompilare un programma, ed è per questo che
3) su questo forum i decompilatori sono un argomento proibito.
Ciao!
Altrimenti spiegami come sarebbe possibile risalire da un mucchio di istruzioni assembly al sorgente C.
E' possibile in parte per altri linguaggi, tipo il VB6 se non ricordo male.
An infinite number of monkeys typing into GNU emacs would never make a good program.Linus Torvalds
Dire che la decompilazione è impossibile è una stupidaggine; prova recstudio (che non è un granché, i decompilatori professionali suppongo siano molto meglio) su del tuo codice, non otterrai la stessa cosa, ma un sacco di cose (cicli, funzioni & co) vengono recuperate (ovviamente senza i nomi originali). Ripeto, non ottieni vero e proprio codice C (diverse cose non le riconosce e le scrive come operazioni sui registri), ma riuscire a ricavare le espressioni, i cicli, le funzioni, i salti, ... è comunque notevole.Originariamente inviato da EDX
Certamente non codice C.
Altrimenti spiegami come sarebbe possibile risalire da un mucchio di istruzioni assembly al sorgente C.
Forse stai pensando ai linguaggi .NET o a Java, linguaggi pseudocompilato e con funzionalità di reflection, ove il linguaggio intermedio non è complesso da decodificare ed è necessario che la struttura del programma rimanga più o meno intatta perché la reflection possa funzionare.E' possibile in parte per altri linguaggi, tipo il VB6 se non ricordo male.
Amaro C++, il gusto pieno dell'undefined behavior.
Mmh, non lo conoscevo, gli darò uno sguardo, ma comunque, arrivare ad un sorgente funzionale da un programma compilato è comunque un impresa.Originariamente inviato da MItaly
Dire che la decompilazione è impossibile è una stupidaggine; prova recstudio (che non è un granché, i decompilatori professionali suppongo siano molto meglio) su del tuo codice, non otterrai la stessa cosa, ma un sacco di cose (cicli, funzioni & co) vengono recuperate (ovviamente senza i nomi originali). Ripeto, non ottieni vero e proprio codice C (diverse cose non le riconosce e le scrive come operazioni sui registri), ma riuscire a ricavare le espressioni, i cicli, le funzioni, i salti, ... è comunque notevole.![]()
Non ricordo bene, era un qualcosa legato al Basic e a Microsoft.Originariamente inviato da MItaly
Forse stai pensando ai linguaggi .NET o a Java, linguaggi pseudocompilato e con funzionalità di reflection, ove il linguaggio intermedio non è complesso da decodificare ed è necessario che la struttura del programma rimanga più o meno intatta perché la reflection possa funzionare.
An infinite number of monkeys typing into GNU emacs would never make a good program.Linus Torvalds
Certo, ma se si tratta "giusto" di recuperare un qualche algoritmo magico uno strumento del genere risulta molto utile.Originariamente inviato da EDX
Mmh, non lo conoscevo, gli darò uno sguardo, ma comunque, arrivare ad un sorgente funzionale da un programma compilato è comunque un impresa.![]()
Probabilmente VB.NET, comunque quanto detto vale per tutti i linguaggi .NET (e più in generale per i linguaggi pseudocompilati e dotati di funzionalità di reflection).Non ricordo bene, era un qualcosa legato al Basic e a Microsoft.
Amaro C++, il gusto pieno dell'undefined behavior.
Originariamente inviato da tisei3
Se creo un file in C e lo compilo, è possibile risalire al codice sorgente dall'eseguibile?
Se si, il codice è proprio uguale a come lo si è scritto inizialmente?
Si è certamente possibile, ma non aspettarti miracoli. Inoltre ci sono svariati libri sull'argomento e stranamente proprio in questo settore è uscita un ottima guida in italiano più o meno 20 anni fa. Appena la ritrovo ti do qualche informazione sull'autore.