Dekompiluj plik APK, zmodyfikuj go, a następnie przekompiluj

Muszę zmodyfikować istniejący APK, zmodyfikować źródła, a następnie przekompilować go.

  • mogę go dekompilować używając dex2jar lub apktool, działa świetnie
  • z pliku jar mogę uzyskać źródła Javy (używając JD-gui)
  • wtedy mogę zmodyfikować pliki Javy

Ale teraz chciałbym wiedzieć, jak przekompilować pliki Javy i umieścić je z powrotem w pliku jar! (część jar powinna być łatwa, głównym problemem wydaje się być rekompilacja plików java dla android)

Wiem, że innym rozwiązaniem jest użycie apktool, a następnie MODYFIKACJA PLIKÓW smali, ale wydaje się to być bardzo skomplikowane, gdy chcemy dodać dużo kodu!

Moja aplikacja jest podstawowym a HelloWorld whitout obfuscation.

Author: darkheir, 2012-09-11

9 answers

Dzięki Chrisowi Jester-Young udało mi się to zrobić!

Myślę, że sposób, w jaki udało mi się to zrobić, zadziała tylko na naprawdę prostych projektach:

  • z Dex2jar otrzymałem słoik.
  • z JD-gui konwertuję mój Jar z powrotem na pliki Java.
  • Z apktool mam manifest Androida i pliki ressources

  • W Eclipse tworzę nowy projekt z tymi samymi ustawieniami co Stary (sprawdzanie wszystkich informacji w manifeście plik)

  • Kiedy projekt jest tworzony, zamieniam wszystkie zasoby i manifest na te, które uzyskałem za pomocą apktool
  • wklejam pliki Javy wydobyte z Jar w folderze src (dotyczy pakietów)
  • modyfikuję te pliki za pomocą tego, czego potrzebuję
  • wszystko się układa!

/!\ upewnij się, że usunąłeś Stary apk z urządzenia zostanie wyrzucony błąd stwierdzający, że podpis apk nie jest taki sam jak stary!

 32
Author: darkheir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-11 13:35:27

Wiem, że odpowiedź na to pytanie jest nadal, chciałbym przekazać informację.

Jest dekompilator online dla android apks

  1. Upload apk from local machine
  2. poczekaj chwile
  3. Pobierz kod źródłowy w formacie zip

Nie wiem, czy to wiarygodne.

@darkheir odpowiedź jest ręcznym sposobem dekompilacji apk. Pomaga nam zrozumieć różne etapy tworzenia Apk.

Inny De-kompilator APK online @Andrew Rukin : http://www.javadecompilers.com/apk

Nadal warto. Czapki z głów dla twórców.

 30
Author: edwin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-16 14:55:38
  1. Najpierw pobierz narzędzie dex2jar z poniższego linku http://code.google.com/p/dex2jar/downloads/list

  2. Rozpakuj utworzony plik dex2jar folder

  3. Teraz możesz wybrać plik apk i zmienić jego rozszerzenie .apk do .zip po zmianie rozszerzenia wydaje się być plikiem zip następnie rozpakuj ten plik zip, który znalazłeś classes.dex plik

  4. Teraz wybierz zajęcia.plik dex i umieść go w dex2jar folderze

  5. Teraz otwórz cmd okno i wpisz ścieżkę folderu dex2jar

  6. Teraz wpisz polecenie dex2jar.bat classes.dex i naciśnij Enter

  7. Teraz otwórz dex2jar folder, który znalazłeś classes_dex2jar.jar plik

  8. Następnie pobierz narzędzie Java decompiler z poniższego linku http://java.decompiler.free.fr/?q=jdgui

  9. Ostatni krok Otwórz plik classes_dex2jar.jar W java decompiler tool teraz możesz zobaczyć kod apk

 7
Author: vikram wadhwa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-20 12:54:50

Wiem, że odpowiedź na to pytanie została udzielona i nie staram się tutaj udzielić lepszej odpowiedzi. Po prostu podzielę się moim doświadczeniem w tym temacie.

Kiedyś zgubiłem kod i miałem tylko plik apk. Zdekompilowałem go za pomocą poniższego narzędzia i to sprawiło, że mój dzień.

Narzędzia te muszą być używane w takiej sytuacji, w przeciwnym razie jest to nieetyczne, a czasem nawet nielegalne (kradzież cudzego wysiłku). Więc proszę, używaj go mądrze.

To moje ulubione narzędzia do robienia że:

Javadecompilers.com

I aby uzyskać apk z google play możesz go wygooglować lub sprawdzić te strony:

W dniu zamieszczenia tej odpowiedzi przetestowałem wszystkie linki i działało idealnie dla mnie.

Uwaga: dekompilacja Apk nie jest skuteczna w przypadku kodu proguarded. Ponieważ Proguard kurczy i zaciemnia kod i Zmień nazwy klas na nonsensowne nazwy, które sprawiają, że dość trudno zrozumieć kod.

Bonus:

Podstawowy samouczek korzystania z Proguard :

 2
Author: MBH,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-16 14:15:07

dex2jar z JD-gui Da wszystkie pliki źródłowe Javy, ale nie są one dokładnie takie same. Są prawie równoważne .pliki klas (Nie 100%). Więc jeśli chcesz zmienić kod dla pliku apk:

  • Dekompilacja przy użyciu apktool

  • apktool wygeneruje plik smali (Assembly version of dex) dla każdego pliku java o tej samej nazwie.

  • Smali jest zrozumiałe dla człowieka, dokonać zmian w odpowiednich plik, przekompiluj używając tego samego apktool(apktool b Nw.apk <Folder Containing Modified Files>)

 0
Author: Pradeep Tiwari,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-06 06:01:20

To jest sposób:

  1. Użycie {[2] } do dekodowania:

    $ apktool d -f {apkfile} -o {output folder}
    
  2. Następnie, używając JADX (na github.com/skylot/jadx)

    $ jadx -d {output folder} {apkfile}
    

2 narzędzia rozpakowują i dekompilują do tego samego folderu wyjściowego.

Łatwy sposób: za pomocą Dekompilatora APK online

 -1
Author: quyet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-15 01:20:18

Należy zmienić rozszerzenie pliku z .apk na .zip. Następnie rozpakuj pliki, zmodyfikuj je, a następnie skompresuj do .zip i pamiętaj, aby zmienić nazwę rozszerzenia z powrotem na .apk.

Do tego nie musimy używać żadnego komputera. Wolę ES file explorer, który może również pomóc w przeglądaniu i edycji kodu źródłowego.
 -2
Author: Pavanpwm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-16 15:11:43

Wiem, że odpowiedź na to pytanie jest nadal i nie staram się być mądry tutaj. Będę chciał podzielić się inną metodą na ten temat.

Pobierz aplikacje z apk grail

APK Grail dostarczający bezpłatny plik zip aplikacji.

 -2
Author: Thomas P. Wilt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-01 06:18:30

Użyj luckypatcher i usunąć swoją weryfikację licencji niż nie trzeba podpisywać apk. Użyj WINRAR, aby zastąpić zmodyfikowany kod źródłowy bez dekompilacji apk.

 -3
Author: meet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-16 16:05:39