Az APK fájl újracsomagolása baksmali és smali használatával

Az Android Security iránt érdeklődő hallgató vagyok. Egy APK fájlt próbáltam módosítani baksmali és smali használatával. Az újracsomagolt alkalmazást azonban nem tudom futtatni a mobilomon. Amikor rákattintok az ikonra, azt mondja: “Sajnos a teszt leállt”, és létezik. (Még az alkalmazás ikonja is megváltozott, most az alapértelmezett android ikont látom az alkalmazás régi valódi színes ikonja helyett)

Mi lehet ennek az oka? Valójában nem is módosítottam az apk fájl kódját. Csak kibontottam az apk-t, hogy megszerezzem a dex fájlt, majd a baksmali.jar paranccsal smalivá alakítottam, majd vissza a de id = “99c50bf882”>

. Végül tömörítve és aláírva.

Amit részletesen elvégeztem:

  1. Az APK fájl kibontása

    $ Unzip test.apk 
  2. Az 1classes.dex1 konvertálása smálissá

    $ baksmali -x classes.dex -o smaliClasses 
  3. Az osztályokat visszaállította classes.dex -re (lecserélte a régi classes.dex -et, valójában nem adtam hozzá új kódot a smali fájlhoz . Azt akartam tudni, hogy ez működik-e először).

    $ smali smaliClasses -o classes.dex 
  4. Az összes fájlt tömörítse a következőhöz: test.zip

    $ zip test.zip AndroidManifest.xml classes.dex res META-INF resourses.arsc 
  5. A test.zip átnevezése test.apk

    $ mv test.zip test.apk 

Most úgy gondolom, hogy újra alá kell írnom az APK-t, kérlek, javíts ki, ha tévedek itt.

Szerkesztve :

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

  2. Megpróbáltam telepíteni az újracsomagolt APK-t. Adb shell használatával. Az Adb shell sikeres telepítését mutatta. Az újracsomagolt alkalmazást azonban nem tudom futtatni mobilon. Az alkalmazás összeomlik, amikor rákattintok. Azt írja: “Sajnos a teszt leállt.”

Miért nem fut az újracsomagolt alkalmazás? Nem értem, mit hiányolok itt?

Szerkesztve :

Ugyanazt az alkalmazást próbáltam újracsomagolni az apktool segítségével. Kibontottam a smali fájlokat ezzel és újracsomagoltam. De miért nem működik az újracsomagolás a baksmalival, a szmálival, a zipszel és a signapkkal. A cipzár az igazi probléma ebben az eljárásban? Úgy látom, hogy az alkalmazás mérete drasztikusan csökken, amikor becsomagolom és átnevezem .apk-ra az eredeti apk fájlhoz képest: |

Megjegyzések

  • További információkért ellenőrizze a napló macskáját, ha lehetséges, kérjük, tegye fel az összeomlási naplót is.
  • @xDragonZ , Szerkesztettem a bejegyzést. Ezúttal a ” adb install ” használatával próbáltam telepíteni, és aláírtam a signapk.jar fájlt. Ezúttal az alkalmazást telepítettük a telefonra. Amikor azonban rákattintok az alkalmazásra, összeomlik, mondván: ” ” Sajnos az alkalmazás leállt “. Egy dolgot észrevettem, hogy az újracsomagolt apk mérete kisebb, mint az eredeti, vajon a zip eszköz oka ennek a változásnak a mérete? Van valami nyom arra, hogy miért zuhan össze az alkalmazás? Hogyan szerezhetek erről naplót? Nagyon köszönöm.
  • talán a fájlt is zipalignelni kell?
  • Szándékosan deodexel (baksmali -x option)? Ön úgy tűnik, hogy mivel ezt az opciót hajtja végre, a ” bootclasspath ” megadása nélkül ‘ megkap egy pár furcsa smali kódot, amelyet nem lehet visszaállítani dex fájlba. Ezenkívül egyszerűen távolítsa el a META-INF mappát, mielőtt tömörítené, és megpróbálná az összes tartalommal együtt a könyvtárban a zip -r unsigned.apk * t végrehajtani. Ha ez még mindig összeomlik, próbálja meg feltölteni a logcat kimenetet.
  • Tehát öt válasz ból egyetlen sem elfogadható?

