Przejdź do treści

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

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

  1. Zachowaj niezmienioną kopię pliku APK i przeskanuj nieznane pliki przed ich otwarciem lub wyodrębnieniem.
  2. Wyświetl zawartość pakietu za pomocą unzip -l app.apk w systemie Linux lub macOS albo otwórz plik APK za pomocą 7-Zip w systemie Windows. Zmiana nazwy rozszerzenia .apk na .zip jest niepotrzebna, ponieważ oba formaty używają kontenera ZIP.
  3. Wyodrębnij każdy wpis pasujący do wzorca classes*.dex. W powłoce utwórz katalog wyjściowy i uruchom polecenie mkdir -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.
  4. 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.

Porównanie formatów plików APK i DEX
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 Google Google
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.

Dodatkowe formaty dla konwersji pliku
apk

Konwersja do .dex
z innych formatów

Udostępnij w mediach społecznościowych:

Już pobrano

Ten plik został już pobrany. Ze względu na prywatność usunęliśmy go z serwera zaraz po pobraniu, więc nie można go pobrać ponownie. Jeśli potrzebujesz go jeszcze raz, przekonwertuj plik ponownie.