Přebalení souboru APK pomocí baksmali a smali

Jsem student, který se zajímá o zabezpečení systému Android. Snažil jsem se upravit soubor APK pomocí baksmali a smali. Přebalenou aplikaci však nemohu spustit v mobilu. Když kliknu na ikonu s nápisem „Bohužel test byl zastaven“ a existuje. (I ikona aplikace se změnila, nyní se mi místo staré skutečné barevné ikony aplikace zobrazuje výchozí ikona systému Android.)

Co by mohlo být důvodem? Vlastně jsem ještě nezměnil kód souboru apk. Právě jsem rozbalil apk, abych získal soubor dex, pak jsem jej převedl na smali pomocí baksmali.jar a pak zpět do dex pomocí smali.jar. Nakonec zazipováno a podepsáno.

Co jsem udělal podrobně:

  1. Dekomprimujte soubor apk

    $ Unzip test.apk 
  2. Převést 1classes.dex1 na smali

    $ baksmali -x classes.dex -o smaliClasses 
  3. Převede třídy zpět na classes.dex (nahradil staré classes.dex, ve skutečnosti jsem do souboru smali nepřidal žádný nový kód . Chtěl jsem vědět, zda to funguje jako první.)

    $ smali smaliClasses -o classes.dex 
  4. Zipujte všechny soubory do test.zip

    $ zip test.zip AndroidManifest.xml classes.dex res META-INF resourses.arsc 
  5. Přejmenovat test.zip na test.apk

    $ mv test.zip test.apk 

Nyní se domnívám, že musím soubor APK znovu podepsat. Pokud se mýlím, opravte mě zde.

Upraveno

:

  1. java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test-patched.apk

  2. Pokusil jsem se nainstalovat nový přebalený soubor APK. Používání prostředí adb. Adb shell ukázal, že byl úspěšně nainstalován. Přebalenou aplikaci však nemohu spustit v mobilu. Aplikace klepne, když na ni kliknu. Říká „Bohužel test byl zastaven“.

Proč přebalená aplikace nefunguje? Nerozumím tomu, co mi zde chybí?

Upraveno :

Zkoušel jsem přebalit stejnou aplikaci pomocí apktool. Extrahoval jsem pomocí něj soubory smali a přebalil. Ale proč přebalování nefunguje s baksmali, smali, zip a signapk. Je v tomto postupu skutečný problém se zipem? Vidím, že velikost aplikace se drasticky sníží, když ji zazipuji a přejmenuji na .apk ve srovnání s původním souborem apk: |

Komentáře

  • Další informace byste měli zkontrolovat ve svém logcatu, pokud je to možné, pošlete také protokol o selhání.
  • @xDragonZ , Upravil jsem příspěvek. Tentokrát jsem se pokusil nainstalovat pomocí “ adb install “ a podepsal jsem se pomocí signapk.jar. Tentokrát byla aplikace nainstalována v telefonu. Když však kliknu na aplikaci, dojde k chybě a řekne “ “ Bohužel aplikace přestala „. Jedna věc, kterou jsem si všiml, je velikost přebaleného apk je menší než původní, je důvodem této změny nástroje zip je velikost? Nějaká stopa o tom, proč aplikace havaruje? Jak k tomu dostanu protokol? Mockrát vám děkuji.
  • Možná také potřebujete soubor zazipovat?
  • Deodexujete (baksmali -x option) záměrně? Zdá se, že vzhledem k tomu, že provádíte tuto možnost, aniž byste poskytli “ bootclasspath “ vy ‚ získáme nějaký podivný kód smali, který nemusí být schopen převést zpět na soubor dex. Stačí pouze odstranit složku META-INF před zipováním a pokusem o zip -r unsigned.apk * v adresáři se vším obsahem. Pokud to stále selže, zkuste odeslat výstup logcat
  • Takže z pěti odpovědí není přijatelná ani jedna?

Odpověď

Pro tento účel používám apktool a krátký pár párů skriptů pro dekompilaci a překompilování APK:

  • decompile-apk

    #!/bin/bash -e if ! [ "$1" ]; then echo "usage: $0 <file.apk>" exit -1 fi fn=${1%.apk} target_apk=$fn.apk apktool d -f "$target_apk" -o smali echo "Done." 
  • compile-apk

    #!/bin/bash -e if ! [ "$1" ]; then echo "usage: $0 <original.apk>" exit -1 fi fn=${1%.apk} rm -f $fn.unaligned.apk $fn.smali.apk rm -rf smali/build apktool b -f smali/ -o $fn.unaligned.apk jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore -storepass android $fn.unaligned.apk androiddebugkey zipalign -v 4 $fn.unaligned.apk $fn.smali.apk rm -rf smali/build 

