1. Come funziona Protector4J

    Protector4J protegge il tuo codice sorgente Java convertendo i file jar in file jarx privati e crittografati. Adottiamo diversi approcci per garantire la sicurezza della tua applicazione sia a livello JVM che binario, offrendo una protezione applicativa altamente efficace.

  2. I problemi con l'offuscamento del codice

    Grazie all'elevata semantica del bytecode della JVM, è estremamente facile analizzarlo e leggerlo. È facile analizzarne la logica di esecuzione utilizzando il debug dinamico. Scrivere uno strumento di debug dinamico non è un compito molto complicato. Pertanto, l'offuscamento non è una soluzione di protezione affidabile.

  3. I problemi con la crittografia di classe

    Grazie all'esistenza del meccanismo di collegamento JVM, tutto il cosiddetto codice crittografato che non è stato scollegato dal normale funzionamento della JVM può essere facilmente letto utilizzando gli strumenti di collegamento. Pertanto, questa è la soluzione di protezione meno efficace.

  4. I problemi con la protezione delle VM

    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.

  5. I problemi con la compilazione AOT

    La compilazione AOT è difficile da configurare e compilare e ha un'alta probabilità di fallimento. Anche se la compilazione ha successo, la logica del codice cambia solo da una rappresentazione in bytecode a una rappresentazione in codice macchina. La sua logica operativa intrinseca continua a esistere senza alcuna protezione speciale. Se si riesce a comprendere il suo meccanismo di compilazione ed esecuzione, è ancora possibile effettuare il reverse engineering di codice leggibile.

  6. Deoffuscamento con vlx-vmengine

    Deoffusca il codice Java con il motore di esecuzione del bytecode JVM vlx-vmengine

  7. Motore di esecuzione del bytecode JVM scritto in Java/Kotlin

    Il debug dinamico Java tradizionale può essere eseguito solo sulla base del 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, che utilizza il bytecode come base per l'esecuzione. Utilizziamo Kotlin per costruire un motore di esecuzione bytecode JVM, che può essere utilizzato con IDE moderni, come IDEA, per eseguire il debug di programmi Java a livello di bytecode e osservare il comportamento in esecuzione del programma.

  8. Ingegneria inversa nativa delle immagini di GraalVM

    Per i programmi Java che sono entrati nell'era della compilazione binaria, il codice può essere facilmente retrocompilato proprio come nell'era del bytecode? Quali sono le caratteristiche dei file binari compilati da NativeImage? La robustezza della compilazione binaria è sufficiente a proteggere il codice importante? Per esplorare le problematiche sopra menzionate, ho recentemente scritto uno strumento di analisi NativeImage che ha raggiunto un certo livello di derivazione inversa.

  9. Hacking in un'applicazione Java crittografata con jhsdb (HotSpot Debugger)

    Una soluzione per la protezione del codice Java è la crittografia dei file di classe. Tali soluzioni caricano i file di classe o jar crittografati tramite un classloader personalizzato. A causa dell'esistenza del meccanismo di associazione della JVM, questo metodo non è efficace e può essere facilmente violato con gli strumenti inclusi nel JDK.

  10. Estrazione di informazioni sulla classe Java da binari compilati AOT

    AOT è anche considerato una soluzione per la protezione del codice Java, ma sfortunatamente molti programmi Java non possono più essere separati dal framework. A causa della complessità del framework, anche i programmi compilati con AOT devono includere informazioni sulle classi nel file binario finale generato, e i file delle classi sono in realtà ordinati nell'area delle risorse del file binario.

  11. Che cos'è il file JARX

    Il file JARX è il nostro formato di file di archivio proprietario, che utilizza lo stesso algoritmo di compressione Deflate di Zip e l'algoritmo di crittografia AES per crittografare i dati.

  12. La migliore soluzione di protezione del codice Java oltre l'offuscamento

    Crittografare il codice protegge la proprietà intellettuale e migliora notevolmente la sicurezza delle applicazioni. Rende il furto di proprietà intellettuale, la manomissione del codice e la scoperta di vulnerabilità di sicurezza così complessi e costosi che un ficcanaso occasionale armato di un decompilatore Java gratuito non sarà in grado di farlo.

  13. Alternativa a Excelsior JET

    Protector4J è più di un semplice sostituto di Excelsior JET