Zajrzyj pod maskę aplikacji Android dzięki APK Studio

Każdy, kto próbował zdeasemblować cudzy plik APK, zna ten rytuał. Najpierw wpisujesz polecenia w terminalu apktool d, potem jednocześnie otwierasz jadx-gui, aby przeczytać kod Java, a następnie szukasz potrzebnej metody w ogromnym folderze z plikami Smali za pomocą VS Code lub zwykłego Sublime Text. Po wprowadzeniu zmian rozpoczyna się druga runda: przebudowa przez konsolę, wyrównanie zip za pomocą zipalign, podpisywanie kluczem przez apksigner lub uber-apk-signer oraz ręczna instalacja przez ADB.
Jeśli musisz zmienić jedną linię w aplikacji zewnętrznej lub zbadać, jak działa zewnętrzny SDK, łańcuch pięciu narzędzi konsolowych szybko staje się nużący. Projekt APK Studio łączy ten rozdrobniony zestaw w jedno zintegrowane środowisko programistyczne.

Co kryje się w środku
To w zasadzie pełnoprawne IDE do inżynierii wstecznej Androida. Projekt jest napisany w C++ z użyciem Qt6, więc działa na Linuksie, macOS i Windows bez powolności Electrona i nadmiernego apetytu na RAM.
Główna idea stojąca za aplikacją jest prosta: zapewnić programistom i analitykom malware'u znajomy interfejs IDE, w którym drzewo projektu, edytor kodu, podgląd hex i terminal wykonywania poleceń są połączone w jednym oknie.
Przy pierwszym uruchomieniu APK Studio zajmuje się rutyną. Program sam pobiera i konfiguruje niezbędne pliki binarne: Java, Apktool, JADX, ADB i Uber APK Signer. Jeśli masz już lokalne wersje tych narzędzi, możesz po prostu nadpisać ścieżki do plików binarnych w ustawieniach.
Co oferuje to środowisko
Zamiast przeskakiwać między trzema oknami terminala a edytorem tekstu, otrzymujesz działającą ścieżkę pracy:
- Wbudowany edytor Smali, Java i XML. Zintegrowany edytor obsługuje podświetlanie składni dla kodu Dalvik (
*.smali), zdekompilowanego kodu Java, manifestówAndroidManifest.xmli zasobów*.yml. - Wbudowany edytor hex i przeglądarka mediów. Jeśli aplikacja zawiera zaszyfrowane pliki binarne lub niestandardowe obrazy, możesz je przeglądać bezpośrednio w drzewie projektu. QHexView jest połączony dla plików binarnych, a obrazy otwierają się we wbudowanej przeglądarce.
- Obsługa frameworków dostawców. Jeśli grzebiesz w aplikacjach systemowych Samsunga, LG lub HTC, często musisz załadować oryginalny
framework-res.apk. APK Studio ma wbudowaną obsługę zarządzania tagami frameworka dla bezproblemowej dekompilacji kompilatora zasobów. - Buduj, podpisuj i instaluj jednym kliknięciem. Po edycji Smali projekt jest przebudowany, podpisany wbudowanym
uber-apk-signeri natychmiast wysyłany do urządzenia połączonego przez USB lub Wi-Fi.
Integracja z Eksploratorem jest również obsługiwana: możesz kliknąć prawym przyciskiem myszy dowolny .apk w menedżerze plików i otworzyć go bezpośrednio w środowisku dekompilacji.
Jak zbudować projekt ze źródeł
Jeśli chcesz samodzielnie zbudować najnowszą wersję z repozytorium, będziesz potrzebować kompilatora C++17, CMake 3.16+ oraz bibliotek Qt6 (moduły Core, Gui, Network, Widgets).
git clone --recursive https://github.com/vaibhavpandeyvpz/apkstudio.git
cd apkstudio
cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release
Na macOS ścieżka do Qt podczas konfiguracji jest przekazywana przez flagę -DCMAKE_PREFIX_PATH:
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/path/to/Qt/6.10.1/clang_64
Gotowy plik binarny pojawi się w katalogu build/bin/.
Do jakich zadań się przydaje
Narzędzie rozwiązuje kilka jasnych, praktycznych zadań:
- Szybki audyt bezpieczeństwa. Sprawdź, jakie uprawnienia aplikacja żąda, dokąd sięgają klienci sieciowi oraz czy w manifeście nie ma otwartych Activities lub podatnych ContentProviders.
- Lokalizacja i modyfikacja porzuconych aplikacji. Gdy nie ma dostępnego kodu źródłowego, ale musisz przetłumaczyć interfejs lub dostosować zachowanie do nowszej wersji Androida.
- Debugowanie integracji. Wygodne do ustalenia, dlaczego zewnętrzny zamknięty SDK zachowuje się inaczej niż opisano w jego oficjalnej dokumentacji.
APK Studio nie próbuje wymyślać własnych algorytmów parsowania kodu bajtowego — elegancko opakowuje sprawdzone w branży narzędzia w natywny, szybki interfejs GUI. Jeśli regularnie musisz rozpakowywać pakiety, zmieniać kilka opcji w zasobach lub łatać metody w Smali, ten projekt zaoszczędzi czas i uwolni cię od nużącej pracy z terminalem.
Powiązane projekty