Πώς να διορθώσετε ένα κατεστραμμένο αρχείο APK και να εξαγάγετε στοιχεία

A smartphone showing a file error with a small toolbox, illustrating fixing a corrupt APK

Ξοδέψατε ώρες κατεβάζοντας ένα πακέτο παιχνιδιών 2 GB, μόνο για το πρόγραμμα περιήγησής σας να λέει "Η λήψη απέτυχε" στο 99%, ή χειρότερα, για να φωνάζει το Android "Σφάλμα ανάλυσης: Παρουσιάστηκε πρόβλημα κατά την ανάλυση του πακέτου." Ένα κατεστραμμένο APK δεν είναι απαραίτητα νεκρό αρχείο. Επειδή τα APK είναι χτισμένα με βάση το πρότυπο συμπίεσης ZIP, μπορούν συχνά να επισκευαστούν, τουλάχιστον αρκετά ώστε να εξαχθούν τα πολύτιμα περιουσιακά στοιχεία μέσα.

Παρακάτω θα δούμε τι πραγματικά σπάει μέσα σε ένα APK, τα εργαλεία επισκευής που αξίζει να προσεγγίσετε και πώς το Μετατροπέας XAPK μπορεί να σας βοηθήσει όταν αντιμετωπίζετε ένα σπασμένο πακέτο.

Σύντομη περίληψη. Περίληψη πέντε δευτερολέπτων: Τα περισσότερα κατεστραμμένα APK έχουν ζημιά στον κεντρικό κατάλογο ZIP ή στο classes.dex. Η ζημιά σε επίπεδο ZIP επισκευάζεται με zip -FF ή 7-Zip. Η ζημιά σε επίπεδο DEX δεν είναι. Σε αυτήν την περίπτωση, ανακτήστε τα στοιχεία που μπορείτε και κατεβάστε ξανά ένα καθαρό APK. zipalign Τα σφάλματα δεν είναι πραγματική διαφθορά και διορθώνονται με μία εντολή.

Η ανατομία της διαφθοράς του APK

Ένα APK είναι ουσιαστικά ένα αρχείο ZIP με συγκεκριμένη δομή. Η διαφθορά συνήθως συμβαίνει σε ένα από τα τρία μέρη:

  1. Η κεφαλίδα: Τα byte στην αρχή του αρχείου λείπουν ή έχουν αλλάξει.
  2. The Manifest (XML): Το AndroidManifest.xml έχει κακή μορφή ή χρησιμοποιεί μη υποστηριζόμενη κωδικοποίηση.
  3. Ο κωδικός DEX: Ο πραγματικός bytecode Java/Kotlin έχει περικοπεί, καθιστώντας την εφαρμογή μη εκτελούμενη.

Μέθοδος 1: Επισκευή φερμουάρ χωρίς κεφαλή (Ευκολότερη)

Εάν το αρχείο είναι "αναγνώσιμο" αλλά δεν ανοίγει, χρησιμοποιήστε ένα εργαλείο όπως το Επισκευή ZIP DiskInternals (Δωρεάν) ή την εντολή zip -FF της γραμμής εντολών σε Linux/macOS. Αυτά τα εργαλεία σαρώνουν το αρχείο για «υπογραφές» αρχείων και ξαναφτιάχνουν τον κεντρικό κατάλογο από την αρχή.

Κωδικός για χρήστες τερματικού: zip -FF corrupt_app.apk --out fixed_app.apk

Μέθοδος 2: Διόρθωση Zipalign/Ευθυγράμμιση

Μερικές φορές ένα APK είναι "κατεστραμμένο" απλώς και μόνο επειδή δεν είναι ευθυγραμμισμένο σε όρια 4 byte. Αυτό απαιτεί η διαχείριση μνήμης του Android. Μπορείτε να το διορθώσετε χρησιμοποιώντας το εργαλείο zipalign από το Android SDK:

zipalign -v 4 input.apk output.apk

Προειδοποίηση Bit-Rot

