Ompakking av APK-fil ved hjelp av baksmali og smali

Jeg er student interessert i Android Security. Jeg prøvde å endre en APK-fil ved hjelp av baksmali og smali. Imidlertid er jeg ikke i stand til å kjøre den ompakkede appen på mobilen min. Når jeg klikker på ikonet står det «Dessverre har testen stoppet» og eksisterer. (Selv ikonet til appen ble endret, nå ser jeg standard android-ikonet i stedet for det gamle ekte fargerike ikonet til appen)

Hva kan være årsaken til dette? Egentlig har jeg ikke endret kode for apk-filen. Jeg pakket bare apk for å få dex-fil, så konverterte jeg den til smali ved hjelp av baksmali.jar, og deretter tilbake til dex ved hjelp av smali.jar. Til slutt glidelåst og signert.

Hva jeg har gjort i detalj:

  1. Komprimer apk-filen

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

    $ baksmali -x classes.dex -o smaliClasses 
  3. Konverterte klassene tilbake til classes.dex (erstattet gammel classes.dex, faktisk la jeg ikke til noen ny kode i smali-filen . Jeg ville vite om dette fungerer først).

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

    $ zip test.zip AndroidManifest.xml classes.dex res META-INF resourses.arsc 
  5. Gi nytt navn til test.zip til test.apk

    $ mv test.zip test.apk 

Nå tror jeg at jeg må signere APK-en igjen, rett meg hvis jeg tar feil her.

Redigert

:

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

  2. Jeg prøvde å installere den nye pakkede APK-en. Ved hjelp av ADB-skall. Adb shell viste at den ble installert. Imidlertid er jeg ikke i stand til å kjøre den ompakkede appen i mobil. Appen krasjer når jeg klikker på den. Det står «Dessverre har testen stoppet».

Hvorfor kjører ikke den ompakkede appen? Jeg forstår ikke hva jeg mangler her?

Redigert :

Jeg prøvde å pakke om den samme appen på nytt ved hjelp av apktool. Jeg hentet smali-filene ved hjelp av den og pakket om. Men hvorfor ompakking ikke fungerer med baksmali, smali, zip og signapk. Er glidelås det virkelige problemet i denne prosedyren? Jeg ser at størrelsen på appen reduseres drastisk når jeg zip den og omdøper den til .apk sammenlignet med den opprinnelige apk-filen: |

Kommentarer

  • Du bør sjekke loggkatten din for mer informasjon, hvis mulig, legg også inn krasjloggen.
  • @xDragonZ , Jeg har redigert innlegget. Denne gangen prøvde jeg å installere ved hjelp av » adb installere » og signerte ved hjelp av signapk.jar. Denne gangen ble appen installert i telefonen. Når jeg imidlertid klikker på appen, krasjer den og sier » » Dessverre har appen stoppet «. En ting jeg la merke til er at størrelsen på den ompakkede APK-en er mindre enn originalen, er det årsaken til at endringen er størrelse? Noen anelse om hvorfor appen krasjer? Hvordan får jeg en logg på dette? Tusen takk.
  • Kanskje du også trenger å zipjustere filen?
  • Er deodexing (baksmali -x option) med vilje? Du ser ut til at siden du utfører dette alternativet, uten å oppgi en » bootclasspath » du ‘ kommer til å få litt merkelig smali-kode som kanskje ikke kan konverteres tilbake til en dex-fil. Bare fjern bare META-INF-mappen før du zipper og prøver å gjøre zip -r unsigned.apk * inne i katalogen med alt innholdet. Hvis dette fremdeles krasjer, kan du prøve å legge ut logcat-utdata
  • Så av fem svar er ikke ett eneste akseptabelt?

Svar

Jeg bruker apktool for dette formålet, og et kort lite par skallskripter for dekompilering og rekompilering av APK-er:

  • 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 

Bruk av apktool har fordelen av å kunne se og redigere alle ressursene også som den dekodede manifestfilen.

Kommentarer

  • Dette er den eneste metoden som fungerer for meg. Jeg ‘ har prøvd dusinvis, ingen fungerte. Tusen takk.

Svar

Etter å ha spilt med smali / baksmali fikk jeg det til å fungere. Jeg tror du ikke brukte rekursivt flagg når du zippet . Dette førte til at res-mappen var tom og forårsaket krasj. Også jeg kjører zipalign etter signering av apk.

Fremgangsmåte:

  1. Pakk ut
  • Baksmali
    $ baksmali classes.dex -o smaliClasses
  • Smali
    $ smali smaliClasses -o classes.dex
  • Zip -r
    $ zip -r test.apk AndroidManifest.xml classes.dex res/ resources.arsc
  • Jarsign
    $ java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test-patched.apk
  • Zipalign
    $ zipalign -v 4 test-patched.apk final-apk.apk
  • Profitt 🙂
  • Svar

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

    Siden jobben er gjort riktig med bruk av apktool, ser det ut til at noe går galt med zip-prosessen.

    Etter kan du bekrefte at innholdet i den nye APK-en er identisk (når det gjelder filnavn og struktur) med innholdet i den opprinnelige?

    EDIT: også, siden filen er en .dex-fil, jeg tror ikke du trenger alternativet -x i baksmali.

    EDIT2: Når du pakker om, trenger du ikke å inkludere META-INF-katalogen i zip-filen. vil bli opprettet ved signering av t filen.

    Svar

    Bruk av deodex-alternativet «-x» er ikke nødvendig siden du ikke utfører baksmali på en odex. Bare kjør baksmali på dex-filen. Du kan også bruke apktool til å pakke ut / pakke alt, noe jeg synes er lettere.

    Svar

    • Hvorfor filstørrelsen ble redusert?

      Fordi apktool optimaliserte den mens du kompilerte på nytt.

    • Hvorfor den krasjet?

      Mulige årsaker til krasj:

      1. Du kan ikke utføre alle trinnene i riktig rekkefølge.

      2. Programmet kan ha en CRC sjekk for filstørrelse.

    Verktøyet fullautomatisert med GUI .. Det er oppdatert med nyere Android-rammeverk, så ingen ressursdekompileringsfeil og bedre håndtering.

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

    Og dette lille papiret som inkluderer Tuts for å reversere Android-apper og all grunnleggende informasjon om å endre / håndtere apk.

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

    Svar

    Hvis du er interessert i Anroid-apper RE, skal du finne bedre verktøy å bruke regelmessig.

    Vel, et av verktøyene er Android Cracker Kit (som jeg utviklet), det gir deg alt det du trenger: Android Cracker Kit (ACK):

    Kommentarer

    Svar

    Jeg bruker APK Editor Pro til å redigere APK-er rett fra Android-enheten min!

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

    Kommentarer

    • Flott tips. Den genererte apk installeres ikke riktig med det ovennevnte (de) kompileringsskriptet (hvorfor?), Men det erstattet class.dex.

    Svar

    Trinn 4. Du glemte å gjøre det rekursivt. Den kopierer ikke filene i / res når du ziper den. Legg til -r-alternativet.

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

    Trinn 6. Du trenger ikke å signere den igjen siden du pakket den med META-INF-katalogen til apk allerede. Signeringsinfo er inne i META-INF.

    Legg igjen en kommentar

    Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *