2012-11-06 5 views
17

Chcę sprawdzić, jak działa DexGuard, ale wygląda na to, że nie ma bezpłatnej wersji próbnej.W jaki sposób DexGuard szyfruje klasy?

Czy DexGuard może zaszyfrować aplikację na Androida? Czy może po prostu zaciemnia kod? Jak działa szyfrowanie DexGuard? Jeśli mógłbyś podać kod z przykładowej aplikacji uruchamianej z DexGuard przed i po dekompilacji, byłoby świetnie.

Odpowiedz

50

ProGuard zapewnia zaciemnianie nazw: może zastąpić oryginalne nazwy klas, metod i pól krótkimi, pozbawionymi znaczenia nazwami. DexGuard dodatkowo zapewnia szyfrowanie ciągów i szyfrowanie klas. Termin szyfrowanie może być mylący w tym kontekście, ponieważ są to zasadniczo bardziej agresywne typy zaciemniania. Wyznaczone ciągi i klasy są przechowywane w intencjonalnie złożonej, zaszyfrowanej formie i odszyfrowane w czasie wykonywania za pomocą kluczy i algorytmów, które są koniecznie dostępne dla aplikacji. Pod pewnymi względami rynek Google Play może szyfrować całe aplikacje dla Androida 4.1. Środowisko wykonawcze następnie odszyfrowuje aplikację przed jej wykonaniem, w kontrolowany sposób.

(Jestem deweloper PROGUARD i DexGuard - nie krępuj się skontaktować, jeśli jesteś zainteresowany)

+0

Witam! Dzięki za odpowiedź! Tak, myliłem się z definicją szyfrowania w DexGuard. Zasadniczo rozumiem, że szyfrowanie przekształca dane przy użyciu tajnego klucza. Jeśli jednak aplikacja Android jest zaszyfrowana, Dalvik nie będzie w stanie zrozumieć zaszyfrowanej aplikacji, ponieważ Dalvik nie zawiera odszyfrowującego dla aplikacji. O ile oczywiście aplikacja nie zawiera odszyfro- wacza wraz z kluczem. W ten sposób klasa zostanie odszyfrowana przez samą aplikację, zanim zostanie uruchomiona przez Dalvik. Tak działa DexGuard? – Arci

+0

Czy mogę używać DexGuard wraz z encypcją Google Play na Androida 4.1? Czy zaleca się używanie DexGuard razem z Proguard? Zauważyłem na stronie Proguard, że DexGuard nie prevryfikuje klas. Jak mogę skorygować zajęcia, jeśli mam korzystać z DexGuard? Dziękuję Ci! : D – Arci

+2

Prawidłowo. Tak, z zewnątrz przetworzona aplikacja nadal wygląda jak każda inna aplikacja; Google Play może nadal je szyfrować. Nie, nie musisz łączyć ProGuard i DexGuard, ponieważ DexGuard zapewnia już funkcjonalność ProGuard. Wstępna weryfikacja jest wymagana tylko w przypadku Java Micro Edition i Java 6, a nie Androida. –

1

Choć użyć szyfrowania perspektywie wydaje się, że jest to naprawdę zaciemniania. Mówię to po prostu dlatego, że chociaż mogą szyfrować pewne łańcuchy/wartości ... fakt, że klucz szyfrowania musi być również przechowywany w aplikacji oznacza, że ​​zapewniają "blokadę" kodu, jednocześnie pakując "klucz" " z tym.

+3

Eric stwierdza dokładnie, że w swojej odpowiedzi powyżej ... – Dori

2

DexGuard w starej wersji przy użyciu "DES" Alg do szyfrowania określonej klasy. Później zmienia się "AES" alg. Po zaszyfrowaniu Określona klasa przechowuje dane szyfrowania w innej klasie za pomocą formatu tablicy danych z metodą odszyfrowywania. Metoda odszyfrowywania, która jest statycznym blokiem w Deksie, jest metodą formatu klinicznego, która jest zaciemniana za pomocą zaciemniania kontrolnego i ukrywania API. Więc jest trochę do deobfuscate metody odszyfrowywania. W innych klasach odwołaj się do określonej zmiany klasy na kod refleksyjny. Za każdym razem, gdy działa pakiet APK, zaszyfrowana klasa będzie najpierw odszyfrowana metodą statyczną. Odszyfrowane klasy będą ładowane do pamięci dvm za pomocą interfejsu API Reflect. więc inne klasy mogą poprawnie odwoływać się do określonej klasy. to jest to! Moim zdaniem DexGuard jest bardzo potężnym narzędziem do zaciemniania. Jeśli każdy element obfuskacji dotyczy APK, będzie kosztować dużo czasu, aby odwrócić cały prawdziwy program.