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 creando motori di virtualizzazione personalizzati, consentendo l'esecuzione diretta di bytecode. Trattandosi 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 informazioni semantiche originali.
L'impatto della virtualizzazione sulle prestazioni.
La protezione della virtualizzazione è una soluzione di protezione del codice estremamente potente, ma il problema più grande con la protezione della virtualizzazione è prestazioneI motori di virtualizzazione personalizzati sono difficili da adottare per numerose misure di ottimizzazione delle prestazioni come JVM e non possono applicare tecniche di ottimizzazione delle prestazioni come JIT. Puoi provare a utilizzare Motore JVM abbiamo accennato in precedenza all'esecuzione dello stesso codice di una JVM normale e al confronto delle prestazioni, il che potrebbe comportare una differenza di prestazioni di oltre 100 volte.
Conclusione
La protezione tramite 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 il resto del codice presenta comunque il rischio di esposizione. Prendendo di mira altre parti del codice, è possibile ottenere informazioni funzionali sulla porzione virtualizzata del codice.