Použití apktool má tu výhodu, že je možné zobrazit a upravit také všechny zdroje jako dekódovaný soubor manifestu.

Komentáře

  • Tato jediná metoda, která pro mě funguje. ‚ jsem vyzkoušel desítky, žádný nefungoval. Mnohokrát děkuji.

Odpovědět

Po hraní se smali / baksmali jsem začal fungovat. Myslím, že jste při zipování nepoužili rekurzivní příznak . To způsobilo, že složka res byla prázdná, což způsobilo selhání. Také jsem spustit zipalign po podepsání apk.

Kroky:

  1. Rozbalte
    $ unzip test.apk
  2. Baksmali
    $ baksmali classes.dex -o smaliClasses
  3. Smali
    $ smali smaliClasses -o classes.dex
  4. zip -r
    $ zip -r test.apk AndroidManifest.xml classes.dex res/ resources.arsc
  5. Jarsign
    $ java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test-patched.apk
  6. Zipalign
    $ zipalign -v 4 test-patched.apk final-apk.apk
  7. zisk 🙂

odpověď

Nemohu komentovat kvůli reputace, takže ji sem zveřejním.

Jelikož je práce s použitím apktoolu prováděna správně, zdá se mi, že se při procesu zip něco děje.

Poté přebalení aplikace, můžete ověřit, že obsah nového APK je totožný (pokud jde o názvy a strukturu souborů) s obsahem původního?

EDIT: také, protože soubor je soubor .dex, nemyslím si, že v baksmali potřebujete volbu -x.

EDIT2: Při přebalování nemusíte do souboru zip zahrnovat adresář META-INF. bude vytvořeno při podpisu t soubor.

Odpověď

Použití možnosti deodex „-x“ není nutné, protože neprovádíte baksmali na odex. Stačí spustit baksmali na soubor dex. Můžete také použít apktool k vybalení / zabalení všeho, což je podle mě snazší.

Odpověď

  • Proč se zmenšila velikost souboru?

    Protože apktool jej optimalizoval při překompilování.

  • Proč se zhroutil?

    Možné důvody selhání:

    1. Nelze provést všechny kroky ve správném pořadí.

    2. Aplikace může mít CRC zkontroluje velikost souboru.

Nástroj Plně automatizovaný s grafickým uživatelským rozhraním .. Je aktualizován nedávným rámcem systému Android, takže nedochází k chybě dekompilace zdrojů a lepší zacházení.

https://www.dropbox.com/s/02ifm4veotiuik1/apkstudio-2.0.3b-windows-Updates-Framework.rar?dl=0

A tento malý papír, který zahrnuje výukové programy pro reverzní aplikace pro Android a všechny základní informace týkající se úpravy / zpracování apk.

https://www.dropbox.com/s/nkkmp4ait71kjku/Android%20Application%20Reversing%20Via%20Android%20Mobile.pdf?dl=0

Odpověď

Pokud vás zajímají Anroid aplikace RE, najdete lepší nástroje, které budete pravidelně používat.

No, jedním z nástrojů je Android Cracker Kit (který jsem vyvinul), který vám poskytne vše, co potřebujete: Android Cracker Kit (ACK):

Komentáře

Answer

K úpravám používám APK Editor Pro Soubory APK přímo z mého zařízení Android!

https://play.google.com/store/apps/details?id=com.gmail.heagoo.apkeditor.pro

Komentáře

  • Skvělý tip. Vygenerovaný apk se nenainstaluje správně s výše uvedeným (de) kompilačním skriptem (proč?), Ale nahradil ho classes.dex.

Odpovědět

Krok 4. Zapomněli jste to udělat rekurzivně. Při zipování soubory nebude zkopírováno do / res. Přidejte volbu -r.

zip -r test.zip AndroidManifest.xml classes.dex res META-INF resources.arsc 

Krok 6. Nemusíte to podepisovat znovu, protože jste to již znovu zabalili do adresáře META-INF do svého apk. Podepisovací údaje jsou uvnitř META-INF.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *