Czy istnieje sposób na uzyskanie kodu źródłowego z pliku APK?

1260

Dysk twardy w moim laptopie właśnie się zawiesił i straciłem cały kod źródłowy aplikacji, nad którą pracowałem przez ostatnie dwa miesiące. Wszystko, co mam, to plik APK, który jest przechowywany w mojej wiadomości e-mail od momentu wysłania go do znajomego.

Czy jest jakiś sposób na wyodrębnienie mojego kodu źródłowego z tego pliku APK?

Frank Bozzo
źródło
28
FYI Jest Dekompilator check-line tutaj
Edwin
11
Czy to oznacza, że ​​możemy uzyskać kod źródłowy aplikacji wartych milion dolarów, takich jak Whatsapp lub Facebook? Czy to wszystko jest oprogramowaniem typu open source?
Faizan
3
@Faizan, czy słyszałeś o proguard?
Vishwajit Palankar
1
Frazowanie pytania zawiera nieistotne ciekawostki z historii życia i jako takie można je interpretować jako narzędzie polecające . Jednak odpowiedź mogła być potencjalnie javac -decompilezgodna z wytycznymi SO. Wydaje mi się, że odpowiedzi są nie na temat , a nie pytanie.
SwiftArchitect
2
w tym artykule wyjaśniają, w jaki sposób dokonują inżynierii wstecznej Pokemon Go
anders

Odpowiedzi:

1569

Prosty sposób: skorzystaj z narzędzia online http://www.javadecompilers.com/apk , prześlij apk i pobierz kod źródłowy.


Procedura dekodowania plików .apk, metoda krok po kroku:

Krok 1:

  1. Utwórz nowy folder i skopiuj plik .apk, który chcesz zdekodować.

  2. Teraz zmień nazwę rozszerzenia tego pliku .apk na .zip (np. Zmień nazwę z filename.apk na filename.zip) i zapisz go. Teraz możesz uzyskać dostęp do plików klas.dex itp. Na tym etapie możesz wyświetlić pliki rysunkowe, ale nie pliki XML i Java, więc kontynuuj.

Krok 2:

  1. Teraz rozpakuj ten plik .zip w tym samym folderze (lub NOWYM FOLDERU).

  2. Pobierz dex2jar i wypakuj go do tego samego folderu (lub NOWEGO FOLDERU).

  3. Przenieś plik klas.dex do folderu dex2jar.

  4. Teraz otwórz wiersz polecenia i zmień katalog na ten folder (lub NOWY FOLDER). Następnie napisz d2j-dex2jar classes.dex(w przypadku terminala Mac lub zapisu Ubuntu ./d2j-dex2jar.sh classes.dex) i naciśnij klawisz Enter. Teraz masz plik klas.dex.dex2jar w tym samym folderze.

  5. Pobierz dekompilator Java , kliknij dwukrotnie plik jd-gui, kliknij plik otwarty i otwórz plik class.dex.dex2jar z tego folderu: teraz masz pliki klas.

  6. Zapisz wszystkie pliki klas (w jd-gui kliknij Plik -> Zapisz wszystkie źródła) według nazwy src. Na tym etapie otrzymujesz źródło Java, ale pliki .xml są nadal nieczytelne, więc kontynuuj.

Krok 3:

Teraz otwórz kolejny nowy folder

  1. Umieść plik .apk, który chcesz zdekodować

  2. Pobierz najnowszą wersję apktool ORAZ okno instalacji apktool (oba można pobrać z tego samego linku) i umieść je w tym samym folderze

  3. Otwórz okno poleceń

  4. Teraz uruchom polecenie jak apktool if framework-res.apk(jeśli go nie masz, pobierz tutaj ) i dalej

  5. apktool d myApp.apk (gdzie myApp.apk oznacza nazwę pliku, który chcesz zdekodować)

teraz masz folder plików w tym folderze i możesz łatwo odczytać pliki XML apk.

Krok 4:

To nie jest żaden krok, wystarczy skopiować zawartość obu folderów (w tym przypadku obu nowych folderów) do jednego

i ciesz się kodem źródłowym ...

Prankul Garg
źródło
26
@prankulgarg, w punkcie 5 kroku 3 pojawia się następujący błąd: Nie można uzyskać dostępu do pliku jarfile E: \ apktojava \ testt \\ apktool.jar
55
Zamiast pisać dex2jar klas.dex w cmd wypróbuj d2j-dex2jar klas.dex . Ponieważ dex2jar klas.dex to cmd jest przestarzałe.
Umesh
23
Dla tych, którzy nie mogą znaleźć framework-res.apk. Pobierz go stąd
atulkhatri
12
Ci, którzy nie znaleźli d2j-dex2jar.sh, pobierz dex2jar stąd: dex2jar.googlecode.com/files/dex2jar-0.0.9.15.zip
Reaz Murshed
14
Dla ludzi, którzy utknęli w kroku 2: 4 pobierz tę wersję, a to rozwiąże problem: sourceforge.net/projects/dex2jar/files/dex2jar-2.0.zip/download to zrobiło dla mnie. @delive
siriuseteor77
126

To jest alternatywny opis - na wypadek, gdyby ktoś utknął z powyższym opisem. Wykonaj kroki:

  1. pobierz apktool.bat(lub apktooldla Linux) i apktool_<version>.jarze strony http://ibotpeaches.github.io/Apktool/install/
  2. zmień nazwę pliku jar z góry na apktool.jari umieść oba pliki w tym samym folderze

  3. otwórz dos box ( cmd.exe) i przejdź do tego folderu; sprawdź, czy środowisko Java jest zainstalowane (w przypadku systemu Linux sprawdź także uwagi dotyczące wymaganych bibliotek)
  4. Początek: apktool decode [apk file]

    Wynik pośredni : pliki zasobów,AndroidManifest.xml

  5. rozpakuj plik APK za pomocą wybranego rozpakowywania

    Wynik pośredni :classes.dex

  6. pobierz i wypakuj dex2jar-0.0.9.15.zipz http://code.google.com/p/dex2jar/downloads/detail?name=dex2jar-0.0.9.15.zip&can=2&q=
  7. przeciągnij i upuść classes.dexna dex2jar.bat(lub wpisz <path_to>\dex2jar.bat classes.dexw polu DOS; dla systemu Linux dex2jar.sh)

    Wynik pośredni :classes_dex2jar.jar

  8. rozpakuj classes_dex2jar.jar(może być opcjonalny w zależności od używanego dekompilatora)
  9. dekompiluj pliki klas (np. za pomocą JD-GUI lub DJ Decompiler )

    Wynik : kod źródłowy

Uwaga: dekompilacja pakietów stron trzecich jest niedozwolona; ten przewodnik ma na celu odzyskanie osobistego kodu źródłowego tylko z pliku APK; ostatecznie wynikowy kod najprawdopodobniej zostanie zaciemniony

Trinimon
źródło
6
Mogę również dodać, że istnieje nowoczesna alternatywa dla tej trasy APKTool-> dex2jar-> JD-GUI! Wystarczy wypróbować open-source APK i dekompilator DEX o nazwie Jadx: sourceforge.net/projects/jadx/files. Ma również wersję online tutaj: javadecompilers.com/apk
Andrew Rukin
1
Dozwolone jest (czytaj: legalnie) dekompilowanie dowolnego pliku APK. Zobacz następujące pytanie: stackoverflow.com/questions/9674557/…
Rakete1111
1
Dlaczego apktoolzwracają smalipliki? Jak zdobyć javaplik?
rminaj
108

Chociaż możesz zdekompilować APKplik, prawdopodobnie natrafisz na jeden poważny problem:

