2012-03-15 15 views
5

Zgodnie z tym linkiem: http://developer.android.com/guide/developing/tools/proguard.html, stwierdzają:Proguard nie kasował aplikacje na Androida

ProGuard sprawia, że ​​aplikacja trudniejsze do inżynierii wstecznej, ważne jest, aby używać go, gdy aplikacja wykorzystuje funkcje, które są wrażliwe na bezpieczeństwo, takie jak przy licencjonowaniu aplikacji.

Ale to nie prawda! Używam najnowszej PROGUARD (4.7) zawarty w ADT 17 podglądu 4. Używam ProGuard podczas eksportowania moją aplikację, dodając

proguard.config=proguard-android.txt 

do mojego project.properties (PROGUARD-android.txt jest tylko ustawienie domyślne włączone w ADT 17).

Ale mogę łatwo inżynierii wstecznej mój apk, odsyłając go do jej pierwotnego kodu za pomocą kroki:

  1. Używaj APK-narzędzie do rozpakowania pliku APK.

  2. Zastosowanie smali do konwersji .smali pliki do .dex (wskazać maĹ,ych do folderu zawierającej .smali plików, zazwyczaj wewnątrz/src/com/[Nazwa firmy]/[appname])

  3. Zastosowanie dex2jar przekonwertować plik wynikowy .dex do .jar

  4. Korzystanie jd-gui aby wynikowy plik .jar

Więc moje pytanie brzmi: czy robię coś źle? A może proguard jest zupełnie bezużyteczny w zaciemnianiu kodu?

+0

Po prostu mówi trudniej, aby odwrócić inżynier, ale nie jest niemożliwe, aby to zrobić tak jak to, co zrobiłeś. Widzę, że ludzie używają go przede wszystkim do zmniejszania rozmiaru kodu. –

+0

haha ​​Chciałbym poznać ich definicję "łatwego". Każda aplikacja może zostać poddana inżynierii wstecznej w 4 komendach! Mógłbym wyszkolić małpę, żeby to zrobiła. –

+0

Aby wyjaśnić, co widzisz w 'jd-gui' i czego spodziewasz się zobaczyć? Czy widzisz oryginalny kod jak, z grubsza, jak go skompilowałeś? Czy widzisz oryginalne nazwy zmiennych w swoich metodach, itp? –

Odpowiedz

1

Jeśli używasz bibliotek kompatybilności z android.support. *, Może to być przyczyną problemu. Dodaj poniższe linie do pliku konfiguracyjnego PROGUARD:

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

Najprostszym sposobem diagnozowania problemów PROGUARD jest budowanie aplikacji z Apache Ant. Zobaczysz wszystkie ostrzeżenia i błędy w stderr.

Jest to możliwe do zastosowania we wszystkich bibliotekach, które używają dynamicznego ładowania klas, odbicia i wielu implementacji tej samej klasy w zależności od wersji interfejsu API.

Powiązane problemy