Il miglior offuscatore Java? [chiuso]


107

Sto sviluppando un software di sicurezza e desidero offuscare il mio codice java in modo che diventi impossibile eseguire il reverse engineering. Qual è l'offuscatore Java più affidabile?


10
@Xinus "è diventato impossibile eseguire il reverse engineering" - difficilmente, i migliori hanno provato e fallito
e

212
Alcuni colleghi hanno creato del codice fortemente offuscato. Ma non era questa la loro intenzione.
Steve McLeod

7
It was once said that if you had an infinate amount of monkeys on typewiters and an infinate amount of time, they would write all of the great works of Shakespeare.- Dilbert
formica

7
È impossibile evitare il reverse engineering.
Mnementh

11
@ Mnementh: è sufficiente per rendere proibitivo il reverse engineering per la tua particolare app.
Dmitry Leskov

Risposte:


99

Innanzitutto, devi davvero tenere a mente che non è mai impossibile decodificare qualcosa. Tutto è hackerabile. Uno sviluppatore intelligente che utilizza un IDE intelligente può già arrivare abbastanza lontano.

Bene, puoi trovare qui un elenco. ProGuard è abbastanza buono. L'ho usato io stesso, ma solo per "minimizzare" il codice Java.


1
@BalusC: Allora quale strumento usi per offuscare il codice Java? offuschi il tuo codice java, vero?
Thinhbk

@Thinhbk Obfuscation rende più difficile ottenere utili stack trace.
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen: D'accordo. IMO, l'offuscamento renderà le tracce dello stack per lo più inutili. In tal caso, sto usando qualche trucco con il log msg, che può aiutare.
Thinhbk

2
@Thinhbk Proguard genera una mappa per tradurre le tracce dello stack offuscate nel codice originale. Altrimenti, come hai detto, le tracce dello stack diventerebbero inutili (ma chi ottiene comunque eccezioni non rilevate ... ;-))
Matthieu

@ Matthieu: è possibile tradurre automaticamente la traccia dello stack supportata nel codice originale? Sarebbe fantastico e nuovo per me. So solo che tradurre manualmente può essere difficile se la base del codice è enorme.
Thinhbk

33

Se un computer può eseguirlo, un essere umano adeguatamente motivato può decodificarlo.


3
Quante persone possono leggere codice offuscato e comprenderne la logica? Ho molti amici ingegneri e non possono farlo. Solo John Nash può farlo;)
kodmanyagha

5
@kodmanyagha Se fossero abbastanza motivati ​​lo imparerebbero. Non è difficile.
Thorbjørn Ravn Andersen

1
In senso matematico, è possibile eseguire senza un modo per decodificarlo. Questo è ciò che riguarda la crittografia omomorfica, ma ci sono alcuni ostacoli che devono essere risolti per renderla praticamente utilizzabile su software per computer anziché SaaS. Ci stiamo muovendo lentamente. I lavori seminali di Gentry sulla crittografia completamente omomorfica e sui "puzzle matematici" di Amit Sahai et al. fatto un enorme balzo in quella direzione. C'è solo un elemento mancante (che io chiamo una "funzione barriera") che renderebbe realizzabile l'intero schema. Ciò che è impossibile ora sarà possibile in futuro.
ogggre

30

Consulta il mio articolo Proteggi il tuo codice Java - Attraverso gli offuscatori e oltre [Archiviato] per una discussione sull'offuscamento rispetto ad altri tre modi per rendere il reverse engineering delle tue app più costoso e una raccolta di collegamenti a strumenti e ulteriori materiali di lettura.


1
Questo è ciò di cui ho veramente bisogno. Voglio scrivere PHP offuscatore per i miei progetti. La logica è la stessa ovunque. Grazie ...
kodmanyagha

1
Articolo interessante e completo sull'offuscamento Java e sulla raccolta di software.
m3nda

15

Penso che Proguard sia il migliore. È anche possibile integrarlo con il tuo IDE (ad esempio NetBeans). Tuttavia, considera che se offuschi il tuo codice potrebbe essere difficile tenere traccia dei problemi nei tuoi log.


6
+1 per "considera che se offuschi il tuo codice potrebbe essere difficile tenere traccia dei problemi nei tuoi log". Proprio quando pensavi che il debug fosse già abbastanza difficile ...
Adam Paynter

7
Un buon offuscatore che cambia i nomi e le informazioni sul numero di riga dovrebbe produrre un registro con cui invertire il processo. In questo modo almeno le tracce dello stack rimangono utili per i binari offuscati.
Joachim Sauer

3
ProGuard crea tali file inversi per il debug. :-)
Malax



7

È vero che è sempre possibile decodificare del codice, così come è impossibile proteggere una casa in modo che nessuno possa mai rubarla. Questo però non mi impedisce di chiudere a chiave la porta. In realtà, non sono nel mondo java, uso BitHelmet per .net.


7
+1 per riportarti allo zero netto. Questa risposta non è inutile.
HaloWebMaster

6

Lavoravo con Klassmaster nella mia azienda precedente e funziona davvero bene e può integrarsi abbastanza bene con i sistemi di compilazione (il supporto per esperti è eccellente). Ma non è gratuito però.



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.