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:
-
Pakkaa apk-tiedosto
$ Unzip test.apk
-
Muunna 1classes.dex1 smaliksi
$ baksmali -x classes.dex -o smaliClasses
-
Muutti luokat takaisin
classes.dex
(korvasi vanhanclasses.dex
, itse asiassa en lisännyt uutta koodia smali-tiedostoon . Halusin tietää, toimiiko tämä ensin).$ smali smaliClasses -o classes.dex
-
Zip kaikki tiedostot osoitteeseen
test.zip
$ zip test.zip AndroidManifest.xml classes.dex res META-INF resourses.arsc
-
Nimeä
test.zip
uudeksi nimeksitest.apk
$ mv test.zip test.apk
Nyt uskon, että minun on allekirjoitettava APK uudelleen. Korjaa minut, jos olen väärässä täällä.
Muokattu
:
-
java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test-patched.apk
-
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
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:
- Pura
$ unzip test.apk
- 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
- 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:
-
Et voi suorittaa kaikkia vaiheita oikeassa järjestyksessä.
-
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.
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
- Rikkinäinen linkki. korjaa se.
- täältä: forum.exetools.com/showthread.php?t=16538
- @raypixar: linkki ei ollut rikki, vain hidas.
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ä.
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