nie zwróci napisanego kodu. Zamiast tego zwróci wszystko, co wbudowany jest kompilator, ze zmiennymi o losowych nazwach, a także o funkcjach o nazwach losowych. Próba dekompilacji i przywrócenia go do kodu, który posiadałeś, może zająć znacznie więcej czasu niż rozpoczęcie od nowa.

Niestety takie rzeczy zabiły wiele projektów.
W przyszłości gorąco polecam naukę systemu kontroli wersji, takiego jak CVS , SVN i git itp.

i jak to zrobić.

Ryan Gooler
źródło
19
Pomoże również usługa taka jak Dropbox.
Jeremy Logan,
1
i zawsze jest sposób na nagrywanie płyt CD
JerryGoyal
52

W Sklepie Play pojawiła się także nowa aplikacja, za pomocą której można dekompilować apk (również aplikacje systemowe) i przeglądać kod źródłowy bezpośrednio na smartfonie. Zapisuje pliki na karcie SD, dzięki czemu można je również wyświetlić na komputerze. Nie wymaga rootowania ani niczego innego.

Po prostu zainstaluj i baw się dobrze. Myślę, że to najłatwiejszy sposób na dekompilację aplikacji.

Cilenco
źródło
1
Ten jest najłatwiejszy.
Midhun Vijayakumar
@MidhunVijayakumar, czy możesz przejść do apk do konwersji kodu źródłowego za pomocą tego?
Sajeev
28

apktool to najlepsza rzecz, jaką możesz wypróbować. Zaoszczędziłem trochę xml, ale szczerze mówiąc nie wiem, jak to będzie działać z kodem .java.

Poleciłbym mieć repozytorium kodu, nawet jeśli jesteś jedynym koderem. Korzystam z Project Locker do własnych projektów. Daje darmowe repozytorium svn i git.

Makaron
źródło
Znajdziesz apktool niezbędny, jeśli chcesz wyodrębnić zasoby (tj. Obrazy z aplikacji na Androida. W rzeczywistości narzędzie to wcale nie ma konkurencji!) Wersja online apktool jest dostępna tutaj: www.javadecompilers.com/apktool
Andrew Rukin
23

Te dwa artykuły opisują, jak połączyć użycie apktooli dex2jarpobranie APKpliku i utworzyć projekt Eclipse, który może go zbudować i uruchomić.

http://blog.inyourbits.com/2012/11/extending-existing-android-applications.html

http://blog.inyourbits.com/2012/12/extending-existing-android-applications.html

Zasadniczo ty:

  1. Służy apktooldo pobierania plików zasobów z aplikacji
  2. Użyj, dex2jaraby uzyskać plik jar zawierający klasy w formacie, który spodoba się Eclipse.
  3. Utwórz projekt Eclipse skieruj go na pliki zasobów i nowy plik jar
  4. Otwórz plik jar za pomocą narzędzia zip i usuń istniejące zasoby
  5. Otwórz plik jar za pomocą, JDGuiaby wyświetlić kod źródłowy
  6. Weź dowolny kod źródłowy, którego potrzebujesz JDGui, umieść go w klasie wewnątrz Eclipse i zmodyfikuj
  7. Usuń tę klasę z pliku jar (aby nie zdefiniować tej samej klasy wiele razy)
  8. Uruchom.
Tom Hennen
źródło
2
Wiem, że odpowiedź na to pytanie wciąż jest dostępna, chciałbym przekazać informacje: istnieje dekompilator online dla aplikacji na Androida decompileandroid.com Prześlij apk z lokalnej maszyny, Poczekaj chwilę, pobierz kod źródłowy w formacie zip.
Snehal Masne
2
Brzmi nieźle. A potem strona decompileandroid ma również kopię całego twojego źródła! Sprytny!
DDSports
Jedno pytanie, mam zdekompilowaną aplikację, ale w jd gui nie wiem, czy istnieją prawdziwe klasy Java, czy wiesz, czy aplikacja jest zdekompilowana, czy istnieją prawdziwe klasy Java?
21

apktool będzie działać. Nie musisz nawet znać magazynu kluczy, aby wyodrębnić kod źródłowy (co jest nieco przerażające). Główną wadą jest to, że źródło jest prezentowane w formacie Smali zamiast Java. Inne pliki, takie jak ikona i main.xml, przechodzą jednak doskonale, więc ich odzyskanie może być warte poświęcenia czasu. Ostatecznie najprawdopodobniej będziesz musiał ponownie napisać kod Java od zera.

Możesz znaleźć apktool tutaj . Wystarczy pobrać apktool i odpowiedniego pomocnika (dla Windows, Linux lub Mac OS). Polecam użycie takiego narzędzia, jak 7-zip, aby je rozpakować.

Ryan Berger
źródło
16

Można to zrobić na kilka sposobów:

  1. Użyj funkcji „Profile or Debug APK” w Android Studio 3.0.

    Pozwala otwierać i eksplorować pliki APK w Android Studio. Klasy są dekompilowane na smali. Zasoby nie są wyodrębniane, a rzeczy takie jak „Idź do definicji”, „Znajdź wszystkie odniesienia” i debugowanie nie działają bez kodu źródłowego (Android Studio 3.0 Canary 9). Niektóre dodatkowe funkcje smali mogą współpracować ze smalidea .

    android-studio

    Wybierz plik

    kod

  2. Użyj jadx .

    Jadx dekompiluje kod z danego APK do plików źródłowych Java.

    jdax-img

  3. Użyj apktool .

    Apktool to narzędzie wiersza polecenia, które wyodrębnia zasoby i dekompiluje kod do smali dla danej aplikacji. Możesz również skompilować ponownie za pomocą apktool. Oto przykład tego w akcji:

    $ apktool d test.apk
    I: Using Apktool 2.2.4 on test.apk
    I: Loading resource table...
    I: Decoding AndroidManifest.xml with resources...
    I: Loading resource table from file: 1.apk
    I: Regular manifest package...
    I: Decoding file-resources...
    I: Decoding values */* XMLs...
    I: Baksmaling classes.dex...
    I: Copying assets and libs...
    I: Copying unknown files...
    I: Copying original files...
    $ apktool b test
    I: Using Apktool 2.2.4 on test
    I: Checking whether sources has changed...
    I: Smaling smali folder into classes.dex...
    I: Checking whether resources has changed...
    I: Building resources...
    I: Building apk file...
    I: Copying unknown files/dir...
    
0xcaff
źródło
Próbowałem jadx, ale nawet z prostym helloworld, chociaż dekompiluje go do java, jednak próba otwarcia projektu w Android Studio i skompilowania go z powrotem do apk, kończy się niepowodzeniem z wielu powodów (pliki duplikacji itp.). Czy jest jakaś metoda, która tworzy java, którą można skompilować z powrotem do apk?
ransh
1
@ransh Zwykle używam jadx do odczytu kodu, a następnie apktool do modyfikacji kodu. apktool nie tworzy Java, ale pozwala na ponowną kompilację.
0xcaff,
0xcaff, dzięki za wyjaśnienia. to ma teraz sens. Próbowanie kompilacji java dekompilacji w Android Studio nie działało.
ransh
7

Pokażę inny sposób dekompilacji plików .apk .

Możesz wykonać pierwsze 2 kroki z „ prankul garg ”. Masz więc inne możliwości:

Krok 3':

Pobierz „JD-GUI” , który łatwo znaleźć. Otwórz plik .jar w pliku „jd-gui.exe”. (Plik> Otwórz plik> „znaleziono plik .jar ”). Po tej procedurze możesz zapisać wszystkie zasoby w pliku .zip .

Więc,

1st - Musisz zmienić nazwę pliku .apk na .zip

2-ci - Trzeba dekodowania .dex pliku (jeśli chcesz, dekodować .apk plik dex2jar , to jest to możliwe)

3. - Musisz zdekodować plik .jar za pomocą JD-GUI

Franklin Hirata
źródło
20
Co ta odpowiedź zapewnia, że ​​inni tego nie robią?
Jørgen R,
Naprawdę nie musisz zmieniać nazwy na zip. Mogę otworzyć plik apk bezpośrednio za pomocą 7-zip.
miva2
7

Poniżej narzędzie ONLINE :

http://www.javadecompilers.com/apk

robi WSZYSTKO jednym kliknięciem: zdekompilowane pliki .java + zasoby + xml (w jednym pliku .zip) z bardzo dobrym dekompilatorem (jadx zwraca kod java w miejscach / funkcjach, w których inne kompilacje zwracają komentarze wewnątrz funkcji takiej jak „niemożność dekompilacji” lub niektóre android asembler / kod maszynowy)

Kamil Kiełczewski
źródło
tak, to świetnie, ale zamiast nazw funkcji zmieniło wszystkie nazwy funkcji na CS1001 i tak dalej. Jak więc je rozpoznać. i jeszcze jedno: czy możemy użyć tej zdekompilowanej aplikacji bezpośrednio jako naszego projektu Android Studio, czy to zadziała?
Zia Ur Rahman
to w jakim celu używamy do dekompilacji niektórych apk, jeśli nie możemy użyć ich funkcjonalności w naszych aplikacjach.
Zia Ur Rahman
@ZiaUrRahman Nie wiem. Jednak w moim przypadku dekompiluję kod w celu analizy algorytmu. Czy sprawdzasz, czy zdekompilowany kod z tego narzędzia może zostać skompilowany przez studio Android w pełni automatyczny sposób - czy potrzebujesz jakiegoś „przetwarzania przez człowieka”?
Kamil Kiełczewski
1
Zaimportowałem zdekompilowany projekt do Android Studio, ale nie ma tam oceny, a projekt ma wiele plików, ale nie zrozumiałem, dopóki go nie uruchomiliśmy. Po prostu to nie działało. Muszę sprawić, by zdekompilowany projekt był w pełni funkcjonalny w Android Studio, a następnie uzyskać podstawowe funkcje niektórych z nich, a następnie chcę użyć / osadzić go we własnym projekcie. Czy jest więc jak to zrobić?
Zia Ur Rahman
6

Ta strona https://www.apkdecompilers.com/ zrobiła to automatycznie.

Najpierw wypróbowałem witrynę wymienioną w zaakceptowanej odpowiedzi, ale to nie działało dla mnie.

M. Usman Khan
źródło
Nie mogłem sprowadzaniu mój kod źródłowy Java ... to poja- somethins jak załączonym pliku i ..
Iman kazemayni
@imankazemayni w powyższym linku „przeglądaj” do pliku APK i kliknij „Dekompiluj swój APK”. To zajmie trochę czasu, a następnie powinien dać ci kod źródłowy, jeśli kod nie jest zaszyfrowany.
M. Usman Khan,
czy wiesz, że multidex wpływa na szyfrowanie?
iman kazemayni
6

Osobiście polecam Pokaż aplikację Java na Androida, aby uzyskać kod źródłowy. Możesz pobrać go ze sklepu Play lub stąd

Codelover
źródło
Przeważnie kompilatory online nie działają, ale ta aplikacja działa. Dziękuję
Sunil,
4

Apktool do inżynierii wstecznej zewnętrznych, zamkniętych, binarnych aplikacji na Androida.

Może dekodować zasoby do prawie oryginalnej formy i odbudowywać je po wprowadzeniu pewnych modyfikacji.

Umożliwia debugowanie kodu smali krok po kroku. Ułatwia także pracę z aplikacją ze względu na strukturę plików podobną do projektu i automatyzację niektórych powtarzalnych zadań, takich jak budowanie aplikacji itp.

http://ibotpeaches.github.io/Apktool/

Biswajit Karmakar
źródło
3

apktool jest NAJLEPSZĄ drogą. Istnieje również internetowa usługa apktool: http://www.javadecompilers.com/apktool

Oczywiście istnieją pewne ograniczenia związane z usługą „natura online”: możesz wyodrębnić i zbadać zasoby oraz plik manifestu, ale w tej chwili nie można ponownie skompilować aplikacji.

Jest to jednak bezproblemowy sposób na „otwarcie” aplikacji na Androida.

Andrew Rukin
źródło
3

Możesz wypróbować DexPatcher . Integruje się nawet z Android Studio. Wykorzystuje wewnętrznie Apktool i Dex2Jar .
Z tych narzędzi można również korzystać niezależnie. Apktool dekompiluje apk i wyodrębnia pliki .dex, które można dalej konwertować do jar za pomocą Dex2Jar. Słoik można dekompilować za pomocą JD-GUI . Możesz zobaczyć kod Java za pomocą tego narzędzia. Chociaż nie można zagwarantować podobieństwa zdekompilowanego kodu do kodu rzeczywistego. Na rynku dostępnych jest kilka zaawansowanych narzędzi zaciemniania kodu , które psują kod, co utrudnia jego dekompilację / zrozumienie. na przykład. Postęp

Lakshmikant Deshpande
źródło
Witaj Jak korzystać z DexPatchera w Android Studio?
ravi152
Nie mogę wyjaśnić wszystkiego w komentarzach. Google jest twoim przyjacielem :) Jest też kilka fajnych samouczków na youtube.
Lakshmikant Deshpande
2

na podstawie twojego stanu, jeśli twój Android apk:

Warunek 1: NIE twardnieje (Tencent Legu / Qihoo 360 / ...)

Wybór1: korzystanie z usługi online

Jak na przykład:

za pomocą www.javadecompilers.com

iść do:

automatycznie dekodować z APK do kodu źródłowego Java

kroki:

uploadplik apk + kliknij Run+ poczekaj trochę + kliknij, Downloadaby uzyskać zip + rozpakuj ->

sources/com/{yourCompanyName}/{yourProjectName}

to oczekiwany kod źródłowy Java

Choice2: samodzielnie dekompiluj / crack

użyj odpowiedniego narzędzia do samodzielnej dekompilacji / crack:

użyj jadx/ jadx-guiprzekonwertuj apknajava sourcecode

pobierz jadx-0.9.0.zip, następnie rozpakuj do got bin/jadx, a następnie:

  • tryb wiersza poleceń:
    • w biegu terminalowym: jadx-0.9.0/bin/jadx -o output_folder /path_to_your_apk/your_apk_file.apk
    • folder_wyjściowy pokaże zdekodowany sourcesiresources
      • sources/com/{yourCompanyName}/{yourProjectName} jest twoje oczekiwanie java sourcecode
  • Tryb GUI
    • kliknij dwukrotnie, aby uruchomić jadx-0.9.0/bin/jadx-gui(Linux jadx-gui.sh/ Windows jadx-gui.bat)
    • otwórz apkplik
    • automatycznie dekoduje -> wyświetla oczekiwany kod źródłowy Java
    • save all lub save as Gradle project

na przykład:

Condition2: harden (autor: Tencent Legu / Qihoo 360 / ...)

główna metoda 3 steps:

  1. apk/app to dex
  2. dex to jar
  3. jar to java src

szczegółowe wyjaśnienie:

Krok 1: apk/app to dex

użyj narzędzia ( FDex2/ DumpDex) zrzutu / zaczepienia (jednego lub wielu) dexplików z uruchomionej aplikacji

kroki:

przygotować środowisko

zrzuć dexz uruchomionej aplikacji

  • uruchom, FDex2a następnie kliknij nazwę apk, aby umożliwić później przechwytywanie / przechwytywanie pliku dex

  • (w telefonie / emulatorze) uruchom swoją aplikację
  • znajdź i skopiuj zrzucone zasoby apk do /data/data/com/yourCompanyName/yourProjectName
    • w folderze głównym zwykle znajduje się kilka dexplików

Krok 2: dex to jar

użyj narzędzia tool ( dex2jar) przekonwertować (określony, zawierający logikę aplikacji) dexplik do jarpliku

pobierz dex2jar dostałem dex-tools-2.1-SNAPSHOT.zip , rozpakuj dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh, a następnie

sh dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f your_dex_name.dex

na przykład:

dex-tools-2.1-SNAPSHOT/d2j-dex2jar.sh -f com.xxx.yyy8825612.dex
dex2jar com.xxx.yyy8825612.dex -> ./com.xxx.yyy8825612-dex2jar.jar

Krok 3: jar to java src

użyj jednego z narzędzi:

przekonwertować jarnajava src

dla efektu konwersji ze słoika na java src:

Jadx> Procyon> CRF>>JD-GUI

więc polecam użyć: Jadx/jadx-gui

kroki:

  • kliknij dwukrotnie, aby uruchomić jadx-gui
  • otwórz dexplik
  • File -> save all

na przykład:

eksportowane java src:


Bardziej szczegółowe wyjaśnienie można znaleźć w moim internetowym samouczku na temat chińskiego ebooka :

Crifan
źródło
2

Android studio oferuje analizę dowolnego pliku apk.

1 - Z menu kompilacji wybierz opcję analizy apk i wybierz plik apk. 2 - Spowoduje to powstanie pliku klas.dex i innych plików. 3 - Kliknij na class.dex, który wyświetli listę folderów, pakietów, bibliotek i plików. 4 - Z i ustawienia studia Android instalują wtyczkę o nazwie „Dex to Jar” 5 - kliknij dowolny plik aktywności wyodrębnionego projektu i wybierz dex do jar z menu kompilacji.

Spowoduje to wyświetlenie rzeczywistego kodu pliku Java.

Twoje zdrowie.

Rohit Patil
źródło
1

Najprostszym sposobem jest użycie dekompilatora Apk OneClick. Jest to pakiet narzędzi do dekompilacji i dezasemblacji plików APK (pakiety dla systemu Android).

FUNKCJE

  • Wszystkie funkcje są zintegrowane z menu prawym przyciskiem myszy systemu Windows.
  • Dekompiluj klasy APK do kodów źródłowych Java.
  • Zdemontuj APK, aby smali kod i dekodować jego zasoby.
  • Zainstaluj APK na telefonie, klikając prawym przyciskiem myszy.
  • Ponownie skompiluj APK po edycji kodu smali i / lub zasobów. Podczas ponownej kompilacji:
  • Zoptymalizuj obrazy png
  • Podpisz apki
  • Zipalign

WYMAGANIA

Środowisko Java Runtime Environment (JRE) musi być zainstalowane.

Możesz go pobrać z tego linku Dekompilator Apk OneClick

Ciesz się tym.

Masoud Mokhtari
źródło
1

Znalazłem następujące jako najprostszą metodę:

  1. Zmień nazwę aplikacji na app.apk na app.zip (zmień rozszerzenie z apk na zip)
  2. Wyodrębnij plik zip do folderu
  3. Skorzystaj z narzędzia JADX , aby odczytać kod źródłowy obecny w pliku klas.dex.
Masood Anwar
źródło
1

Jest na to aplikacja i zazwyczaj wystarczy kilka kliknięć i gotowe. https://github.com/Nuvolect/DeepDive-Android

  1. Wybierz aplikacje, w obszarze „Zainstalowane aplikacje” wybierz aplikację. Jeśli go nie ma, możesz załadować pakiet APK.
  2. Wybierz „Wyodrębnij APK”
  3. Wybierz „Rozpakuj APK”
  4. Wybierz „Dekompiluj za pomocą Jadx”. Może to potrwać kilka sekund lub kilka minut, w zależności od prędkości urządzenia

Następnie możesz przejrzeć kod źródłowy, pobrać go na inny komputer z elFinder lub przeszukać go za pomocą Lucene.

Oprócz Jadx ma dekompilatory CFR i Fernflower.

MobileMateo
źródło
0

Przez kilka dni doprowadzałem się do szału, próbując nakłonić dex2jar do pracy na laptopie fedora 31 przeciwko aplikacji, która po prostu nie działała. Ten skrypt w Pythonie 3 zrobił to w kilka minut, a instalacja jd-gui sprawiła, że ​​pliki klas były czytelne dla ludzi.

http://java-decompiler.github.io/

https://github.com/Storyyeller/enjarify

w szczególności oto co uruchomiłem:

# i installed apktool before the rest of the stuff, may not need it but here it is
$> cd /opt
$> sudo mkdir apktool
$> cd apktool/
$> sudo wget https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool
$> sudo wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.4.1.jar
$> sudo mv apktool_2.4.1.jar apktool.jar
$> sudo mv apktool* /usr/bin/
$> sudo chmod a+x /usr/bin/apktool*

# and enjarify
$> cd /opt
$> sudo git clone https://github.com/Storyyeller/enjarify.git
$> cd enjarify/
$> sudo ln -s /opt/enjarify/enjarify.sh /usr/bin/enjarify

# and finally jd-gui
$> cd /opt
$> sudo git clone https://github.com/java-decompiler/jd-gui.git
$> cd jd-gui/
$> sudo ./gradlew build

# I made an alias to kick of the jd-gui with short commandline rather than long java -jar blahblahblah :)
$> echo "jd-gui='java -jar /opt/jd-gui/build/launch4j/lib/jd-gui-1.6.6.jar'" >> ~/.bashrc

Teraz można uzyskać dostęp do następujących plików rumu:

$> enjarify yourapkfile.apk

I aby uruchomić jd-gui:

$> jd-gui

Następnie wystarczy otworzyć pliki zajęć!

RJ Cole
źródło
0

Opracowałem narzędzie - Code Analyzer, działa na iPhone / iPad / Mac, do analizy plików Java / Android, https://decompile.io

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Qing Xu
źródło
0

Użyj tego narzędzia http://www.javadecompilers.com/

Ale ostatnio na rynek wypłynęła nowa fala dekompilatorów: Procyon, CFR, JD, Fernflower, Krakatau, Candle.

Oto lista dekompilatorów prezentowanych na tej stronie:

CFR - bezpłatny, brak kodu źródłowego, http://www.benf.org/other/cfr/ Autor: Lee Benfield

Bardzo dobrze zaktualizowany dekompilator! CFR jest w stanie dekompilować nowoczesne funkcje Java - moduły Java 9, lambda Java 8, przełączniki Java 7 String itp. Nawet porządnie zmieni pliki klas z innych języków JVM z powrotem w java!

JD - bezpłatny tylko do użytku niekomercyjnego, http://jd.benow.ca/ Autor: Emmanuel Dupuy

Zaktualizowany w 2015 roku. Ma własny interfejs wizualny i wtyczki do Eclipse i IntelliJ. Napisane w C ++, więc bardzo szybko. Obsługuje Java 5.

Procyon - open-source, https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler Autor: Mike Strobel

Fernflower - open-source, https://github.com/fesh0r/fernflower Autor: Egor Ushakov

Zaktualizowano w 2015 r. Bardzo obiecujący analityczny dekompilator Java, teraz staje się integralną częścią IntelliJ 14. ( https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler ) Obsługuje Javę do wersji 6 (Adnotacje, ogólne, wyliczenia)

JAD - podany tutaj tylko z powodów historycznych. Bezpłatnie, brak kodu źródłowego, lustro do pobrania jad Autor: Pavel Kouznetsov

Faxriddin Abdullayev
źródło