Problemi con le soluzioni di protezione della virtualizzazione

L'offuscamento può aumentare la difficoltà dell'analisi statica, ma non può impedire efficacemente l'analisi dinamica. Lo scopo della virtualizzazione del codice è aumentare la difficoltà dell'analisi dinamica.

La virtualizzazione del codice Java si ottiene costruendo motori di virtualizzazione personalizzati, consentendo l'esecuzione diretta di bytecode che potrebbero essere eseguiti tramite questi motori di virtualizzazione. Poiché si tratta di un motore di virtualizzazione personalizzato, il mondo esterno non può accedere direttamente al suo metodo di esecuzione, al formato delle istruzioni e ad altre informazioni. Inoltre, ciò comporta una significativa espansione del codice, rendendo difficile il reverse engineering del codice contenente le sue informazioni semantiche originali.

L'impatto della virtualizzazione sulle prestazioni.

La protezione della virtualizzazione è una soluzione di protezione del codice estremamente forte, ma il problema più grande della protezione della virtualizzazione èprestazione. I motori di virtualizzazione personalizzati sono difficili da adottare numerose misure di ottimizzazione delle prestazioni come JVM e non possono applicare tecniche di ottimizzazione delle prestazioni come JIT. Puoi provare a utilizzare il filemotore JVM abbiamo menzionato prima di eseguire lo stesso codice di una normale JVM e confrontare le prestazioni, il che può comportare una differenza di prestazioni di oltre 100 volte.

Conclusione

La protezione della virtualizzazione è il metodo di protezione del codice più sicuro, ma a causa del suo impatto significativo sulle prestazioni, non può essere applicata a tutto il codice di un programma. Può proteggere solo il codice critico, mentre altri codici comportano comunque il rischio di esposizione. Prendendo di mira altre parti del codice, è possibile ottenere informazioni funzionali sulla porzione virtualizzata del codice.