Εάν λείπουν δεδομένα από το ίδιο το αρχείο DEX (classes.dex), καμία επισκευή ZIP δεν θα κάνει την εφαρμογή να λειτουργήσει. Σε αυτήν την περίπτωση, ο μόνος σας στόχος θα πρέπει να είναι να εξαγάγετε το Περιουσιακά στοιχεία/Πόροι και να βρείτε ένα νέο αντίγραφο της εφαρμογής.

Πώς να πείτε τι είναι πραγματικά λάθος

Πριν επιλέξετε ένα εργαλείο επισκευής, εντοπίστε τη βλάβη. Το μήνυμα σφάλματος που εμφανίζει το Android (ή το εργαλείο αρχειοθέτησης) είναι συνήθως μια ένδειξη:

Σύμπτωμα βλέπετε Τι σημαίνει συνήθως Τι να πρωτοδοκιμάσεις
Η "Ανάλυση του πακέτου" απέτυχε (Android) Ο κεντρικός κατάλογος ZIP μη αναγνώσιμος ή εμφανής αναντιστοιχία έκδοσης Επισκευή κεφαλίδας ZIP (Μέθοδος 1)
Το "Υπήρξε πρόβλημα κατά την ανάλυση του πακέτου" + το APK είναι ελαφρώς μικρότερο από το αναμενόμενο Περικομμένη λήψη: τα τελευταία KB δεν έφτασαν ποτέ Επανάληψη λήψης από την ίδια πηγή. Επισκευή ZIP εάν δεν είναι διαθέσιμη η εκ νέου λήψη
Το 7-Zip / WinRAR το ανοίγει αλλά αναφέρει "σφάλμα CRC" σε μεμονωμένα αρχεία Το μεμονωμένο αρχείο μέσα στο ZIP είναι κατεστραμμένο Εξάγετε τα πάντα εκτός το κατεστραμμένο μέλος και, στη συνέχεια, δείτε τι λείπει
"Η εφαρμογή δεν έχει εγκατασταθεί" χωρίς περαιτέρω λεπτομέρειες Συχνά πρόβλημα αναντιστοιχίας υπογραφής ή ευθυγράμμισης, όχι πραγματική διαφθορά zipalign + επανέλεγχος υπογραφής (Μέθοδος 2)
Καταρρέει αμέσως μετά την εγκατάσταση με το java.lang.VerifyError Ο bytecode classes.dex είναι κατεστραμμένος ή δεν είναι συμβατός με την έκδοση Δεν ανακτάται με επισκευή. Αποκτήστε ξανά ένα καθαρό αντίγραφο.

Ένας συγκεκριμένος περίπατος

Φανταστείτε ότι καταλήξατε με ένα APK 320 MB του οποίου η λήψη διακόπηκε περίπου στο 99%. Το τηλέφωνό σας αρνείται να το εγκαταστήσει με το "Η ανάλυση του πακέτου απέτυχε". Δείτε πώς μπορείτε να του επιτεθείτε σε έναν σταθμό εργασίας Windows ή macOS, με τη σειρά που θα δοκιμάζατε πραγματικά τα πράγματα.

Βήμα 1. Επιβεβαιώστε ότι το αρχείο βρίσκεται τουλάχιστον ως επί το πλείστον εκεί

Ελέγξτε το μέγεθος του αρχείου σε σχέση με ό,τι διαφημίζει η πηγή. Εάν το αρχείο είναι δραματικά μικρότερο (ας πούμε, 220 MB αντί για 320 MB), η λήψη περικόπηκε σοβαρά και δεν έχει νόημα η επισκευή του περιτυλίγματος: μεγάλα τμήματα του classes.dex ή τα στοιχεία απλά λείπουν. Σε αυτήν την περίπτωση, επανεκκινήστε τη λήψη.

Βήμα 2. Δοκιμάστε τη δομή ZIP

Ανοίξτε ένα τερματικό στο φάκελο που περιέχει το APK και εκτελέστε, σε macOS ή Linux:

unzip -t broken.apk

