Reambalarea fișierului APK folosind baksmali și smali

Sunt un student interesat de Android Security. Încercam să modific un fișier APK folosind baksmali și smali. Cu toate acestea, nu pot rula aplicația reambalată pe mobil. Când dau clic pe pictogramă, scrie „Din păcate, testul s-a oprit” și există. (Chiar și pictograma aplicației s-a schimbat, acum văd pictograma Android implicită în loc de pictograma veche și colorată a aplicației)

Care ar putea fi motivul? De fapt, nu am modificat nici măcar codul fișierului apk. Tocmai am dezarhivat apk-ul pentru a obține fișierul dex, apoi l-am convertit în smali folosind baksmali.jar și apoi înapoi la dex folosind smali.jar. În cele din urmă fermoar și semnat.

Ce am făcut în detaliu:

  1. Decomprimați fișierul apk

    $ Unzip test.apk 
  2. Convertiți 1classes.dex1 în smali

    $ baksmali -x classes.dex -o smaliClasses 
  3. A convertit clasele înapoi în classes.dex (înlocuit classes.dex vechi, de fapt nu am adăugat niciun cod nou în fișierul smali . Am vrut să știu dacă acest lucru funcționează mai întâi).

    $ smali smaliClasses -o classes.dex 
  4. Zip toate fișierele la test.zip

    $ zip test.zip AndroidManifest.xml classes.dex res META-INF resourses.arsc 
  5. Redenumiți test.zip la test.apk

    $ mv test.zip test.apk 

Acum cred că trebuie să semnez din nou APK-ul, vă rog să mă corectați dacă greșesc aici.

Editat

:

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

  2. Am încercat să instalez noul APK reambalat. Folosind adb shell. Adb shell a arătat că a fost instalat cu succes. Cu toate acestea, nu pot rula aplicația reambalată pe mobil. Aplicația se blochează când fac clic pe ea. Se spune „Din păcate, testul s-a oprit”.

De ce nu rulează aplicația reambalată? Nu înțeleg ce îmi lipsește aici?

Editat :

Am încercat să reambalez aceeași aplicație folosind apktool. Am extras fișierele smali folosindu-le și am reambalat. Dar de ce reambalarea nu funcționează cu baksmali, smali, zip și signapk. Este fermitatea problemei reale în această procedură? Văd că dimensiunea aplicației este redusă drastic când o zipez și o redenumesc în .apk comparativ cu fișierul apk original: |

Comentarii

  • Ar trebui să verificați logcat-ul pentru mai multe informații, dacă este posibil, vă rugăm să postați și jurnalul de blocare.
  • @xDragonZ , Am editat postarea. De data aceasta am încercat să instalez folosind ” adb install ” și am semnat folosind signapk.jar. De data aceasta aplicația a fost instalată în telefon. Cu toate acestea, când dau clic pe aplicație, acesta se blochează, spunând ” ” Din păcate, aplicația s-a oprit „. Un lucru pe care l-am observat este că dimensiunea apk-ului reambalat este mai mică decât cea originală, este motivul instrumentului zip pentru această modificare este dimensiunea? Orice indiciu despre motivul pentru care aplicația se blochează? Cum obțin un jurnal pentru asta? Vă mulțumesc foarte mult.
  • poate că trebuie să aliniți fișierul prin zip?
  • Deodexați (baksmali -x option) intenționat? Sunteți, se pare că, din moment ce efectuați această opțiune, fără a furniza un ” bootclasspath ” ‘ veți obține un cod smali ciudat care s-ar putea să nu poată fi reconvertit într-un fișier dex. De asemenea, trebuie doar să eliminați folderul META-INF înainte de a închide și a încerca să faceți zip -r unsigned.apk * în directorul cu tot conținutul. Dacă acest lucru se blochează, încercați să postați ieșirea logcat
  • Deci, din cinci răspunsuri nu este acceptabil niciunul?

Răspuns

Folosesc apktool în acest scop și o mică pereche scurtă de scripturi shell pentru decompilarea și recompilarea APK-urilor:

  • 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 

Utilizarea apktool are avantajul de a putea vizualiza și edita și toate resursele ca fișier manifest decodat.

Comentarii

  • Aceasta este singura metodă care funcționează pentru mine. Am ‘ am încercat zeci, niciunul nu a funcționat. Mulțumesc mult.

Răspuns

După ce m-am jucat cu smali / baksmali, am reușit. Cred că nu ați folosit „div divizorul recursiv când ați închis . Acest lucru a făcut ca folderul res să fie gol, ceea ce a provocat blocarea. De asemenea, rulez zipalign după semnarea apk-ului.

Pași:

  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. Profit 🙂

Răspunde

Nu pot să comentez din cauza reputație, așa că o voi posta aici.

Întrucât treaba se face corect cu utilizarea apktoolului, mi se pare că ceva nu merge bine cu procesul zip.

După reambalând aplicația, puteți verifica dacă conținutul noului APK este identic (în ceea ce privește numele și structura fișierelor) cu conținutul celei originale?

EDIT: de asemenea, deoarece fișierul este un fișier .dex, nu cred că aveți nevoie de opțiunea -x în baksmali.

EDIT2: La reambalare, nu trebuie să includeți directorul META-INF în fișierul zip. va fi creat la semnarea t fișierul.

Răspuns

Utilizarea opțiunii deodex „-x” nu este necesară deoarece nu efectuați baksmali pe un odex. Pur și simplu rulați baksmali pe fișierul dex. De asemenea, puteți utiliza apktool pentru a despacheta / împacheta totul, ceea ce cred că este mai ușor.

Răspuns

  • De ce s-a redus dimensiunea fișierului?

    Deoarece apktool l-a optimizat în timp ce a fost recompilat.

  • De ce s-a blocat?

    Motive posibile pentru blocare:

    1. Nu puteți efectua toți pașii în ordinea corectă.

    2. Aplicația poate avea o Verificare CRC pentru dimensiunea fișierului.

Instrument Complet automatizat cu GUI .. Este actualizat cu un cadru Android recent, astfel încât nu există erori de decompilare a resurselor și o mai bună manipulare.

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

Și această mică hârtie care include opțiuni de inversare a aplicațiilor Android și toate informațiile de bază referitoare la modificarea / gestionarea apk.

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

Răspuns

Dacă sunteți interesat de aplicațiile Anroid RE, veți găsi instrumente mai bune de utilizat în mod regulat.

Ei bine, unul dintre instrumente este Android Cracker Kit (pe care l-am dezvoltat), vă oferă tot ce aveți nevoie: Android Cracker Kit (ACK):

Comentarii

Răspuns

Folosesc APK Editor Pro pentru a edita APK-uri direct de pe dispozitivul meu Android!

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

Comentarii

  • Sfat extraordinar. APK-ul generat nu se instalează corect cu scriptul de (de) compilare de mai sus (de ce?), Dar înlocuirea classes.dex a făcut-o.

Răspuns

Pasul 4. Ați uitat să o faceți recursiv. Nu va fi copiat fișierele în / res când îl arhivați. Opțiunea Adăugați -r.

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

Pasul 6. Nu este necesar să îl semnați din nou, deoarece l-ați reambalat din nou cu directorul META-INF în apk-ul dvs. Informațiile de semnare se află în META-INF.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *