Come funziona Protector4J
Protector4J protegge il tuo codice sorgente Java convertendo i file jar in file jarx crittografati privati, adottiamo molteplici approcci per garantire la sicurezza della tua applicazione sia a livello JVM che binario, fornendo una protezione dell'applicazione ad alta resistenza.
I problemi con l'oscuramento del codice
A causa dell'elevata semantica del bytecode JVM, è estremamente facile da analizzare e leggere. È facile analizzarne la logica di funzionamento utilizzando il debug dinamico. Scrivere uno strumento di debug dinamico non è un compito molto complicato. Pertanto, l’offuscamento non è una soluzione di protezione affidabile.
I problemi con la crittografia delle classi
A causa dell'esistenza del meccanismo di collegamento JVM, tutto il cosiddetto codice crittografato che non è stato separato dal normale funzionamento della JVM può essere facilmente letto utilizzando gli strumenti di collegamento. Pertanto, questa è la soluzione di protezione più inefficace.
I problemi con la protezione delle VM
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.
I problemi con la compilazione AOT
La compilazione AOT è difficile da configurare e compilare e ha un'alta probabilità di fallire. Anche se la compilazione ha esito positivo, la logica del codice cambia solo dalla rappresentazione in codice byte alla rappresentazione in codice macchina. La sua logica operativa intrinseca esiste ancora senza alcuna protezione speciale. Se si riesce a comprendere il proprio meccanismo di compilazione ed esecuzione, è ancora possibile decodificare il codice leggibile.
Deobfuscazione con vlx-vmengine
Deobfuscare il codice Java con il motore di esecuzione del bytecode JVM vlx-vmengine
Motore di esecuzione del bytecode JVM scritto in Java/Kotlin
Il debug dinamico Java tradizionale può essere eseguito solo in base al codice sorgente e senza codice sorgente o file di classe Java offuscati, il debug dinamico è impossibile. L'esecuzione dei programmi Java si basa sulla JVM e la JVM utilizza il bytecode come base per l'esecuzione. Usiamo Kotlin per costruire un motore di esecuzione del bytecode JVM, che può essere utilizzato con IDE moderni, come IDEA, per eseguire il debug di programmi Java a livello di bytecode per osservare il comportamento di esecuzione del programma.
Reverse Engineering di GraalVM NativeImage
Per i programmi Java che sono entrati nell'era della compilazione binaria, il loro codice può essere facilmente decompilato proprio come nell'era del bytecode? Quali sono le caratteristiche dei file binari compilati da NativeImage? La forza della compilazione binaria è sufficiente per proteggere il codice importante? Per esplorare i problemi di cui sopra, ho recentemente scritto uno strumento di analisi NativeImage che ha raggiunto un certo livello di derivazione inversa.
Violazione di un'applicazione Java crittografata con jhsdb (HotSpot Debugger)
Una soluzione per la protezione del codice Java è crittografare i file di classe. Tali soluzioni caricano file di classe o jar crittografati tramite un classloader personalizzato. A causa dell'esistenza del meccanismo di collegamento di JVM, questo metodo non è efficace e può essere facilmente violato con gli strumenti inclusi nel JDK.
Estrazione delle informazioni sulla classe Java dai binari compilati AOT
AOT è considerata anche una soluzione per la protezione del codice Java, ma sfortunatamente molti programmi Java ora non possono essere separati dal framework. A causa della complessità del framework, anche i programmi compilati da AOT devono includere informazioni sulla classe nel file binario generato finale, e i file di classe sono effettivamente organizzati in modo ordinato nell'area delle risorse del file binario.
Cosa è il file JARX
Il file JARX è il nostro formato di file di archivio proprietario, che utilizza lo stesso algoritmo di compressione Deflate dell'algoritmo di crittografia Zip e AES per crittografare i dati.
La migliore soluzione di protezione del codice Java oltre all'oscuramento
La crittografia del codice protegge la tua proprietà intellettuale e migliora notevolmente la sicurezza delle tue applicazioni. Rende il furto di IP, la manomissione del codice e la scoperta di vulnerabilità della sicurezza così complicate e costose che uno spionaggio casuale armato di un decompilatore Java gratuito non basterà.
Alternativa Excelsior JET
Protector4J è più di un semplice sostituto di Excelsior JET