Uzyskaj kod źródłowy z pliku .apk? [Zamknięte]

21

Czy mając plik apk, czy jest jakiś sposób, aby uzyskać jego kod źródłowy?

eldarerathis
źródło
7
Wcześniej sprawdziłeś, czy pakiet jest open source?
ott--
.Apk to po prostu plik .zip. Niestety, każda kompilacja aplikacji do „wydania” prawdopodobnie będzie chroniona przez ProGuard .
Daniel López
@MatthewRead The Op pyta, czy mógłby pobrać kod z interfejsu API, a ja odpowiedziałem, jak nazywa się to zjawisko i sposoby, aby przynajmniej zapobiec tworzeniu podobnej aplikacji. Nie mówi, jak zapobiec otrzymaniu kodu. Tak, to odpowiada na pytanie.
Human Being

Odpowiedzi:

11

Jeśli masz szczęście, a Twój .apkplik nie był chroniony przez Proguard lub analogowy, możesz użyć narzędzia APK . Jest to narzędzie do inżynierii wstecznej zewnętrznych, zamkniętych, binarnych aplikacji na Androida.

HitOdessit
źródło
Apktool generuje tylko kod Smali, a nie kod Java - to duża różnica.
Robert
2

Z jednego z wiki społeczności autorstwa Parnkul Garg w SO :


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.dexi naciśnij 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. Pobierz framework-res.apk i umieść go w tym samym folderze (nie wszystkie pliki apk potrzebują tego pliku, ale nie boli)

  4. Otwórz okno poleceń

  5. Przejdź do katalogu głównego APKtool i wpisz następujące polecenie: apktool if framework-res.apk

  6. 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 ...

użytkownik3226511
źródło