Pakkaa APK-tiedosto uudelleen baksmalin ja smalin avulla

Olen opiskelija, joka on kiinnostunut Android-tietoturvasta. Yritin muokata APK-tiedostoa baksmalilla ja smalilla. En kuitenkaan voi käyttää uudelleenpakattua sovellusta matkapuhelimessani. Kun napsautan kuvaketta, siinä lukee ”Valitettavasti testi on lopetettu” ja se on olemassa. (Jopa sovelluksen kuvake muuttui, nyt näet Android-oletuskuvakkeen sovelluksen vanhan todellisen värikkään kuvakkeen sijaan)

Mikä voi olla syy tähän? Itse asiassa en edes muokannut APK-tiedoston koodia. Pysyin vain apk-tiedostolla saadaksesi dex-tiedoston, sitten muunnin sen smaliksi käyttämällä baksmali.jar ja sitten takaisin dexiin käyttämällä smali.jar. Lopuksi pakattu ja allekirjoitettu.

Mitä olen tehnyt yksityiskohtaisesti:

  1. Pakkaa apk-tiedosto

    $ Unzip test.apk 
  2. Muunna 1classes.dex1 smaliksi

    $ baksmali -x classes.dex -o smaliClasses 
  3. Muutti luokat takaisin classes.dex (korvasi vanhan classes.dex, itse asiassa en lisännyt uutta koodia smali-tiedostoon . Halusin tietää, toimiiko tämä ensin).

    $ smali smaliClasses -o classes.dex 
  4. Zip kaikki tiedostot osoitteeseen test.zip

    $ zip test.zip AndroidManifest.xml classes.dex res META-INF resourses.arsc 
  5. Nimeä test.zip uudeksi nimeksi test.apk

    $ mv test.zip test.apk 

Nyt uskon, että minun on allekirjoitettava APK uudelleen. Korjaa minut, jos olen väärässä täällä.

Muokattu

:

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

  2. Yritin asentaa uuden uudelleen pakatun APK: n. ADB-kuoren käyttö. Adb-kuori osoitti sen asentamisen onnistuneesti. En kuitenkaan voi käyttää uudelleenpakattua sovellusta mobiililaitteella. Sovellus kaatuu, kun napsautan sitä. Siinä lukee ”Valitettavasti testi on lopetettu”.

Miksi uudelleenpakattu sovellus ei ole käynnissä? En ymmärrä mitä puuttuu täällä?

Muokattu :

Yritin pakata saman sovelluksen uudelleen apktoolilla. Pura smali-tiedostot sen avulla ja pakkasin uudelleen. Mutta miksi uudelleen pakkaaminen ei toimi baksmalin, smalin, zipin ja signapkin kanssa. Onko vetoketju todellinen ongelma tässä menettelyssä? Näen, että sovelluksen koko pienenee huomattavasti, kun pakkan sen ja nimeen sen uudelleen .apk: ksi alkuperäiseen apk-tiedostoon verrattuna: |

Kommentit

  • Tarkista lisätietoja lokikassastasi, jos mahdollista, lähetä myös kaatumisloki.
  • @xDragonZ , Olen muokannut viestiä. Tällä kertaa yritin asentaa käyttämällä ” adb install ” -sovellusta ja allekirjoitin signapk.jar-tiedostolla. Tällä kertaa sovellus asennettiin puhelimeen. Kun napsautan sovellusta, se kaatuu sanoen ” ” Valitettavasti sovellus on pysähtynyt ”. Yksi asia, jonka huomasin, on uudelleen pakatun apk: n koko pienempi kuin alkuperäinen, onko se zip-työkalun syy muutokseen? Onko mitään vihjeitä miksi sovellus kaatuu? Kuinka saan lokin tästä? Paljon kiitoksia.
  • Ehkä sinun on myös pakattava tiedosto zipalign?
  • Haluatko deodexoida (baksmali -x option) tarkoituksella? Näyttää siltä, että koska teet tämän vaihtoehdon, antamatta ” bootclasspath ” sinä ’ saamme uudelleen parittoman smali-koodin, jota ei ehkä voida muuntaa takaisin dex-tiedostoksi. Poista myös META-INF-kansio ennen pakkaamista ja yritä tehdä zip -r unsigned.apk * hakemiston sisällä kaikilla sisällöillä. Jos tämä vielä kaatuu, yritä lähettää logcat-tulos
  • Joten viidestä vastauksesta yhtäkään ei voida hyväksyä?

Vastaa

Käytän apktool tähän tarkoitukseen ja lyhyttä pientä komentosarjaparia APK: iden purkamiseen ja uudelleen kääntämiseen:

  • 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 

apktool -palvelun käyttämisen etuna on, että pystyt tarkastelemaan ja muokkaamaan kaikkia resursseja dekoodatuksi luettelotiedostoksi.

Kommentit

  • Tämä on ainoa menetelmä, joka toimii minulle. Olen ’ kokeillut kymmeniä, yksikään ei toiminut. Kiitos paljon.

Vastaa

Pelatessani smali / baksmalin kanssa sain sen toimimaan. Luulen, että et käyttänyt -rekursiivista lippua, kun pakattiin . Tämä aiheutti res-kansion tyhjentämisen ja kaatumisen. Lisäksi suoritan zipalignin allekirjoittamisen jälkeen apk.

Vaiheet:

  1. Pura
    $ 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. Voitto 🙂

Vastaa

En voi kommentoida maine, joten lähetän sen tänne.

Koska työ on tehty oikein käyttämällä apktool-ohjelmaa, minusta tuntuu, että jotain on menossa pieleen zip-prosessissa.

Jälkeen pakkaamalla sovelluksen uudelleen, voitko varmistaa, että uuden APK: n sisältö on identtinen (tiedostonimien ja rakenteen osalta) alkuperäisen sisällön kanssa?

MUOKKAA: myös, koska tiedosto on .dex-tiedosto, en usko, että tarvitset -x-vaihtoehtoa baksmalissa.

EDIT2: Kun pakkaat uudelleen, sinun ei tarvitse sisällyttää META-INF-hakemistoa zip-tiedostoon. Se luodaan allekirjoitettaessa t hän tiedosto.

Vastaa

Deodex-vaihtoehdon ”-x” käyttöä ei vaadita, koska et tee baksmalia odex. Aja vain baksmali dex-tiedostossa. Voit myös purkaa / pakata kaiken apktoolilla, mikä on mielestäni helpompaa.

Vastaa

  • Miksi tiedostokokoa pienennettiin?

    Koska apktool optimoi sen uudelleen kääntämisen aikana.

  • Miksi se kaatui?

    Kaatumisen mahdolliset syyt:

    1. Et voi suorittaa kaikkia vaiheita oikeassa järjestyksessä.

    2. Sovelluksella voi olla CRC tarkista tiedostokoko.

Työkalu on täysin automatisoitu käyttöliittymän kanssa. Se on päivitetty viimeisimmällä android-kehyksellä, joten resursseja ei pureta ja parempi käsittely.

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

Ja tämä pieni paperi, joka sisältää Android-sovellusten peruutusohjeet ja kaikki AP: n muokkaamista / käsittelyä koskevat perustiedot.

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

Vastaa

Jos olet kiinnostunut Anroid-sovelluksista RE, löydät parempia säännöllisesti käytettäviä työkaluja.

No, yksi työkaluista on Android Cracker Kit (jonka olen kehittänyt), se antaa sinulle kaiken tarvitsemasi: Android Cracker Kit (ACK):

kommentit

Vastaa

Käytän APK Editor Prota muokkaamiseen APK: t suoraan Android-laitteeltani!

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

Kommentit

  • Hyvä vinkki. Luotu apk ei asennu oikein yllä olevalla (de) kääntökoodilla (miksi?), Mutta korvaa class.dex.

Vastaa

Vaihe 4. Unohdit tehdä sen rekursiivisesti. Se ei kopioi tiedostoja / res-tiedostoihin, kun pakkaat sen. Lisää -r-vaihtoehto.

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

Vaihe 6. Sinun ei tarvitse allekirjoittaa sitä uudelleen, koska olet pakannut sen uudelleen META-INF-hakemistoon APK: si. Allekirjoitustiedot ovat META-INF: n sisällä.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *