Skip to content

Tecniche di decompilazione e offuscamento

La decompilazione è il processo inverso della compilazione, in pratica si ricostruisce il codice sorgente ad alto livello partendo dal programma eseguibile e quindi dal codice macchina/assembler.
La decompilazione può essere utile per:
1. Recuperare codici sorgenti perduti: si potrebbe aver scritto un programma per il quale si ha ormai solo l’eseguibile, nel caso in cui, per esempio, c’è la necessità di modificarlo, allora tornano utili i decompilatori che permettono di recuperare il codice sorgente. Dato che siamo i proprietari ovviamente non ci saranno problemi di copyright.
2. Si ha il sorgente di linguaggi per i quali non disponiamo più del compilatore.
3. Migrare un’applicazione in linguaggio assembler in una nuova piattaforma hardware
4. Tradurre codice scritto in linguaggi obsoleti non più supportati dagli strumenti di compilazione attuali
5. Determinare l’esistenza di virus e software maligni nei programmi
6. Recuperare il codice scritto da qualcun altro (p.e.: per risalire all’algoritmo utilizzato)
Normalmente tutti i software sono sotto copyright da parte degli autori. Questo significa che copiare la stessa idea su un altro programma è proibito dalla legge.
Oltre però alla legge ci sono degli altri strumenti/tecniche che possono essere utilizzati per difendersi da decompilazioni indesiderate e sono gli offuscatori.
Per questo motivo in questa tesi tratterò non solo il discorso dei decompilatori ma anche quello, strettamente connesso al primo, degli offuscatori di codice.
Bisogna innanzitutto dire che i decompilatori si suddividano principalmente in due categorie quelli per eseguibili compilati specificamente per un tipo di macchina e quelli di classi che devono essere eseguiti su macchine virtuali (Virtual Machine).
Per quanto riguarda i decompilatori di eseguibili si sono riusciti ad avere dei risultati ma che si limitano ad esperimenti accademici a causa delle condizioni che impongono al programma che li fanno risultare all’atto pratico poco utili.
Per questo motivo ho concentrato la mia tesi maggiormente sui programmi per macchine virtuali, sia per quanto riguarda il discorso decompilatori che per quanto riguarda quello degli offuscatori.
Le classi generate dai compilatori per macchine virtuali presentano numerosi vantaggi rispetto a quelli per macchine reali perché le informazioni contenute nel bytecode delle classi riguardo al sorgente sono più dettagliate confronto a quelle contenute nel codice macchina degli eseguibili.
Per quanto riguarda i decompilatori per macchine virtuali quindi i risultati ottenuti sono molto più incoraggianti tanto che in molti casi si riesce ad ottenere un sorgente pressoché identico all’originale senza che vi siano particolari limitazioni riguardo alle caratteristiche del programma stesso.
Esistono molte macchine virtuali, io per comodità mi sono principalmente riferito per i miei test alla “Java virtual machine” e quindi a decompilatori Java. Questo scelta è dovuta sia al fatto che è il linguaggio per macchine virtuali che conosco meglio che al fatto che i risultati che si sono ottenuti riguardo alla java virtual machine sono per molti versi analoghi a quelli che si potrebbero ottenere per altre macchine virtuali come .NET per esempio perché la filosofia alla base è la stessa.
I test sui decompilatori descritti nel capitolo 3 sono serviti quindi a mettere in luce lo stato avanzato a cui si è arrivati con i decompilatori attuali.
Per quanto riguarda il discorso di offuscamento del codice sono state inventate molte tecniche:
• L’offuscamento del layout
• L’offuscamento dei dati
• L’offuscamento del flusso di controllo
Nell’ultima parte della tesi mi sono occupato degli offuscatori che attualmente sono stati implementati e in particolare di Jshrink e dello Zelix Klassmaster.
Dai miei test su programmi da me compilati ho potuto constatare come entrambi riescono ad offuscare efficacemente il programma ma mentre il primo ottiene solo il risultato di rendere difficile la comprensione dello stesso decompilato il secondo addirittura ne rende impossibile la decompilazione proprio perché riesce ad applicare a differenza del primo le tecniche di offuscamento del flusso di controllo.
Un ulteriore sviluppo del mio lavoro di tesi, aspetto che per motivi di tempo non ho affrontato, sarebbe quello di verificare anche la qualità degli offuscamenti attuati.
Infatti spesso, soprattutto nel caso dell’offuscamento del flusso di controllo, per raggiungere la protezione del software se ne vanno a perdere le qualità in efficienza.

CONSULTA INTEGRALMENTE QUESTA TESI

La consultazione è esclusivamente in formato digitale .PDF

Acquista
Mostra/Nascondi contenuto.
Tecniche di Decompilazione e Offuscamento Tesi di laurea di: Nappo Marco Relatore: Giovanni Pighizzini

CONSULTA INTEGRALMENTE QUESTA TESI

La consultazione è esclusivamente in formato digitale .PDF

Acquista
Il miglior software antiplagio

L'unico servizio antiplagio competitivo nel prezzo che garantisce l'aiuto della nostra redazione nel controllo dei risultati.
Analisi sicura e anonima al 100%!
Ottieni un Certificato Antiplagio dopo la valutazione.

Informazioni tesi

  Autore: Marco Nappo
  Tipo: Tesi di Laurea
  Anno: 2004-05
  Università: Università degli Studi di Milano
  Facoltà: Scienze dell'informazione
  Corso: Informatica
  Relatore: Giovanni Pighhizzini
  Lingua: Italiano
  Num. pagine: 144

FAQ

Per consultare la tesi è necessario essere registrati e acquistare la consultazione integrale del file, al costo di 29,89€.
Il pagamento può essere effettuato tramite carta di credito/carta prepagata, PayPal, bonifico bancario.
Confermato il pagamento si potrà consultare i file esclusivamente in formato .PDF accedendo alla propria Home Personale. Si potrà quindi procedere a salvare o stampare il file.
Maggiori informazioni
Ingiustamente snobbata durante le ricerche bibliografiche, una tesi di laurea si rivela decisamente utile:
  • perché affronta un singolo argomento in modo sintetico e specifico come altri testi non fanno;
  • perché è un lavoro originale che si basa su una ricerca bibliografica accurata;
  • perché, a differenza di altri materiali che puoi reperire online, una tesi di laurea è stata verificata da un docente universitario e dalla commissione in sede d'esame. La nostra redazione inoltre controlla prima della pubblicazione la completezza dei materiali e, dal 2009, anche l'originalità della tesi attraverso il software antiplagio Compilatio.net.
  • L'utilizzo della consultazione integrale della tesi da parte dell'Utente che ne acquista il diritto è da considerarsi esclusivamente privato.
  • Nel caso in cui l’utente che consulta la tesi volesse citarne alcune parti, dovrà inserire correttamente la fonte, come si cita un qualsiasi altro testo di riferimento bibliografico.
  • L'Utente è l'unico ed esclusivo responsabile del materiale di cui acquista il diritto alla consultazione. Si impegna a non divulgare a mezzo stampa, editoria in genere, televisione, radio, Internet e/o qualsiasi altro mezzo divulgativo esistente o che venisse inventato, il contenuto della tesi che consulta o stralci della medesima. Verrà perseguito legalmente nel caso di riproduzione totale e/o parziale su qualsiasi mezzo e/o su qualsiasi supporto, nel caso di divulgazione nonché nel caso di ricavo economico derivante dallo sfruttamento del diritto acquisito.
L'obiettivo di Tesionline è quello di rendere accessibile a una platea il più possibile vasta il patrimonio di cultura e conoscenza contenuto nelle tesi.
Per raggiungerlo, è fondamentale superare la barriera rappresentata dalla lingua. Ecco perché cerchiamo persone disponibili ad effettuare la traduzione delle tesi pubblicate nel nostro sito.
Per tradurre questa tesi clicca qui »
Scopri come funziona »

DUBBI? Contattaci

Contatta la redazione a
[email protected]

Ci trovi su Skype (redazione_tesi)
dalle 9:00 alle 13:00

Oppure vieni a trovarci su

Parole chiave

assembler
bytecode
decompilation
decompilazione
java
java virtual machine
obfuscator
offuscamento

Tesi correlate


Non hai trovato quello che cercavi?


Abbiamo più di 45.000 Tesi di Laurea: cerca nel nostro database

Oppure consulta la sezione dedicata ad appunti universitari selezionati e pubblicati dalla nostra redazione

Ottimizza la tua ricerca:

  • individua con precisione le parole chiave specifiche della tua ricerca
  • elimina i termini non significativi (aggettivi, articoli, avverbi...)
  • se non hai risultati amplia la ricerca con termini via via più generici (ad esempio da "anziano oncologico" a "paziente oncologico")
  • utilizza la ricerca avanzata
  • utilizza gli operatori booleani (and, or, "")

Idee per la tesi?

Scopri le migliori tesi scelte da noi sugli argomenti recenti


Come si scrive una tesi di laurea?


A quale cattedra chiedere la tesi? Quale sarà il docente più disponibile? Quale l'argomento più interessante per me? ...e quale quello più interessante per il mondo del lavoro?

Scarica gratuitamente la nostra guida "Come si scrive una tesi di laurea" e iscriviti alla newsletter per ricevere consigli e materiale utile.


La tesi l'ho già scritta,
ora cosa ne faccio?


La tua tesi ti ha aiutato ad ottenere quel sudato titolo di studio, ma può darti molto di più: ti differenzia dai tuoi colleghi universitari, mostra i tuoi interessi ed è un lavoro di ricerca unico, che può essere utile anche ad altri.

Il nostro consiglio è di non sprecare tutto questo lavoro:

È ora di pubblicare la tesi