La decompilazione di Java è un fattore che vale la pena considerare

4

Stiamo prendendo in considerazione il linguaggio di programmazione per un'applicazione desktop con un uso esteso della GUI (tabelle, finestre) e un uso intensivo del database. Abbiamo preso in considerazione l'utilizzo di Java, tuttavia il fatto che possa essere decompilato molto facilmente nel codice sorgente ci trattiene.

Naturalmente ci sono molti offuscatori disponibili, ma sono solo questi: gli offuscatori. L'unica confusione che meritiamo di ottenere è stata la rimozione dei nomi di funzioni e variabili in lettere e numeri privi di significato in modo che rubare codice e rinominarlo in qualcosa di significativo è troppo lavoro e siamo sicuri al 100% che non sia reversibile in alcun modo automatizzato .

Tuttavia, per quanto riguarda la protezione dei dati interni (come gli hash delle password o il contenuto delle variabili sensibili), abbiamo riscontrato che gli offuscatori mancano davvero.

C'è un modo per rendere le applicazioni Java difficili da decodificare come controparti .exe?

E è un fattore da considerare quando si decide se sviluppare in Java un'applicazione desktop?

    
posta Sandra G 30.10.2013 - 17:57
fonte

2 risposte

4

Java è relativamente facile da decompilare in codice Java legale e con l'abbondanza di programmi in grado di farlo, dovrebbe essere sicuramente un fattore decisivo se utilizzare Java per le applicazioni desktop. Anche se gli obfuscator fanno un buon lavoro nel rendere difficile il senso del tuo codice, dovrebbe essere considerato che se i dati che stai cercando di proteggere sono abbastanza validi, possono e saranno trovati.

Indipendentemente da ciò in cui scrivi la tua domanda, ci sarà sempre la possibilità che la tua applicazione venga decodificata. Ad esempio, se scrivi il tuo programma in Assembly ci vorrà un po 'di sforzo ma può ancora essere decodificato in una fonte compilabile / comprensibile. Quando scegli quale lingua scrivere nella tua applicazione dovresti considerare quanto impegno ci vorrà per eseguire il reverse engineering dell'app con Java e C # è uno dei più semplici e C e Assembly sono i più difficili.

Puoi anche tentare di nascondere i dati sensibili nell'app / codice facendo uso delle seguenti tecniche:

  • Crittografa dati variabili e decifrati in fase di runtime.
  • Cripta l'intera sezione eseguibile della tua applicazione e decrittala in fase di runtime utilizzando un decompressore (questa non è l'opzione migliore in quanto risulterà nel software AV pensando che la tua applicazione sia un virus)
  • Assicurati che i buffer contenenti dati sensibili vengano annullati dopo l'uso.
  • Conservazione di dati sensibili su un server remoto e utilizzo di SSL per scaricarlo in fase di runtime.

Spero che questo risponda alla tua domanda.

    
risposta data 09.11.2013 - 21:23
fonte
0

Sì, è possibile rendere i programmi Java arbitrariamente difficili da decodificare. Dipende da quanto vuoi farlo e quanto tempo e abilità hai nel perseguire questo obiettivo.

Per prima cosa, l'offuscamento è abbastanza buono. A parte i nomi di mangling, è possibile distorcere il flusso del codice fino al punto in cui il senso di un programma funziona, quale algoritmo utilizza e come manipola i suoi dati è difficile quanto un programma C ++ ottimizzato.

In secondo luogo, è molto semplice mascherare i dati chiave. Come buoni sviluppatori di software internazionalizzato e configurabile, i tuoi dati sono già memorizzati separatamente dal tuo codice, in file di risorse o qualcosa di simile. Il programmatore C ++ fa qualcosa di simile. Puoi facilmente crittografare i dati utilizzando un algoritmo e una chiave sepolti profondamente nel codice.

Sebbene la mia esperienza in questo campo sia in lingue diverse da Java, puoi organizzare blocchi di codice da memorizzare in forma crittografata e decifrarli quando vengono caricati in memoria.

In questi giorni di connessione Internet continua puoi recuperare il codice e le chiavi che ti servono dinamicamente dalla rete e proteggerle con i certificati. Questo è ciò che Microsoft fa con le sue app store.

Tutto ciò è perfettamente possibile e gli sviluppatori di giochi lo stanno facendo proprio adesso. Dall'altra parte ci sono legioni di hacker che aspettano solo la prossima release per estrarre i loro strumenti di debug in memoria e essere i primi ad annunciare un crack.

Dovresti desiderare che il tuo software diventi abbastanza conosciuto e abbastanza prezioso da attirare questo tipo di attenzione. Mi sono sempre concentrato innanzitutto sulla risoluzione del problema che nessuno ha mai sentito parlare del mio software. Se sarò mai abbastanza fortunato da avere milioni di hacker che tentano di violare i miei programmi, sono sicuro che avrò le risorse per farli correre bene.

    
risposta data 11.04.2014 - 13:35
fonte

Leggi altre domande sui tag