2012-03-15 14 views
5

Secondo questo link: http://developer.android.com/guide/developing/tools/proguard.html, essi affermano:Proguard non offuscando le applicazioni Android

ProGuard rende l'applicazione più difficile da decodificare, è importante che lo si utilizza quando l'applicazione utilizza funzioni che sono sensibili alle sicurezza come quando si concedono in licenza le proprie applicazioni.

Ma non è vero! Sto utilizzando la più recente Proguard (4.7) incluso nel anteprima 4. ADT 17 Io uso Proguard durante l'esportazione la mia app con l'aggiunta di

proguard.config=proguard-android.txt 

Nelle mie project.properties (Proguard-android.txt è solo la configurazione di default incluso in ADT 17).

Ma posso facilmente decodificare il mio apk, riportandola al suo codice originale utilizzando questi passaggi:

  1. Usa apk-strumento per estrarre l'apk.

  2. Usa smali per convertire i file in una .smali .dex (si Smali puntare alla cartella contenente i file .smali, normalmente all'interno/src/com/[companyname]/[appname])

  3. Usa dex2jar per convertire il file .dex risultante in un .jar

  4. Usa JD-GUI per visualizzare il file .jar risultante

Quindi la mia domanda è: sto facendo qualcosa di sbagliato? O il proguard è completamente inutile nel codice offuscante?

+0

Dice solo più difficile per il reverse-engineer, ma non è impossibile farlo come quello che hai fatto. Vedo che le persone lo usano principalmente per ridurre la dimensione del codice. –

+0

haha ​​Mi piacerebbe conoscere la loro definizione di "facile" allora. Qualsiasi app può essere decodificata in 4 comandi! Potrei addestrare una scimmia per farlo. –

+0

Giusto per chiarire, che cosa stai vedendo in 'jd-gui', e cosa ti aspetti di vedere? Vedi il codice originale come, approssimativamente, come lo hai compilato? Stai vedendo i nomi delle variabili originali nei tuoi metodi, ecc.? –

risposta

1

Se si sta utilizzando android.support. * Le librerie di compatibilità questo può essere una radice di un problema. Aggiungere le seguenti righe al file di configurazione Proguard:

-dontwarn android.support.** 
-keep class android.support.** { *; } 

Il modo più semplice per diagnosticare problemi di Proguard è la costruzione di un app con ant apache. Vedrai tutti gli avvertimenti e gli errori in stderr.

Questo è applicabile a tutte le librerie che utilizzano il caricamento dinamico di classi, la riflessione e le implementazioni multiple della stessa classe dipendente dalla versione dell'API.

Problemi correlati