È possibile recuperare il file sorgente da un exe?


5

Ho visto il mio amico recuperare il file del codice sorgente da un file java '* .class' e per questo ha usato un qualche tipo di software.

È possibile fare lo stesso con un '* .exe' ? Se sì, come posso farlo? Inoltre è etico fare una cosa del genere, considerando che l'eseguibile è solo un piccolo file che non è corretto per la copia?


2
Per quanto riguarda l'ultima domanda, in passato ci sono state molte controversie in merito a questo problema, ma soprattutto nelle circostanze in cui un eseguibile è stato progettato al contrario con il solo scopo di produrre un prodotto in competizione. Se il tuo interesse è puramente accademico, di solito non c'è ricorso per lo sviluppatore.
Blomkvist,

Dove ti è venuta l'idea che gli eseguibili non siano soggetti a copyright? O intendevi semplicemente che ti preoccupi di un eseguibile specifico che è stato messo di dominio pubblico?
Dave Sherohman,

Sì, intendevo dire che quello che ho con me non è
corretto

Risposte:


8

Dipende dal linguaggio di base utilizzato dagli sviluppatori.

Per i linguaggi Java e .NET è possibile il più delle volte "decompilare" il codice sorgente. non sarà il vero codice originale (i nomi delle variabili saranno diversi, le ottimizzazioni da parte del compilatore avranno un codice riorganizzato, ecc.) ma sarà vicino.

Altri linguaggi come C / C ++ non sono così facili.

Per quanto riguarda l'etica, se sei solo un programmatore di hobby interessato a giocare, va bene. Tuttavia, se sei un professionista e stai cercando di ottenere il codice sorgente per copiare un'app, questo è molto immorale e un grande no-no!


4

Se l'applicazione è scritta in uno dei linguaggi .NET (VB / C #), è possibile utilizzare Reflector reflector.red-gate.com di Red Gate per disassemblare l'applicazione nei file sorgente corrispondenti. Tuttavia, non tutte le applicazioni sono scritte in lingue gestite come questa e decompilare un'applicazione C ++ o una scritta in Delphi o in un'altra lingua non gestita non è così facile, e tutto ciò che puoi davvero ottenere sono dump esadecimali, che sono molto difficili da quindi ricostruire in un'applicazione reale.


Reflector non è più gratuito, ILSpy farà la stessa cosa ed è gratuito (sia in versione gratuita che a prezzo).
Scott Chamberlain,

2

Non puoi farlo se il tuo .execodice è in C / C ++, ma se è in C # puoi farlo. Non conosco un buon strumento per questo, ma un modo è usare ANTS Profiler. Ti mostra tutti gli oggetti, i metodi e gli argomenti da un binario C #.


1

Sì, è possibile decompilare .exes usando strumenti come The dcc Decompiler . Ciò produrrà buoni risultati se il programma originale è stato scritto in C. Se è stato scritto in un'altra lingua, potrebbe essere necessario provare un altro strumento adatto a quella lingua.

Durante la decompilazione del software, maggiore è il linguaggio Assembly che si conosce, meglio potrebbe essere necessario esaminare il codice di alto livello dall'assieme di basso livello se il decompilatore si confonde o se parte del codice è stato effettivamente scritto in linguaggio Assembly.

La decompilazione è un modo eccellente di studiare come funzionano i programmi al livello più basso. Scoprirai anche che in molti casi il programma decompilato verrà nuovamente compilato nell'esempio, ma i simboli utilizzati per descrivere le variabili sono totalmente privi di significato. Potrebbe essere necessario svolgere un lavoro investigativo per capire effettivamente cosa significa e cosa fa il codice.

Non vedo nulla di eticamente sbagliato nel decompilare il codice per il tuo divertimento o istruzione, ma se hai intenzioni dannose come decompilare il software commerciale per modificare il messaggio sul copyright o per cercare una vulnerabilità per lo sfruttamento dannoso, questo potrebbe essere considerato non etico.

Potresti scoprire che lo sviluppatore ha fatto di tutto per prevenire la decompilazione creando un caricatore che decomprime il software in memoria o ha un codice esplicito per confondere i decompilatori. Tutto questo fa parte del divertimento.


1

Il lato tecnico: Sì, è possibile decompilare il codice ... in un certo senso. Quello che otterrai non sarà il codice sorgente originale e potrebbe non assomigliare molto al codice sorgente originale a meno che l'eseguibile non sia stato compilato con i simboli di debug completi abilitati. I build di produzione finali hanno spesso i simboli di debug disabilitati, al fine di mantenere l'eseguibile il più piccolo possibile ed evitare di fornire qualsiasi informazione che non sia il minimo indispensabile a chiunque esamini l'eseguibile.

Il lato legale: ai sensi del Digital Millennium Copyright Act, il tentativo di decompilare o decodificare qualsiasi software che il titolare del copyright ha tentato di proteggere da questo. Come interpretato finora dai tribunali, non importa quanto sia ridicolmente debole il tentativo, è ancora illegale. Anche se non ci sono misure tecnologiche in atto per proteggere il codice, è probabile che ci sia un accordo di licenza che afferma che non è consentito decompilare o decodificare l'eseguibile.

Come regola generale, tendo a considerare queste cose del tutto etiche, purché non le facciate con l'intenzione di nuocere a qualcun altro, ma la legge tende a non essere d'accordo.


0

Ottenere il codice sorgente dai file .class java è facile ma è difficile ottenere il codice dai file .exe. Utilizzare questo http://www.hiew.ru/ per disassemblare i file .exe ma questo codice generato non sarà lo stesso dell'originale come manca molte righe che vengono ignorate dal compilatore, il che rende difficile la lettura.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.