Ompakning af APK-fil ved hjælp af baksmali og smali

Jeg er studerende interesseret i Android Security. Jeg prøvede at ændre en APK-fil ved hjælp af baksmali og smali. Imidlertid er jeg ikke i stand til at køre den ompakkede app på min mobil. Når jeg klikker på ikonet står der “Desværre er testen stoppet” og findes. (Selv ikonet for appen blev ændret, nu ser jeg standard android-ikonet i stedet for det gamle rigtige farverige ikon for appen)

Hvad kan være årsagen til dette? Faktisk har jeg ikke engang ændret koden for apk-filen. Jeg pakket bare apk ud for at få dex-fil, så konverterede jeg den til smali ved hjælp af baksmali.jar og derefter tilbage til dex ved hjælp af smali.jar. Endelig lynlås og signeret.

Hvad jeg har gjort i detaljer:

  1. Dekomprimer apk-filen

    $ Unzip test.apk 
  2. Konverter 1classes.dex1 til smali

    $ baksmali -x classes.dex -o smaliClasses 
  3. Konverterede klasserne tilbage til classes.dex (erstattede gamle classes.dex, faktisk tilføjede jeg ingen ny kode til smali-filen . Jeg ville gerne vide, om dette fungerer først).

    $ smali smaliClasses -o classes.dex 
  4. Zip alle filerne til test.zip

    $ zip test.zip AndroidManifest.xml classes.dex res META-INF resourses.arsc 
  5. Omdøb test.zip til test.apk

    $ mv test.zip test.apk 

Nu tror jeg, at jeg er nødt til at underskrive APKen igen, bedes du rette mig, hvis jeg tager fejl her.

Redigeret

:

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

  2. Jeg forsøgte at installere den nye ompakket APK. Brug af ADB-skal. Adb-shell viste, at den var installeret. Jeg er dog ikke i stand til at køre den ompakkede app i mobil. Appen går ned, når jeg klikker på den. Der står “Desværre er testen stoppet”.

Hvorfor kører ikke den genpakkede app? Jeg forstår ikke, hvad jeg mangler her?

Redigeret :

Jeg forsøgte at pakke om den samme app igen ved hjælp af apktool. Jeg udpakkede smali-filerne ved hjælp af den og pakket om. Men hvorfor genpakning ikke fungerer med baksmali, smali, zip og signapk. Er zip det virkelige problem i denne procedure? Jeg ser, at størrelsen på appen reduceres drastisk, når jeg zip den og omdøber den til .apk sammenlignet med den originale apk-fil: |

Kommentarer

  • Du bør tjekke din logcat for at få flere oplysninger, hvis det er muligt, skal du også sende crashloggen.
  • @xDragonZ , Jeg har redigeret indlægget. Denne gang forsøgte jeg at installere ved hjælp af ” adb installere ” og underskrev med signapk.jar. Denne gang blev appen installeret i telefonen. Men når jeg klikker på appen, går det ned og siger ” ” Desværre er appen stoppet “. En ting, jeg bemærkede, er, at størrelsen på den genpakkede apk er mindre end den originale, er det zip-værktøjets grund til, at ændringen er størrelse? Nogen anelse om, hvorfor appen går ned? Hvordan får jeg en log til dette? Mange tak.
  • Måske skal du også zipjustere filen?
  • Er du deodexing (baksmali -x option) med vilje? Det ser ud til, at da du udfører denne mulighed uden at give en ” bootclasspath “, skal du ‘ vil få nogle ulige smali-koder, der muligvis ikke kan konverteres tilbage til en dex-fil. Fjern også bare META-INF-mappen inden du zipper og prøver at gøre zip -r unsigned.apk * inde i biblioteket med alt indholdet. Hvis dette stadig går ned, skal du prøve at sende logcat-output
  • Så ud af fem svar er ikke et enkelt acceptabelt?

Svar

Jeg bruger apktool til dette formål og et kort lille par shell-scripts til dekompilering og rekompilering af APKer:

  • dekompilering-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." 
  • kompilering-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 

Brug af apktool har fordelen ved også at kunne se og redigere alle ressourcerne som den dekodede manifestfil.

Kommentarer

  • Dette er den eneste metode, der fungerer for mig. Jeg ‘ har prøvet snesevis, ingen fungerede. Mange tak.

Svar

Efter at have spillet med smali / baksmali fik jeg det til at fungere. Jeg tror, du ikke brugte rekursivt flag, da du zippede . Dette medførte, at res-mappen var tom, hvilket forårsagede nedbruddet. Jeg kører også zipalign efter at have underskrevet apk.

Trin:

  1. Pakk ud $ 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. Profit 🙂

Svar

Jeg kan ikke kommentere pga. omdømme, så jeg vil sende det her.

Da jobbet udføres korrekt ved brug af apktool, ser det ud til, at der går noget galt med zip-processen.

Efter ompakning af appen, kan du kontrollere, at indholdet af den nye APK er identisk (for så vidt angår filnavne og struktur) med indholdet af den originale?

EDIT: også, da filen er en .dex-fil, jeg tror ikke, at du har brug for -x-indstillingen i baksmali.

EDIT2: Når du ompakker, behøver du ikke at medtage META-INF-biblioteket i zip-filen. oprettes ved underskrivelse af t han fil.

Svar

Brug af deodex-indstillingen “-x” er ikke påkrævet, da du ikke udfører baksmali på en odex. Kør bare baksmali på dex-filen. Du kan også bruge apktool til at pakke ud / pakke alt, hvilket jeg synes er lettere.

Svar

  • Hvorfor filstørrelsen reduceres?

    Fordi apktool optimerede den under kompilering igen.

  • Hvorfor styrtede den ned?

    Mulige årsager til nedbrud:

    1. Du kan ikke udføre alle trin i den rette rækkefølge.

    2. Applikationen kan have en CRC kontrollerer filstørrelse.

Værktøj Fuldt automatiseret med GUI .. Det opdateres med nyere Android-ramme, så ingen ressource-dekompileringsfejl og bedre håndtering.

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

Og dette lille papir, som inkluderer tuts for at vende android-apps og alle grundlæggende oplysninger om ændring / håndtering af apk.

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

Svar

Hvis du er interesseret i Anroid apps RE, skal du finde bedre værktøjer til regelmæssig brug.

Nå, et af værktøjerne er Android Cracker Kit (som jeg udviklede), det giver dig alt hvad du har brug for: Android Cracker Kit (ACK):

Kommentarer

Svar

Jeg bruger APK Editor Pro til at redigere APK-filer lige fra min Android-enhed!

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

Kommentarer

  • Fantastisk tip. Den genererede apk installeres ikke korrekt med ovenstående (de) kompilerings script (hvorfor?), Men det erstattede klasserne. Dex gjorde det.

Svar

Trin 4. Du har glemt at gøre det rekursivt. Det kopierer ikke filerne i / res, når du zip det. Tilføj -r mulighed.

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

Trin 6. Du behøver ikke underskrive det igen da du allerede har pakket det med META-INF-biblioteket til din apk allerede. Signeringsoplysninger findes i META-INF.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *