Il reverse engineering è l'arte di dumping individuali , comandi a livello di computer che compongono un programma compilato e utilizzarlo per ricreare il suo codice sorgente originale . Mentre ogni programma compilato può essere decodificato , il bytecode che rende i programmi Java compilati fino conservano diverse caratteristiche di identificazione che lo rendono il reverse engineering molto più facile di quanto altro codice compilato . Byte Codice
Java non compila direttamente in codice macchina leggibile , ma piuttosto in quello che viene chiamato " byte code . " Il programmatore distribuisce questo codice byte , e quando gli utenti finali lanciare il programma , la Java Virtual Machine compila il bytecode in specifico per la piattaforma codice macchina . Mentre questo dà Java il vantaggio di consentire un codice sorgente singolo impostato per lavorare su più macchine , il byte code conserva diverse caratteristiche descrittive del codice sorgente che rendono più facile per gli hacker di ricostruire il codice sorgente originale .
Reverse Engineering
hacker in grado di leggere il codice byte di una applicazione Java direttamente , utilizzando la libreria " java.io.InputStream " . Con questo, si possono visualizzare i componenti di base e comandi livello di bytecode che costituiscono il file di classe particolare . Hacker possono quindi monitorare diverse variabili attraverso metodi diversi per ricostruire gradualmente il flusso di controllo del programma . Una volta che gli hacker fanno questo, possono replicare il codice sorgente dell'applicazione per scopi dannosi diversi.
Attacca
Dopo un hacker ingegneri invertire un particolare programma , ci sono diversi modi che possono sfruttare questo per ottenere l'accesso a macchine che eseguono quel programma . Questi includono le vulnerabilità da sfruttare per rendere il programma di eseguire codice dannoso con il permesso dell'utente , o l'esecuzione di un "uomo in mezzo " attacco . In quest'ultimo caso , l'hacker dovrebbe aggiungere il proprio codice dannoso codice sorgente dell'applicazione , ricompilarlo , e metterlo su Internet , con il pretesto del programma originale . Gli utenti ignari possono quindi scaricare l'applicazione ed eseguire direttamente il codice del hacker .
Prevenire Reverse Engineering
A causa della natura del bytecode Java , è quasi impossibile da fermare chiunque di visualizzare il codice di byte nucleo . Mentre i metodi come la crittografia in grado di fornire un grado di protezione , tanto più efficace quanto la crittografia è, meno indipendente dalla piattaforma il programma diventa . I programmatori possono , però , gettare ingegneri inversa fuori con alcuni trucchi di codifica . Questi includono le funzioni di scrittura che sono irrilevanti per l'esecuzione effettiva del programma , che può buttare fuori quelli che provano a decodificare il programma .