niedawno opublikowaliśmy przewodnik, w jaki sposób dodawać zależności tylko dla określonych productFlavors. Po wdrożeniu niezbędnych kroków chcieliśmy upewnić się, że finał .apk faktycznie nie zawiera żadnych klas niechcianych już. W tym poście pokażemy, jak sprawdzić, które klasy i zasoby są w apk.
Uwaga: Ten przewodnik jest przeznaczony do dekompilacji własnych apk, a nie ciężkiej pracy innych programistów. W związku z tym nie uwzględniliśmy żadnych kroków w celu inżynierii wstecznej lub obejścia zaciemnienia kodu.
przygotowanie: instalacja narzędzi
Android apk jest w zasadzie spakowany katalog, który zawiera niektóre surowce (obrazy, Pliki Układów, ..) oraz plik classes.dex
. Ten plik zawiera cały aktualny kod i interesuje nas najbardziej. Pobierzmy wszystkie potrzebne narzędzia:
- musisz rozpakować plik apk. Możesz użyć wbudowanej funkcjonalności systemu operacyjnego lub zainstalować swój ulubiony (Nie)archiwizator, taki jak 7-Zip.
- aby odwrócić plik
classes.dex
do pliku.jar
, musisz pobrać narzędzie dex2jar. - wreszcie, aby plik
.jar
był czytelny dla ludzkiego oka, Pobierz i uruchom JD-Gui.
odzyskanie kodu
w porządku, teraz nadszedł czas, aby wykonać rzeczywistą pracę. Skopiuj plik apk do katalogu, w którym chcesz pracować. Rozpakuj plik apk za pomocą wybranego narzędzia i powinieneś otrzymać katalog z kilkoma podkatalogami i kilkoma plikami.
Zapraszam do przeglądania AndroidManifest.xml
lub res
katalog. Najciekawszym utworem jest classes.dex
. W ten sposób Przełącz się na pobrane narzędzie dex2jar
I Otwórz nowy terminal.
Jeśli korzystasz z systemu Mac OS, wykonajsh d2j-dex2jar.sh -f -o output.jar your_app_input.apk
. Użytkownicy systemu Windows mogą użyć pliku .bat
, aby utworzyć plik .jar
. Po uruchomieniu narzędzia przejdź do nowego pliku.jar
.
przeglądanie Zdekompilowanego kodu
na koniec uruchom pobrany plikJD-GUI
I użyj go, aby otworzyć plik.jar
.
można przeglądać wszystkie pakiety i klasy, które są w apk. Kod jest wersją skróconą i nie zawiera żadnych komentarzy ani zbędnych struktur, które widzisz w swoim IDE. Pamiętaj, że jest to skompilowana minimalizacja Twojej aplikacji. Niemniej jednak, powinno dać ci wystarczająco dużo informacji, aby dowiedzieć się o podstawach aplikacji. Na przykład pomogło nam to zweryfikować, czy w aplikacji nie ma już pakietów związanych z biblioteką admob.
inne opcje
Jeśli potrzebujesz tylko szybkiej dekompilacji, możesz użyć narzędzia online pod adresem www.decompileandroid.com/.
dla bardziej zaawansowanych celów dekompilacji możesz spojrzeć na apktool, który daje wiele dodatkowych pomocników.