Το εργαλείο θα αναφέρει κάθε αρχείο μέσα στο αρχείο και τυχόν σφάλματα CRC. Εάν μόνο λίγες καταχωρήσεις παρουσιάζουν σφάλμα και δεν είναι classes*.dex ή resources.arsc, έχετε μια αξιοπρεπή πιθανότητα να δημιουργήσετε μια λειτουργική εγκατάσταση.

Βήμα 3. Δημιουργήστε ξανά τον κεντρικό κατάλογο

Εάν ο unzip -t παραπονιέται για τον ίδιο τον κεντρικό κατάλογο ("η υπογραφή στο τέλος του κεντρικού καταλόγου δεν βρέθηκε", "λείπει 1 EOCD"), χρησιμοποιήστε τη λειτουργία "διόρθωση":

zip -FF broken.apk --out fixed.apk

Η σημαία -FF λέει στο zip να σαρώσει το αρχείο για τοπικές υπογραφές κεφαλίδας αρχείου και να δημιουργήσει εκ νέου τον κατάλογο καταχώριση-καταχώρηση. Η έξοδος, fixed.apk, είναι αυτό που πραγματικά προσπαθείτε να εγκαταστήσετε.

Βήμα 4. Ευθυγραμμίστε ξανά και υπογράψτε ξανά εάν χρειάζεται

Μετά από οποιαδήποτε δομική αλλαγή, η υπογραφή του APK δεν είναι πλέον έγκυρη, επειδή η τροποποίηση έστω και ενός byte ακυρώνει τα μπλοκ υπογραφών v2/v3. Εάν έχετε το δικό σας κλειδί υπογραφής (αυτό είναι εντάξει για τις εκδόσεις που διαθέτετε), ευθυγραμμίστε και υπογράψτε ξανά:

zipalign -v 4 fixed.apk aligned.apk
apksigner sign --ks my.keystore aligned.apk

Χωρίς το δικό σας κλειδί, ο μόνος τρόπος εγκατάστασης του αρχείου είναι μέσω εγκατάστασης υπάρχον με το ίδιο πιστοποιητικό υπογραφής, πράγμα που σημαίνει ότι ένα επισκευασμένο APK από τρίτο μέρος δεν θα εγκατασταθεί πάνω από μια υπάρχουσα εγκατάσταση του Play Store, καθώς η αλυσίδα υπογραφής έχει αλλάξει.

Όταν η επισκευή είναι ο λάθος στόχος

Αξίζει να είμαστε ειλικρινείς σχετικά με το τι μπορεί και τι δεν μπορεί να κάνει η «διόρθωση»:

Εάν ο στόχος σας ήταν απλώς να παίξετε ένα παιχνίδι του οποίου η λήψη έληξε στο 99%, η διαδρομή της ελάχιστης αντίστασης είναι σχεδόν πάντα η εκκαθάριση του μερικού αρχείου, η απελευθέρωση χώρου στο δίσκο και η λήψη ξανά από μια αξιόπιστη σύνδεση. Τα εργαλεία επιδιόρθωσης λάμπουν όταν η εκ νέου λήψη είναι αδύνατη: παλιά αρχειοθετημένα APK, αρχεία που ελήφθησαν μέσω μιας ασταθούς μεταφοράς LAN ή αντίγραφα ασφαλείας των οποίων η αρχική πηγή έχει χαθεί.

Συχνές Ερωτήσεις (FAQ)

Μπορώ να εξαγάγω τα εικονίδια και τα στιγμιότυπα οθόνης από ένα κατεστραμμένο APK;

Συνήθως ναι. Τα αρχεία εικονιδίων βρίσκονται κάτω από το res/mipmap-* και τα δεδομένα στιγμιότυπων οθόνης είναι σπάνια στα APK αρχικά. Ακόμη και όταν ο κεντρικός κατάλογος είναι κατεστραμμένος, οι επικεφαλίδες των μεμονωμένων αρχείων είναι άθικτες αρκετά συχνά, ώστε η επιλογή "Εξαγωγή με αγνοημένα σφάλματα" του 7-Zip θα βγάλει τις περισσότερες εικόνες.

Ένα επισκευασμένο APK θα ενημερώσει μια εγκατεστημένη εφαρμογή;

