I problemi con l'oscuramento del codice

L'offuscamento del codice è la prima soluzione applicata alla protezione del codice Java ed è anche la soluzione più diretta.

L'oscuramento del codice di solito coinvolge i seguenti quattro metodi:

  1. Conversione del nome del pacchetto, del nome della classe, del nome della variabile
  2. Cambiano le strutture di controllo, come l'appiattimento del flusso di controllo, l'aggiunta di predicati immutabili, ecc.
  3. Oscuramento o crittografia di stringhe
  4. Aggiungi codice inutile

L'offuscamento del codice può ridurre significativamente la leggibilità del codice decompilato e aumentare la difficoltà dell'analisi statica, ma indipendentemente da come viene eseguito l'offuscamento del codice, la logica di esecuzione del programma non verrà alterata.

Il bytecode JVM è un codice intermedio semantico molto chiaro ed esplicito che è altamente leggibile. Per i file di classe offuscati, anche se non possono essere ripristinati in codice sorgente Java leggibile, possono comunque essere analizzati a livello di bytecode. A causa dell'elevata natura semantica del bytecode Java, questo processo è in realtà relativamente semplice.

Abbiamo sviluppato un motore di esecuzione del bytecode JVM utilizzando i linguaggi Java e Kotlin. Gli utenti possono utilizzare questo progetto per eseguire il debug dinamico dei programmi Java a livello di bytecode in IntelliJ IDEA. Per ulteriori informazioni, fare riferimento all'articolo seguente.

https://protector4j.com/articles/jvm-bytecode-engine-scripted-with-java-and-kotlin/

E usiamo questo motore per cercare di decifrare un codice oscurato ben noto, il processo specifico può essere consultato nell'articolo seguente

http://protector4j.com/articles/deobfuscate-with-vlx-vmengine/

Conclusione

Dall'analisi di cui sopra, si può vedere che, a causa dell'elevata semantica del bytecode JVM, è molto facile da analizzare e leggere. La logica di esecuzione può essere facilmente analizzata tramite il debug dinamico. Scrivere strumenti di debug dinamico non è un compito molto complesso, quindi l'offuscamento non è una soluzione di protezione affidabile.