Ho bisogno di distribuire un'applicazione desktop Java all'utente. Sto osservando diversi modi per proteggere il mio codice sorgente dal reverse engineering.
Un metodo è quello di distribuire una Macchina Virtuale (dice Linux) contenente l'app in esecuzione all'interno di quella VM, e rendere l'utente root di quella avente una password di ad es. 50 caratteri. Lo svantaggio è che la dimensione del download della mia app è troppo grande (alcuni Gigas). E la prossima domanda è: un utente malintenzionato può leggere il mio codice Java da un'immagine di disco VDI?
Un altro metodo è Ahead of Time (AOT) che compila in nativo. ExcelsiorJet sembra essere lo strumento migliore per questo, tuttavia non è gratuito. L'offuscamento del codice sorgente NON è sufficiente, dal momento che quelli che vogliono leggere il codice sorgente sono quelli che vogliono principalmente preoccuparsi del flusso di informazioni e della struttura dei dati. Questo eccellente articolo spiega di più su AOT e offuscamento. Ora la domanda è: usando ExcelsiorJet per compilare in modo nativo, il mio codice nativo è relativamente sicuro dal reverse engineering?
Ancora un altro modo: ad es. usa C ++ per scrivere il codice più sicuro per la sicurezza, compilarlo su reale nativo ed esporre la mia irrilevante fonte Java. Ma questo significa che avrò bisogno di mantenere entrambe le parti.