Μόνο εάν η επισκευή διατήρησε την αρχική υπογραφή, κάτι που είναι γενικά αδύνατο μετά από μια δομική επισκευή. Αντιμετωπίστε ένα επισκευασμένο APK ως νέα εγκατάσταση: απεγκαταστήστε πρώτα την παλιά έκδοση (θα χάσετε τα δεδομένα του) ή εγκαταστήστε το σε μια συσκευή που δεν διαθέτει ακόμη την εφαρμογή.

Υπάρχει κάποιο διαδικτυακό εργαλείο που να τα κάνει όλα αυτά;

Τα εργαλεία που βασίζονται σε πρόγραμμα περιήγησης μπορούν να διαβάσουν τη δομή ενός APK και να σας πουν τι είναι χαλασμένο (το Εργαλείο πληροφοριών APK μας κάνει ακριβώς αυτό), αλλά στην πραγματικότητα η επανεγγραφή του ZIP και η εκ νέου υπογραφή απαιτεί είτε ένα εργαλείο επιφάνειας εργασίας είτε έναν διακομιστή. Δεν εκτελούμε σκόπιμα το βήμα της εκ νέου υπογραφής σε έναν διακομιστή, επειδή αυτό θα σήμαινε τη μεταφόρτωση του αρχείου σας: η υπόσχεση απορρήτου αυτού του ιστότοπου είναι ότι τίποτα δεν φεύγει από το πρόγραμμα περιήγησής σας.

Τι γίνεται με τα αρχεία XAPK που αποτυγχάνουν να εξαχθούν;

Ένα XAPK είναι απλώς ένα ZIP, επομένως ισχύουν οι ίδιες τεχνικές. Εκτελέστε το zip -FF σε αυτό για να ανακτήσετε το εσωτερικό APK συν τυχόν αρχεία OBB και, στη συνέχεια, προχωρήστε σαν να είχατε ένα κατεστραμμένο APK και ένα ξεχωριστό OBB.

Εάν ο στόχος σας είναι απλώς να λάβετε τα γραφικά, τους ήχους ή τα δεδομένα OBB από μια αποτυχημένη λήψη, χρησιμοποιήστε το 7-Zip. Το 7-Zip είναι πιο επιθετικό από το εργαλείο ZIP της Εξερεύνησης των Windows και συχνά σας επιτρέπει να "Αγνοείτε σφάλματα" για να εξαγάγετε αρχεία που έχουν ληφθεί μόνο εν μέρει.

Βαθιά σάρωση του APK σας

Ανεβάστε το αρχείο στον αναλυτή μας για να δείτε εάν η δομή είναι έγκυρη ή αν το μανιφέστο δεν είναι αναγνώσιμο.

Αναλύστε την υγεία του αρχείου

Σύναψη

Ένα "Σφάλμα ανάλυσης" είναι η παραίτηση του λειτουργικού συστήματος. Χρησιμοποιώντας τα εργαλεία που αναφέρονται παραπάνω, ανακτάτε τον έλεγχο. Ενώ δεν μπορείτε πάντα να "διορθώσετε" μια χαλασμένη εφαρμογή για να την εκτελείτε, μπορείτε σχεδόν πάντα να ανακτήσει τα δεδομένα μέσα. Για περισσότερες συμβουλές σχετικά με τη διαχείριση μεγάλων αρχείων, ανατρέξτε στον οδηγό μας για Συγχώνευση διαχωρισμένων APK ή Εξαγωγή δεδομένων παιχνιδιού OBB.

Κατασκευάστηκε και τεκμηριώθηκε από τον Mst Shaefale Κύριος προγραμματιστής και αρχιτέκτονας πακέτων Android • Επαληθεύτηκε σε Android 12–15

Το Mst Shaefale διατηρεί τη συγχώνευση XAPK/APKS από την πλευρά του πελάτη, τον αναλυτή δυαδικού μανιφέστου και τα εργαλεία υπογραφής APK v1+v2 στο xapktoapk.com. Εντοπίζετε μια παρωχημένη εντολή ή αλλαγή λειτουργικού συστήματος; Στείλτε ένα συντακτικό σημείωμα.