Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    101

    Decompilare file eseguibile

    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?

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    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.

  3. #3
    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

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    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-."

  5. #5
    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!
    Certamente non codice C.
    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

  6. #6
    Originariamente inviato da EDX
    Certamente non codice C.
    Altrimenti spiegami come sarebbe possibile risalire da un mucchio di istruzioni assembly al sorgente C.
    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.
    E' possibile in parte per altri linguaggi, tipo il VB6 se non ricordo male.
    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.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    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.
    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
    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.
    Non ricordo bene, era un qualcosa legato al Basic e a Microsoft.
    An infinite number of monkeys typing into GNU emacs would never make a good program.Linus Torvalds

  8. #8
    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.
    Certo, ma se si tratta "giusto" di recuperare un qualche algoritmo magico uno strumento del genere risulta molto utile.
    Non ricordo bene, era un qualcosa legato al Basic e a Microsoft.
    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).
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #9

    Re: Decompilare file eseguibile

    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.

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.