A sérült APK-fájlok javítása és az eszközök kibontása
Órákig töltöttél egy 2 GB-os játékcsomag letöltésével, de a böngészőben 99%-nál a „Letöltés sikertelen” üzenet jelenik meg, vagy ami még rosszabb, hogy az Android azt kiabálja, hogy "Elemzési hiba: Hiba történt a csomag elemzése során." A sérült APK nem feltétlenül halott fájl. Mivel az APK-k a ZIP-tömörítési szabványra épülnek, gyakran javíthatók, legalább annyira, hogy kinyerjük a benne lévő értékes eszközöket.
Az alábbiakban bemutatjuk, hogy valójában mi tönkremegy egy APK-ban, milyen javítóeszközökhöz érdemes nyúlni, és hogyan segíthet a XAPK konverter, ha törött csomaggal van dolgod.
Az APK korrupció anatómiája
Az APK lényegében egy meghatározott szerkezetű ZIP-archívum. A korrupció általában három hely egyikén történik:
- A fejléc: A fájl legelején lévő bájtok hiányoznak vagy megváltoztak.
- A Manifest (XML): A AndroidManifest.xml rosszul formázott, vagy nem támogatott kódolást használ.
- A DEX kód: A tényleges Java/Kotlin bájtkód csonkolt, így az alkalmazás futtathatatlan.
1. módszer: Fej nélküli ZIP-javítás (a legegyszerűbb)
Ha a fájl „olvasható”, de nem nyílik meg, használjon olyan eszközt, mint a DiskInternals ZIP javítás (ingyenes), vagy a parancssori zip -FF parancsot Linux/macOS rendszerben. Ezek az eszközök átvizsgálják a fájlt a fájlok "aláírásai" után, és a központi könyvtárat a semmiből felépítik.
Kód a terminál felhasználóinak: zip -FF corrupt_app.apk --out fixed_app.apk
2. módszer: Zipalign/Alignment rögzítése
Néha egy APK „sérült”, mert nem igazodik a 4 bájtos határokhoz. Az Android memóriakezeléséhez ez szükséges. Ezt az Android SDK zipalign eszközével javíthatja:
zipalign -v 4 input.apk output.apk
Bit-rot figyelmeztetés
Ha magából a DEX (osztályok.dex) fájlból hiányoznak az adatok, akkor semmilyen ZIP-javítás nem fogja az alkalmazást működni. Ebben az esetben az egyetlen cél a Eszközök/Források kibontása és az alkalmazás új példányának megkeresése.
Hogyan lehet megmondani, hogy valójában mi a baj
A javítószerszám kiválasztása előtt azonosítsa a hibát. Az Android (vagy az archiváló eszköz) által megjelenített hibaüzenet általában egy nyom:
| Tünet, amit lát | Mit jelent általában | Mit érdemes először kipróbálni |
|---|---|---|
| „A csomag elemzése” nem sikerült (Android) | A ZIP központi könyvtára olvashatatlan, vagy a jegyzék verziója nem egyezik | ZIP-fejléc javítása (1. módszer) |
| "Hiba történt a csomag elemzésekor" + az APK valamivel kisebb a vártnál | Csonka letöltés: az utolsó néhány KB nem érkezett meg | Letöltés újra ugyanabból a forrásból; ZIP javítás, ha az újraletöltés nem érhető el |
| 7-Zip / WinRAR megnyitja, de "CRC hibát" jelent az egyes fájlokon | A ZIP-ben lévő egyes fájl sérült | Csomagoljon ki mindent kivéve a sérült elemet, majd nézze meg, mi hiányzik |
| "Az alkalmazás nincs telepítve" további részletek nélkül | Gyakran aláírási eltérés vagy igazítási probléma, nem valódi korrupció | zipalign + aláírás újbóli ellenőrzése (2. módszer) |
| A java.lang.VerifyError telepítése után azonnal összeomlik | A classes.dex bájtkód sérült vagy verzióval nem kompatibilis | Javítással nem helyreállítható. Szerezzen be újra egy tiszta másolatot. |
Konkrét átjárás
Képzeld el, hogy egy 320 MB-os APK-hoz jutottál, amelynek letöltése nagyjából 99%-ban megszakadt. A telefon megtagadja a telepítést a „A csomag elemzése nem sikerült” üzenettel. Így támadhatja meg Windows vagy macOS munkaállomáson, abban a sorrendben, ahogyan ténylegesen kipróbálná a dolgokat.
1. lépés: Győződjön meg arról, hogy a fájl legalább nagyrészt ott van
Hasonlítsa össze a fájlméretet a forrásoldalon feltüntetett adattal. Ha a fájl jóval kisebb (például 320 MB helyett csak 220 MB), a letöltés félbeszakadt, és nincs értelme a csomag javításával próbálkozni, mivel a classes.dex vagy az erőforrások jelentős része egyszerűen hiányzik. Ilyen esetben indítsa újra a letöltést.
2. lépés Tesztelje a ZIP-struktúrát
Nyisson meg egy terminált az APK-t tartalmazó mappában, és futtassa MacOS vagy Linux rendszeren:
unzip -t broken.apk
Az eszköz minden, az archívumban lévő fájlt és a CRC-hibákat jelenteni fogja. Ha csak néhány bejegyzés hibázik, és azok nem classes*.dex vagy resources.arsc, akkor megfelelő esélye van a működő telepítésre.
3. lépés: Építse újra a központi könyvtárat
Ha a unzip -t magával a központi címtárral kapcsolatban panaszkodik ("a központi könyvtár végének aláírása nem található", "1 EOCD hiányzik"), használja a "javítás" módot:
zip -FF broken.apk --out fixed.apk
A -FF jelző utasítja a zip-t, hogy vizsgálja meg a fájlt helyi fájlfejléc-aláírások után, és bejegyzésenként építse újra a könyvtárat. A kimenet, a fixed.apk, az, amit valójában telepíteni próbál.
4. lépés: Igazítsa újra, és szükség esetén írja alá újra
Bármilyen szerkezeti változtatás után az APK aláírása már nem érvényes, mert akár egy bájt módosítása érvényteleníti a v2/v3 aláírásblokkokat. Ha van saját aláíró kulcsa (ez megfelelő a saját buildjeihez), igazítsa be, és írja alá újra:
zipalign -v 4 fixed.apk aligned.apk
apksigner sign --ks my.keystore aligned.apk
Saját kulcs nélkül a fájl telepítésének egyetlen módja a létező telepítés ugyanazzal az aláíró tanúsítvánnyal, ami azt jelenti, hogy a harmadik féltől származó javított APK nem települ a Play Áruház meglévő telepítésére, mivel az aláírási lánc megváltozott.
Amikor a javítás a rossz cél
Érdemes őszintének lenni abban, hogy a "javítás" mit tehet és mit nem:
- Nem tud visszaállítani olyan bájtokat, amelyek meg sem érkeztek. Ha a letöltés megszakadt, a fejléc javítása nem fogja helyreállítani a hiányzó adatokat. Töltse le újra.
- A korhadás állandó. Ha egy fájl a tárolón volt, amely néhány bitet átfordított a classes.dex-n belül, a telepítéskor végrehajtott bájtkód-ellenőrzési lépés elutasítja azt, és nem lehet tudni, hogy mik voltak az eredeti bájtok.
- A javított fájlok új aláírásokkal rendelkeznek. Még egy tökéletesen rögzített APK-t sem ír alá többé az eredeti kiadó. Ez egy szolgáltatás, nem hiba: megakadályozza, hogy a támadó rosszindulatú kódot csúsztasson egy népszerű alkalmazásba, és újra aláírja, mintha az eredeti kiadó lenne.
Ha egyszerűen az volt a cél, hogy olyan játékkal játssz, amelynek letöltése 99%-nál elhalt, a legkisebb ellenállás szinte mindig a részfájl törlése, a lemezterület felszabadítása, és a letöltés egy megbízható kapcsolatról. A javítóeszközök ragyognak, ha az újraletöltés lehetetlen: régi archivált APK-k, hibás LAN-átvitelen keresztül kapott fájlok vagy olyan biztonsági másolatok, amelyeknek az eredeti forrása eltűnt.
Gyakran Ismételt Kérdések (GYIK)
Kibonthatom az ikonokat és a képernyőképeket egy törött APK-ból?
Általában igen. Az ikonfájlok res/mipmap-* alatt élnek, és a képernyőképadatok eleve ritkák az APK-kban. Még akkor is, ha a központi könyvtár sérült, az egyes fájlfejlécek elég gyakran érintetlenek ahhoz, hogy a 7-Zip „Kibontás figyelmen kívül hagyott hibákkal” opciója a legtöbb képet kihúzza.
A javított APK frissíti a telepített alkalmazást?
Csak akkor, ha a javítás megőrizte az eredeti aláírást, ami egy szerkezeti helyreállítás után általában lehetetlen. Kezelje a javított APK-t új telepítésként: először távolítsa el a régi verziót (ezzel elvesznek a helyi adatok), vagy telepítse olyan készülékre, amelyen még nincs fent az alkalmazás.
Van olyan online eszköz, amely mindezt megteszi?
A böngésző alapú eszközök képesek elolvasni az APK szerkezetét, és megmondani, hogy mi hibásodott meg (a mi APK információs eszköz-ünk pontosan ezt teszi), de valójában a ZIP átírásához és újra aláírásához vagy asztali eszközre vagy szerverre van szükség. Szándékosan nem hajtjuk végre az újra-aláírási lépést a szerveren, mert az a fájl feltöltését jelentené: ennek az oldalnak az adatvédelmi ígérete az, hogy semmi sem hagyja el a böngészőt.
Mi a helyzet az XAPK fájlokkal, amelyeket nem sikerült kibontani?
Az XAPK csak egy ZIP, így ugyanazok a technikák érvényesek. Futtassa rajta a zip -FF-t a belső APK és az OBB-fájlok helyreállításához, majd járjon el úgy, mintha sérült APK-ja és külön OBB-je lenne.
Ha a célja csupán a grafikák, hangfájlok vagy OBB-adatok kinyerése egy félbeszakadt letöltésből, használja a 7-Zip programot. A 7-Zip jóval toleránsabb a Windows Intéző beépített ZIP-kezelőjénél, és a hibák figyelmen kívül hagyásával gyakran a részlegesen letöltött archívumokból is képes kibontani az ép fájlokat.
Deep Scan az APK-ját
Töltse fel a fájlt az elemzőnkbe, hogy megbizonyosodjon arról, hogy a struktúra érvényes-e, vagy a jegyzék nem olvasható.
Fájl állapotának elemzéseKövetkeztetés
Az "elemzési hiba" azt jelenti, hogy az operációs rendszer feladja. A fent említett eszközök használatával visszaveszi az irányítást. Noha nem mindig lehet „megjavítani” egy elromlott alkalmazást, hogy fusson, a visszaállítani az adatokat belül szinte mindig megteheti. A nagy fájlok kezelésével kapcsolatos további tippekért tekintse meg a Osztott APK-k egyesítése vagy OBB játékadatok kinyerése útmutatónkat.