Válasz

Erre a célra apktool -t használok, és egy rövid kis shell parancsfájlt az APK-k dekompilálásához és újrafordításához:

  • 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 

A apktool használatának megvan az az előnye, hogy az összes erőforrást is megtekintheti és szerkesztheti dekódolt jegyzékfájlként.

Megjegyzések

  • Ez az egyetlen módszer, ami nekem működik. Tucatokat próbáltam ‘, egyik sem működött. Nagyon köszönöm.

Válasz

A smali / baksmalival való játék után működőképes lettem. Azt hiszem, hogy nem használta a rekurzív zászlót, amikor a csomagolást végezte. Ennek eredményeként a res mappa üres volt, ami összeomlást okozott. Futtatom a zipalign-t is, miután aláírtam az apk-t.

Lépések:

  1. Csomagolja ki
    $ 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 🙂

Válasz

Nem tudok hozzászólni hírnevét, ezért ide teszem fel.

Mivel a munkát az apktool használatával helyesen végezték el, úgy tűnik számomra, hogy valami nem stimmel a zip folyamatban.

Utána az alkalmazás újracsomagolása, ellenőrizheti, hogy az új APK tartalma megegyezik-e (ami a fájlneveket és a szerkezetet illeti) az eredeti tartalmával?

SZERKESZTÉS: szintén, mivel a fájl .dex fájl, nem hiszem, hogy a -x opcióra van szükséged baksmaliban.

EDIT2: Újracsomagoláskor nem kell feltüntetni a META-INF könyvtárat a zip fájlban. t aláírásakor jön létre fájl.

Válasz

A “-x” deodex opció használata nem szükséges, mivel “nem végez baksmalit egy odex. Csak futtassa a baksmali-t a dex fájlon. Az apktool segítségével mindent kicsomagolhat és becsomagolhat, ami szerintem könnyebb.

Válasz

  • Miért csökkentették a fájlméretet?

    Mivel apktool optimalizálta újrafordítás közben.

  • Miért összeomlott?

    Az összeomlás lehetséges okai:

    1. Az összes lépést nem tudja megfelelő sorrendben végrehajtani.

    2. Az alkalmazásnak lehet egy A CRC ellenőrzi a fájlméretet.

Az eszköz teljesen automatizált a GUI-val .. Frissítve van a legújabb android keretrendszerrel, így nincs erőforrás dekompilálási hiba és jobb kezelhetőség.

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

És ez a kis papír, amely magában foglalja az androidos alkalmazások visszaváltásával kapcsolatos tudnivalókat, valamint az apk módosításával és kezelésével kapcsolatos összes alapvető információt. a>

Válasz

Ha érdekli az Anroid apps RE, akkor jobb eszközöket kell találnia a rendszeres használatra.

Nos, az egyik eszköz az Android Cracker Kit (amelyet én fejlesztettem ki), minden szükséges segítséget megad: Android Cracker Kit (ACK):

Megjegyzések

Válasz

Az APK Editor Pro-t használom a szerkesztéshez APK-k közvetlenül az Android-eszközömről!

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

Megjegyzések

  • Remek tipp. A generált apk nem települ megfelelően a fenti (de) fordító szkript (miért?), De a class.dex helyettesítése tette.

Válasz

4. lépés. Elfelejtette ezt rekurzívan megtenni. Nem másolja a fájlokat a / res fájlba, amikor becsomagolja. Add hozzá az -r opciót.

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

6. lépés. Nem kell aláírnia ismét, mivel már újból bepakolta a META-INF könyvtárba az apk-be. Az aláírási információk a META-INF belsejében találhatók.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük