Jestem studentem i interesuję się bezpieczeństwem Androida. Próbowałem zmodyfikować plik APK przy użyciu baksmali i smali. Nie mogę jednak uruchomić przepakowanej aplikacji na telefonie komórkowym. Kiedy klikam ikonę, pojawia się komunikat „Niestety, test został zatrzymany” i istnieje. (Nawet ikona aplikacji została zmieniona, teraz widzę domyślną ikonę Androida zamiast starej, prawdziwej kolorowej ikony aplikacji)
Jaki może być tego powód? Właściwie nie zmodyfikowałem nawet kodu pliku apk. Po prostu rozpakowałem plik APK, aby uzyskać plik dex, następnie przekonwertowałem go na smali za pomocą baksmali.jar
, a następnie wróciłem do dex za pomocą smali.jar
. Na koniec spakowane i podpisane.
Co zrobiłem szczegółowo:
-
Rozpakuj plik apk
$ Unzip test.apk
-
Konwertuj 1classes.dex1 na smali
$ baksmali -x classes.dex -o smaliClasses
-
Skonwertowałem klasy z powrotem do
classes.dex
(zastąpiłem staryclasses.dex
, w rzeczywistości nie dodałem żadnego nowego kodu do smali . Chciałem wiedzieć, czy to zadziała najpierw).$ smali smaliClasses -o classes.dex
-
Spakuj wszystkie pliki do
test.zip
$ zip test.zip AndroidManifest.xml classes.dex res META-INF resourses.arsc
-
Zmień nazwę
test.zip
natest.apk
$ mv test.zip test.apk
Teraz wydaje mi się, że muszę ponownie podpisać pakiet APK. Popraw mnie, jeśli się mylę tutaj.
Edytowano
:
-
java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test-patched.apk
-
Próbowałem zainstalować nowy przepakowany plik APK. Korzystanie z powłoki adb. Powłoka Adb pokazała, że została pomyślnie zainstalowana. Nie mogę jednak uruchomić przepakowanej aplikacji na telefonie komórkowym. Aplikacja ulega awarii, gdy ją klikam. Pojawia się komunikat „Niestety, test został zatrzymany”.
Dlaczego przepakowana aplikacja nie działa? Nie rozumiem, czego tu brakuje?
Edytowano :
Próbowałem przepakować tę samą aplikację za pomocą apktool. Wyodrębniłem za jego pomocą małe pliki i przepakowałem. Ale dlaczego przepakowywanie nie działa z baksmali, smali, zip i signapk. Czy rozpinanie jest prawdziwym problemem w tej procedurze? Widzę, że rozmiar aplikacji drastycznie się zmniejsza, gdy spakuję ją i zmieniam jej nazwę na .apk w porównaniu z oryginalnym plikiem apk: |
baksmali -x option
) celowo? Wygląda na to, że skoro wykonujesz tę opcję, bez podania ścieżki " bootclasspath " ' otrzymamy jakiś dziwny, mały kod, który może nie być w stanie przekonwertować z powrotem na plik dex. Po prostu usuń folder META-INF przed skompresowaniem i spróbuj wykonaćzip -r unsigned.apk *
wewnątrz katalogu z całą zawartością. Jeśli nadal się zawiesza, spróbuj opublikować wyjście logcataW tym celu używam
apktool
oraz krótkiej pary skryptów powłoki do dekompilacji i ponownej kompilacji plików APK:decompile-apk
compile-apk
Korzystanie z
apktool
ma tę zaletę, że można również przeglądać i edytować wszystkie zasoby jako zdekodowany plik manifestu.Komentarze
Odpowiedź
Po zabawie z smali / baksmali udało się. Myślę, że nie użyłeś flagi podczas kompresowania . Spowodowało to, że folder res był pusty, co spowodowało awarię. Po podpisaniu apk uruchamiam również zipalign.
Kroki:
$ unzip test.apk
$ baksmali classes.dex -o smaliClasses
$ smali smaliClasses -o classes.dex
$ zip -r test.apk AndroidManifest.xml classes.dex res/ resources.arsc
$ java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test-patched.apk
$ zipalign -v 4 test-patched.apk final-apk.apk
Odpowiedź
Nie mogę komentować z powodu reputacji, więc opublikuję to tutaj.
Ponieważ praca jest wykonywana poprawnie za pomocą narzędzia apktool, wydaje mi się, że coś jest nie tak z procesem zip.
Po po przepakowaniu aplikacji, czy możesz sprawdzić, czy zawartość nowego APK jest identyczna (jeśli chodzi o nazwy i strukturę plików) z zawartością oryginalnego?
EDYTUJ: również, ponieważ plik jest a .dex, nie sądzę, żebyś potrzebował opcji -x w baksmali.
EDIT2: Podczas przepakowywania nie musisz dołączać katalogu META-INF do pliku zip. zostanie utworzony podczas podpisywania t on plik.
Odpowiedź
Użycie opcji deodex „-x” nie jest wymagane, ponieważ „nie wykonujesz baksmali na odex. Po prostu uruchom baksmali na pliku dex. Możesz także użyć narzędzia apktool do rozpakowania / spakowania wszystkiego, co moim zdaniem jest łatwiejsze.
Odpowiedź
Dlaczego zmniejszono rozmiar pliku?
Ponieważ
apktool
zoptymalizował go podczas ponownej kompilacji.Dlaczego się zawiesił?
Możliwe przyczyny awarii:
Nie możesz wykonać wszystkich czynności w odpowiedniej kolejności.
Aplikacja może mieć Sprawdzanie CRC dla rozmiaru pliku.
Narzędzie W pełni zautomatyzowane z graficznym interfejsem użytkownika. Zostało zaktualizowane przy użyciu najnowszej platformy Android, więc nie ma błędu dekompilacji zasobów i lepszą obsługę.
https://www.dropbox.com/s/02ifm4veotiuik1/apkstudio-2.0.3b-windows-Updates-Framework.rar?dl=0
I ten mały artykuł, w którym zawiera instrukcje dotyczące cofania aplikacji na Androida i wszystkie podstawowe informacje dotyczące modyfikowania / obsługi pakietu APK.
https://www.dropbox.com/s/nkkmp4ait71kjku/Android%20Application%20Reversing%20Via%20Android%20Mobile.pdf?dl=0
Odpowiedź
Jeśli interesują Cię aplikacje Anroid RE, znajdziesz lepsze narzędzia do regularnego używania.
Cóż, jednym z narzędzi jest Android Cracker Kit (który opracowałem), zapewnia wszystko, czego potrzebujesz: Android Cracker Kit (ACK):
Komentarze
Odpowiedź
Używam Edytora APK Pro do edycji Pliki APK bezpośrednio z mojego urządzenia z Androidem!
https://play.google.com/store/apps/details?id=com.gmail.heagoo.apkeditor.pro
Komentarze
Krok 4. Zapomniałeś zrobić to rekurencyjnie. Nie kopiuje plików do / res po spakowaniu. Dodaj opcję -r.
Krok 6. Nie musisz go podpisywać ponownie, ponieważ przepakowałeś go już z katalogiem META-INF do swojego apk. Informacje o podpisie znajdują się w META-INF.