2009-09-03 19 views
5

Abbiamo intenzione di offuscare il nostro progetto ma non vogliamo perdere la capacità del debug remoto e del hotswapping.Debug di codice offuscato java

È possibile? Quali strumenti possono gestire questo? Sarei felice con la semplice offuscazione - basta rinominare classi/metodi/variabili.

[Modificato] Stiamo utilizzando Intellij IDEA ma non è stato possibile trovare alcun plug-in per questa attività.

risposta

5

Abbiamo lo stesso tipo di esigenze (semplice offuscamento, necessità di eseguire il debug in seguito) e utilizziamo ProGuard. È un'app Java, che può essere integrata in un'attività Ant.

Può fare un sacco di cose, ma è anche completamente modificabile. Quindi puoi mantenere la tua confusione semplice. Una delle opzioni è quella di generare una "Tabella di corrispondenza dei simboli", che consente di recuperare il codice non compromesso da quello offuscato. (tiene traccia che la variabile xyz nella classe qksdnqd è infatti myCuteVarName nella classe MeaningfulClassName)

Modifica: l'offuscamento può essere complicato. Alcuni esempi:

  • Non è possibile modificare il nome del metodo principale.
  • Usi un classloader? Può ancora recuperare la classe dopo l'offuscamento?
  • E la tua mappatura ORM? Il tuo contesto primaverile? (Se presente)

Edit2: È anche possibile vedere:

+0

Sì, so della tabella SC. Ma io e il mio team non siamo quel guru che può facilmente eseguire il debug e modificare il codice offuscato anche usando la tabella :) Quindi sto solo cercando uno strumento che mi permetta di eseguire il debug in modo trasparente del codice. – Vitaly

+0

Non devi essere un guru, fornisci la tabella e il vaso offuscato all'app e diventano nuovamente leggibili (meno il commento). Ah ... ma non penso che tu possa "hotswaping" con questo processo (è come rimuovere e sostituire tutto il barattolo) –

+0

Forse non capisco qualcosa. Sarò in grado di "passo dopo passo" eseguire il debug del codice offuscato e vedere il codice "normale" nello stesso momento in una sorta di debugger (senza azioni aggiuntive come guardare la tabella, avviare altre app e così via)? – Vitaly

0

Vedi SD Java Obfuscator. Elimina i commenti e gli spazi bianchi e rinomina tutti i membri/metodi/nomi di classi che non sono pubblici.

Fornisce inoltre una mappa di come il codice è stato offuscato, ad es. Per ogni simbolo FOO offuscato come XYZ, una mappa FOO-> XYZ. Ciò significa che se ottieni un backtrace che menziona XYZ, puoi facilmente determinare il simbolo originale FOO. Naturalmente, dato che solo tu (la persona che fa l'offuscamento) ha questa mappa, solo tu puoi farlo.