Ompaketera APK-fil med baksmali och smali

Jag är en student som är intresserad av Android Security. Jag försökte ändra en APK-fil med baksmali och smali. Jag kan dock inte köra den ompackade appen i min mobil. När jag klickar på ikonen står det ”Tyvärr har testet slutat” och finns. (Till och med ikonen för appen ändrades, nu ser jag standard-Android-ikonen istället för den gamla riktiga färgglada ikonen för appen)

Vad kan vara orsaken till detta? Egentligen har jag inte ens modifierat koden för apk-filen. Jag packade bara upp apk för att få dex-fil, sedan konverterade jag den till smali med baksmali.jar och sedan tillbaka till dex med smali.jar. Slutligen blixtlås och signerad.

Vad jag har gjort i detalj:

  1. Dekomprimera apk-filen

    $ Unzip test.apk 
  2. Konvertera 1classes.dex1 till smali

    $ baksmali -x classes.dex -o smaliClasses 
  3. Konverterade klasserna tillbaka till classes.dex (ersatte gamla classes.dex, jag lade faktiskt inte till någon ny kod i smali-filen . Jag ville veta om detta fungerar först.

    $ smali smaliClasses -o classes.dex 
  4. Zippa alla filer till test.zip

    $ zip test.zip AndroidManifest.xml classes.dex res META-INF resourses.arsc 
  5. Byt namn på test.zip till test.apk

    $ mv test.zip test.apk 

Nu tror jag att jag måste underteckna APK igen, korrigera mig om jag har fel här.

Redigerad

:

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

  2. Jag försökte installera den nya ompackade APK-filen. Använda ADB-skal. Adb-skalet visade att det lyckades installerat. Men jag kan inte köra den ompackade appen i mobil. Appen kraschar när jag klickar på den. Det står ”Tyvärr har testet slutat”.

Varför går inte den ompackade appen igång? Jag förstår inte vad jag saknar här?

Redigerad :

Jag försökte packa om samma app med hjälp av apktool. Jag extraherade smali-filerna med den och packade om den. Men varför ompackning inte fungerar med baksmali, smali, zip och signapk. Är blixtlås det verkliga problemet i denna procedur? Jag ser att appens storlek minskas drastiskt när jag zipar den och byter namn på den till .apk jämfört med den ursprungliga apk-filen: |

Kommentarer

  • Du bör kontrollera din loggkatt för mer information, om möjligt, skriv också kraschloggen.
  • @xDragonZ , Jag har redigerat inlägget. Den här gången försökte jag installera med ” adb install ” och undertecknade med signapk.jar. Den här gången installerades appen i telefonen. Men när jag klickar på appen kraschar det och säger ” ” Tyvärr har appen stoppat ”. En sak som jag märkte är att storleken på den ompackade apk är mindre än originalet, är det zip-verktygets anledning till att förändringen är storlek? Någon aning om varför appen kraschar? Hur får jag en logg för detta? Tack så mycket.
  • kanske du också behöver zipjustera filen?
  • Deodexar du (baksmali -x option) avsiktligt? Du verkar som om du utför det här alternativet utan att tillhandahålla en ” bootclasspath ” du ’ kommer att få lite udda smali-kod som kanske inte kan konverteras tillbaka till en dex-fil. Ta bara bort mappen META-INF innan du zippar och försöker göra zip -r unsigned.apk * inuti katalogen med allt innehåll. Om detta fortfarande kraschar, försök att skicka logcat-utdata
  • Så av fem svar är inte en enda acceptabel?

Svara

Jag använder apktool för detta ändamål och ett kort litet par skalskript för dekompilering och kompilering av 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 

Användning av apktool har fördelen att också kunna visa och redigera alla resurser som den avkodade manifestfilen.

Kommentarer

  • Det här är den enda metoden som fungerar för mig. Jag ’ har provat dussintals, ingen fungerade. Tack så mycket.

Svar

Efter att ha spelat med smali / baksmali fick jag det att fungera. Jag tror att du inte använde rekursiv flagga när du zippade . Detta ledde till att res-mappen var tom vilket orsakade kraschen. Jag kör också zipalign efter att ha undertecknat apk.

Steg:

  1. Unzip
    $ 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. Vinst 🙂

Svar

Jag kan inte kommentera pga. rykte, så jag kommer att lägga upp det här.

Eftersom jobbet görs korrekt med hjälp av apktool verkar det som om något går fel med zip-processen.

Efter om du packar om appen, kan du verifiera att innehållet i den nya APK-filen är identisk (vad gäller filnamn och struktur) med innehållet i den ursprungliga?

EDIT: även eftersom filen är en .dex-fil, jag tror inte att du behöver -x-alternativet i baksmali.

EDIT2: När du packar om behöver du inte inkludera META-INF-katalogen i zip-filen. kommer att skapas när du tecknar t han-filen.

Svar

Användning av deodex-alternativet ”-x” krävs inte eftersom du inte utför baksmali på en odex. Kör bara baksmali på dex-filen. Du kan också använda apktool för att packa upp / packa allt, vilket jag tycker är lättare.

Svar

  • Varför minskade filstorleken?

    Eftersom apktool optimerade den under kompileringen.

  • Varför den kraschade?

    Möjliga orsaker till krasch:

    1. Du kan inte utföra alla steg i rätt ordning.

    2. Applikationen kan ha en CRC-kontroll av filstorlek.

Verktyget Helautomatiserat med GUI .. Det uppdateras med senaste Android-ramverk så att inget resursdekompileringsfel och bättre hantering.

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

Och detta lilla papper som inkluderar Tuts för att vända Android-appar och all grundläggande information om att ändra / hantera apk.

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

Svar

Om du är intresserad av Anroid-appar RE, ska du hitta bättre verktyg att använda regelbundet.

Tja, ett av verktygen är Android Cracker Kit (som jag utvecklade), det ger dig allt vad du behöver: Android Cracker Kit (ACK):

Kommentarer

Svar

Jag använder APK Editor Pro för att redigera APK-filer direkt från min Android-enhet!

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

Kommentarer

  • Bra tips. Den genererade apk installeras inte korrekt med ovanstående (de) kompileringsskript (varför?) Men det ersatte klasserna. Dex gjorde det.

Svar

Steg 4. Du glömde att göra det rekursivt. Den kopierar inte filerna i / res när du zipar den. Lägg till -r-alternativet.

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

Steg 6. Du behöver inte underteckna det igen eftersom du redan har packat den med META-INF-katalogen till din apk. Underteckningsinformation finns i META-INF.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *