Konwertuj APK na DEX
Wyodrębnij pliki classes.dex i multidex z pliku APK za pomocą 7-Zip lub unzip.
Konwertuj pliki APK online
Nie mamy jeszcze dedykowanego konwertera online dla APK na DEX, ale pliki APK możesz przekonwertować online na te formaty:
Chcesz przekonwertować APK na DEX?
Daj nam znać. Kolejne konwersje do dodania wybieramy według zainteresowania.
Jak konwertować apk do dex
- Archiwa
- Brak ocen.
Niektóre narzędzia do analizy systemu Android akceptują samodzielny plik DEX zamiast pliku APK, a jego wyodrębnienie może ograniczyć pakiet aplikacji do wykonywalnego kodu bajtowego w celu inspekcji lub archiwizacji. Plik APK zwykle zawiera już jeden lub więcej plików DEX, więc to zadanie jest zazwyczaj wyodrębnianiem, a nie konwersją formatu.
Czym jest format APK
APK to pakiet aplikacji systemu Android przechowywany jako archiwum oparte na formacie ZIP. Android Studio i narzędzia kompilacyjne Gradle tworzą pliki APK zawierające kod aplikacji, skompilowane zasoby, manifest, zasoby dodatkowe, biblioteki natywne, certyfikaty i metadane pakietu.
Wykonywalny kod jest zwykle przechowywany w pliku classes.dex. Aplikacje korzystające z multidex zawierają również pliki classes2.dex, classes3.dex i pliki o wyższych numerach. Procesy kompilacji aplikacji Android zazwyczaj generują DEX za pomocą d8; R8 może dodatkowo zmniejszać i optymalizować kod. Starsze projekty mogą używać dx.
Czym jest format DEX
DEX, czyli Dalvik Executable, to kod bajtowy systemu Android przeznaczony dla środowisk uruchomieniowych Dalvik i ART. Samodzielny plik DEX jest przydatny w przypadku narzędzi, które akceptują kod bajtowy bez pliku APK, do zachowywania wyłącznie kodu wykonywalnego lub do inspekcji klas za pomocą narzędzi takich jak baksmali lub JADX.
DEX nie jest instalowalną aplikacją i nie zawiera zasobów pliku APK, manifestu, bibliotek natywnych, zasobów dodatkowych ani informacji o podpisie. Nie jest również kodem źródłowym Java. JADX może wygenerować dane wyjściowe podobne do kodu Java na potrzeby inspekcji, ale dekompilacja powoduje utratę komentarzy i formatowania oraz może nie odtworzyć dokładnie oryginalnego przepływu sterowania ani typów.
Jak wyodrębnić DEX z pliku APK
- Zachowaj niezmienioną kopię pliku APK i przeskanuj nieznane pliki przed ich otwarciem lub wyodrębnieniem.
- Wyświetl zawartość pakietu za pomocą
unzip -l app.apkw systemie Linux lub macOS albo otwórz plik APK za pomocą 7-Zip w systemie Windows. Zmiana nazwy rozszerzenia.apkna.zipjest niepotrzebna, ponieważ oba formaty używają kontenera ZIP. - Wyodrębnij każdy wpis pasujący do wzorca
classes*.dex. W powłoce utwórz katalog wyjściowy i uruchom poleceniemkdir -p dex-output && unzip -j app.apk 'classes*.dex' -d dex-output. W programie 7-Zip wybierz wpisy DEX i wybierz opcję 7-Zip → Extract To. - Sprawdź, czy dane wyjściowe zawierają wszystkie numerowane pliki DEX, a nie tylko
classes.dex. Zachowaj oryginalne nazwy plików, ponieważ pliki multidex razem reprezentują kod bajtowy aplikacji.
7-Zip jest praktycznym rozwiązaniem desktopowym w systemie Windows, natomiast standardowe narzędzie unzip jest wystarczające w systemach Linux i macOS. Narzędzia te wyodrębniają istniejące pliki bez ponownej kompilacji ani ponownego kompresowania kodu aplikacji.
Kiedy ponowna kompilacja jest rzeczywiście potrzebna
Jeśli kod DEX został zmodyfikowany lub wygenerowany z kodu smali albo innego źródła, użyj narzędzia d8 z Android SDK, na przykład d8 --output out classes.jar, gdy dane wejściowe są zgodnym plikiem JAR. Zastępowanie plików DEX wewnątrz pliku APK jest operacją przebudowy, a nie prostym wyodrębnianiem; przed instalacją w systemie Android przebudowany pakiet musi zostać wyrównany i podpisany. Dex2jar nie jest właściwym narzędziem do konwersji APK na DEX: konwertuje kod bajtowy DEX na zgodne z Javą pliki JAR na potrzeby analizy.
Ograniczenia zgodności i bezpieczeństwa
Wyodrębnienie DEX zachowuje kod bajtowy obecny w pliku APK, ale samodzielny plik może zależeć od innych plików DEX, zasobów, bibliotek natywnych lub klas pakietu. Połączenie plików multidex w jeden nie jest neutralną konwersją i może przekroczyć limity odwołań do metod DEX lub wymagać ponownej kompilacji ze zgodnymi zależnościami i odpowiednim poziomem API.
Zmiana dowolnego pliku DEX unieważnia oryginalny podpis pliku APK po przebudowaniu pakietu. Samodzielny plik DEX nie ma podpisu APK i nie można go zainstalować samodzielnie. Niektóre chronione lub nietypowe pakiety mogą ładować dodatkowy kod w czasie działania, przechowywać kod poza standardowymi wpisami classes*.dex lub korzystać z dzielonych plików APK; dlatego wyodrębnienie widocznych wpisów może nie obejmować całego kodu wykonywalnego.
Internetowe konwertery APK na DEX są niepotrzebne w przypadku zwykłych pakietów i nie nadają się do plików zastrzeżonych, podpisanych lub niezaufanych, ponieważ przesłanie plików ujawnia kod aplikacji i potencjalnie zawarte w niej sekrety. Lokalne wyodrębnianie za pomocą 7-Zip lub unzip jest bezpieczniejsze i bezpośrednio tworzy wymagane pliki DEX.
Porównanie formatu APK z DEX
Jak formaty APK i DEX wypadają w porównaniu pod względem najważniejszych cech dla tej konwersji.
| Cecha | .APK Android Package | .DEX Dalvik Executable |
|---|---|---|
| Otwarty standard | Nie | Nie |
| Kompresja | Oba | — |
| Typowy rozmiar pliku | Średni | Mały |
| Otwiera się w przeglądarce internetowej | Nie | Nie |
| Dalsza edycja | Nie do bezpośredniej edycji | Nie do bezpośredniej edycji |
| Obsługa metadanych | Podstawowy | Podstawowy |
| Czytelny tekstowo | Nie | Nie |
| Najlepszy do | Osadzanie w aplikacjach | Osadzanie w aplikacjach |
| Wprowadzono | 2008 | 2008 |
| Twórca | ||
| Typ MIME | application/vnd.android.package-archive | — |
Informacje o rozszerzeniach i typach plików zapewnia File-Extensions.org
Baza danych obecnie nie zawiera żadnych bezpośrednich linków do konwerterów plików apk.