Πώς να κάνετε deodex υλικολογισμικό χρησιμοποιώντας jbart. Τι είναι το odex και το deodex στο Android. Αποσυσκευασία και ανάλυση του αρχικού αρχείου

Εάν δεν είστε απλός χρήστης μιας συσκευής που βασίζεται σε Android, αλλά σας αρέσει να εγκαταστήσετε διάφορα υλικολογισμικά, τότε πιθανότατα έχετε ακούσει ή διαβάσει σε διάφορα φόρουμ και ιστότοπους σχετικά με το "odexed" και το "deodexed" firmware. Ποιά είναι η διαφορά? Εν ολίγοις, το υλικολογισμικό Deodex είναι πιο κατάλληλο για τροποποίηση. Ο προγραμματιστής του deodexed firmware μπορεί να αλλάξει ανεξάρτητα την εμφάνιση των εικονιδίων, να διαμορφώσει διάφορα μενού και ούτω καθεξής. Ας σας πούμε για όλα με περισσότερες λεπτομέρειες.

Τι είναι το Deodex;

Το υλικολογισμικό Android, όπως και κάθε άλλη εφαρμογή, έχει ένα ειδικό "εκτελεστικό" τμήμα που έχει σχεδιαστεί για να εκτελεί προ-προγραμματισμένες ενέργειες. Όπως μπορείτε να δείτε και μόνοι σας, αυτές οι εντολές τοποθετούνται σε ξεχωριστό αρχείο classes.DEX, το οποίο υπάρχει στο υλικολογισμικό.

Συχνά, στο επίσημο υλικολογισμικό, ο κατασκευαστής μετακινεί αυτό το αρχείο εκτός του υλικολογισμικού για να επιταχύνει την εργασία και να μειώσει την ποσότητα της μνήμης που καταλαμβάνει το υλικολογισμικό. Η μετάβαση στο Android 5.0 με το περιβάλλον χρόνου εκτέλεσης ART άλλαξε σημαντικά τη διαδικασία εκκίνησης και εγκατάστασης εφαρμογών, αλλά η ίδια η έννοια του odex και του deodex διατηρήθηκε.

Πλεονεκτήματα και μειονεκτήματα του υλικολογισμικού Odex και Deodex


- Πιο περίπλοκη διαδικασία τροποποίησης υλικολογισμικού
+ Μικρή αύξηση στην απόδοση του υλικολογισμικού
+ Εξοικονομήστε χώρο κατά την εγκατάσταση προγραμμάτων


+ Απλοποιημένη προσαρμογή υλικολογισμικού
- Χρειάζεστε περισσότερο χώρο για την εγκατάσταση εφαρμογών

Πώς να αποκτήσετε το υλικολογισμικό Deodex;

Πριν ξεκινήσετε τη διαδικασία απεγγραφής του υλικολογισμικού, πρέπει να πληρούνται ορισμένες προϋποθέσεις. Το πρώτο βήμα είναι να το εγκαταστήσετε και να το διαμορφώσετε στον υπολογιστή σας. Στη συνέχεια, πρέπει να αποκτήσουμε δικαιώματα Root στην κινητή συσκευή μας, να εγκαταστήσουμε οποιονδήποτε διαχειριστή αρχείων με πρόσβαση στο διαμέρισμα συστήματος και να αντιγράψουμε τους παρακάτω φακέλους στη μνήμη της συσκευής ή σε μια κάρτα microSD.

/εφαρμογή
/priv-app
/δομή


Deodex χρησιμοποιώντας JoelDroid Batch Deodexer

Αυτό το βοηθητικό πρόγραμμα θα λειτουργεί μόνο με συσκευές που βασίζονται σε Android 5.0 και μεταγενέστερες εκδόσεις. Πρέπει επίσης να εγκαταστήσετε και να κατεβάσετε την ίδια την εφαρμογή.


  • Αποσυσκευάστε το αρχείο με το βοηθητικό πρόγραμμα ]JoelDroid Lollipop Batch Deodexer V 2.5.

  • Προηγουμένως αποθηκευμένοι φάκελοι εφαρμογή, ιδιωτική εφαρμογή, πλαίσιο

  • Εκκινήστε το βοηθητικό πρόγραμμα JoelDroid Lollipop Batch Deodexer, κάντε κλικ στο κουμπί "Αναζήτηση" και υποδείξτε τον κατάλογο στον υπολογιστή σας όπου αντιγράψατε εφαρμογή, ιδιωτική εφαρμογή, πλαίσιο

  • Κάντε κλικ στο κουμπί "Έναρξη διαδικασίας"

Deodex χρησιμοποιώντας Deodexer για Android Runtime

Πρώτα απ 'όλα, κατεβάστε το αρχείο και αποσυσκευάστε το. Η περαιτέρω διαδικασία δεν διαφέρει από το προηγούμενο βοηθητικό πρόγραμμα:


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

  • Εκτελέστε το βοηθητικό πρόγραμμα Deodexer για Android Runtime, καθορίστε τον κατάλογο στον υπολογιστή σας όπου αντιγράψατε εφαρμογή, ιδιωτική εφαρμογή, πλαίσιο

  • Κάντε κλικ στο κουμπί "Εκτέλεση"και περιμένετε να ολοκληρωθεί η διαδικασία απεξάρτησης.

Deodex χρησιμοποιώντας Jbart

Σε αντίθεση με τα προηγούμενα βοηθητικά προγράμματα, τα οποία μπορούν να λειτουργήσουν μόνο με συσκευές που βασίζονται σε Android 5.0 και νεότερη έκδοση, αυτό το βοηθητικό πρόγραμμα δεν συνδέεται με το λειτουργικό σύστημα. Μπορείτε να φτιάξετε Deodex για οποιαδήποτε συσκευή από Android 2.3.x Ginerbread έως Android 6.0 Marshmallow.



Καθένας από εσάς έχει ακούσει τις λέξεις "deodex" ή "odex" περισσότερες από μία φορές. Συνήθως, βρίσκονται εκεί όπου δημοσιεύονται διάφορα υλικολογισμικά για τη συσκευή σας, για παράδειγμα, στο XDA-Developers ή στο 4pda. Τι σημαίνει λοιπόν, DEODEX ή ODEX; Ποιες είναι οι διαφορές τους; Πώς να φτιάξετε το DEODEX; Θα βρείτε απαντήσεις σε αυτές και σε άλλες ερωτήσεις στο επόμενο τεύχος του αφιερώματος «Τι είναι...».
Το Odex (Optimized Dalvik Executable File) είναι ένα αρχείο που βρίσκεται στον ίδιο φάκελο με τις εφαρμογές συστήματος, το οποίο αποθηκεύει τον κώδικα του ίδιου του προγράμματος. Όπως γνωρίζετε, κάθε πρόγραμμα χρειάζεται οδηγίες, χάρη στις οποίες αυτό (το πρόγραμμα) θα εκτελέσει τη μία ή την άλλη λειτουργία ή εργασία. Αυτός είναι ακριβώς ο κώδικας προγράμματος που περιέγραψα νωρίτερα. Εάν θέλετε να τροποποιήσετε οποιοδήποτε αρχείο συστήματος, θα χρειαστεί να ψάξετε τόσο στο ίδιο το αρχείο odex όσο και στο .apk κατά την εγκατάσταση του υλικολογισμικού odex. Από αυτό γίνεται σαφές ότι αυτή η διαδικασία δεν θα είναι πολύ εύκολη. Αυτός είναι ο λόγος που εφαρμόστηκε η δυνατότητα του υλικολογισμικού deodex.

Όπως ήδη γνωρίζετε, στο υλικολογισμικό odex τα αρχεία αποθηκεύονται «τυχαία». Ωστόσο, με το deodex δεν υπάρχει τέτοια διαταραχή, ας πούμε έτσι. Όλα τα αρχεία στο deodex αποθηκεύονται σαν αρχείο .zip, αλλά στην περίπτωσή μας είναι «συσκευασμένα» σε .apk. Για το λόγο αυτό, η αποσυναρμολόγηση της εφαρμογής για περαιτέρω τροποποιήσεις γίνεται ευκολότερη και λόγω του γεγονότος ότι τα πάντα είναι συσκευασμένα σε ένα μέρος, το υλικολογισμικό deodex ίσως καταλαμβάνει λιγότερο χώρο.

Ωστόσο, το deodex δεν μπορεί να επαινείται ατελείωτα. Το κύριο μειονέκτημα του deodex είναι ότι οι εφαρμογές χρειάζονται λίγο περισσότερο χρόνο για να φορτώσουν από ό,τι στο odex. Πιθανότατα, ο χρήστης δεν θα το προσέξει αυτό. Αλλά δεν μπορώ παρά να σημειώσω ότι τόσο το πλεονέκτημα του odex όσο και το μειονέκτημα του deodex είναι ότι όλες οι εφαρμογές συστήματος στο odex βελτιστοποιούνται για μια συγκεκριμένη συσκευή από τον ίδιο τον κατασκευαστή. Και αυτό είναι αναμφίβολα ένα συν του υλικολογισμικού odex.

Σχεδόν ξέχασα να αναφέρω ότι όταν εγκαθιστάτε διάφορες έτοιμες τροποποιήσεις στο σύστημα για τη συσκευή σας, πρέπει να έχετε υλικολογισμικό deodex.

Πιθανώς, σε αυτήν την κατάσταση, η έννοια των όρων είναι σαφής. Και είμαι πρόθυμος να στοιχηματίσω ότι κάποιοι θέλουν ήδη να δοκιμάσουν το deodex. Υπάρχει ένας τεράστιος αριθμός οδηγιών για το υλικολογισμικό deodex στον Παγκόσμιο Ιστό. Ωστόσο, δεν θα τολμήσω να σας στείλω να τα ψάξετε στο Google, αλλά απλά θα γράψω σιωπηλά όλη αυτή τη διαδικασία, προσπαθώντας να επισημάνω όλα τα μικρά πράγματα.

Οι οδηγίες για διαφορετικές εκδόσεις Android δεν είναι ίδιες. Λόγω του γεγονότος ότι το Android 5.0 Lollipop είναι εγκατεστημένο στη συσκευή μου, θα γράψω οδηγίες για το deodex ειδικά για αυτήν την έκδοση.

  1. Αρχικά, πρέπει να κατεβάσουμε ένα ειδικό βοηθητικό πρόγραμμα, το JoelDroid Lollipop Batch Deodexer, στον υπολογιστή μας. Αυτό το βοηθητικό πρόγραμμα απαιτεί ένα πρόγραμμα Java για να λειτουργήσει. Σημειώνω ότι σε συχνές περιπτώσεις, μια εφαρμογή Java γράφει λανθασμένα και λανθασμένα τη διαδρομή της. Για το λόγο αυτό, πρέπει να καταχωρήσετε μη αυτόματα αυτή τη διαδρομή σύμφωνα με αυτές τις οδηγίες.
  • Μετά από αυτό, πρέπει να εγκαταστήσουμε οποιονδήποτε διαχειριστή αρχείων στη συσκευή μας που λειτουργεί με Android 5.0 Lollipop, μέσω του οποίου πρέπει να αντιγράψουμε τους τρεις κύριους φακέλους συστήματος - APP, PRIV-APP, FRAEMWORK - σε έναν ξεχωριστό φάκελο στην κάρτα SD. Βρίσκονται στον ριζικό φάκελο System.


  • Στη συνέχεια, πρέπει να δημιουργήσουμε το φάκελο MyROM στη ρίζα οποιασδήποτε εσωτερικής μονάδας δίσκου στον υπολογιστή σας. Στη συνέχεια δημιουργούμε έναν άλλο φάκελο σε αυτόν τον φάκελο, αλλά με το όνομα System. Θεωρητικά, θα πρέπει να λάβετε την ακόλουθη διαδρομή - E:\MyROM\system. Όπου "E" είναι η εσωτερική αποθήκευση (σκληρός δίσκος)
  • Αυτοί οι φάκελοι συστήματος που αντιγράψαμε στο δεύτερο βήμα πρέπει να μετακινηθούν στο φάκελο E:\MyROM\system.
  • Τώρα, θεωρητικά, έχουμε ετοιμάσει τα πάντα, και μπορούμε ήδη να προχωρήσουμε στο σημείο ΑΠΟΔΟΞΕΩΣΗΣ.
  • Εκκινήστε το προηγουμένως εγκατεστημένο βοηθητικό πρόγραμμα JoelDroid Lollipop Batch Deodexer.
  • Κάνοντας κλικ στο κουμπί "Αναζήτηση" στο βοηθητικό πρόγραμμα, πρέπει να δείξουμε τη διαδρομή προς E:\MyROM\system
  • Το μονοπάτι υποδεικνύεται, όλα είναι έτοιμα. Το μόνο που έχουμε να κάνουμε είναι να πατήσουμε το πλήκτρο «Start Prosecc» και μετά θα ξεκινήσει η απεξάρτηση. Αυτή η διαδικασία διαρκεί περίπου 10-15 λεπτά.
  • Αφού ολοκληρωθεί η απεξάρτηση, πρέπει να αντιγράψουμε τα αρχεία που προκύπτουν, τα οποία βρίσκονται κατά μήκος της διαδρομής E:\MyROM\system, σε μια μονάδα flash MicroSD στη συσκευή σας.
  • Στη συνέχεια, πρέπει να κατεβάσουμε το AROMA FileManager και να το εγκαταστήσουμε μέσω προσαρμοσμένης ανάκτησης στη συσκευή σας. Αλλά πριν από την εγκατάσταση, πρέπει να επιλέξουμε Σύστημα στην ενότητα Mount εάν δεν είναι επιλεγμένο.
  • Μετά από όλα αυτά, πρέπει να πάμε στη ρίζα του συστήματος αρχείων και να διαγράψουμε τους φακέλους APP, PRIV-APP και FRAEMWORK από το φάκελο System, απλά να τους διαγράψουμε, αφού κατά την αντιγραφή των φακέλων ARM θα παραμείνουν και η όλη διαδικασία, σκεφτείτε το , έχει πέσει στον αγωγό.
  • Στη συνέχεια, αντιγράψτε τους φακέλους deodex που μεταφέρθηκαν προηγουμένως στο βήμα 9 στο φάκελο System στη ρίζα ολόκληρου του συστήματος αρχείων.
  • Μετά από αυτό, πρέπει να αναβοσβήσουμε ένα σενάριο που ορίζει δικαιώματα για φακέλους (RWXRX-RX), αρχεία .apk και αρχεία .xml (RW-R-R)
  • Στη συνέχεια πρέπει να φτιάξουμε wipe cache και wipe dalvik/art. Επανεκκινήστε τη συσκευή και απολαύστε το υλικολογισμικό deodex που λάβατε.

  • Βεβαιωθείτε ότι έχετε εγκαταστήσει το DEODEX - μπορείτε να ενημερώσετε το υλικολογισμικό χρησιμοποιώντας τις ακόλουθες σύντομες οδηγίες: D


    Πιστεύω απόλυτα ότι έχω μιλήσει για τα πιο βασικά πράγματα για τους όρους ODEX και DEODEX και αυτό το άρθρο μπορεί να ολοκληρωθεί. Σας ευχαριστούμε όλους για την προσοχή σας, αξιολογήστε το άρθρο, να έχετε μια καλή μέρα και ένα επιτυχημένο ΚΑΛΟΚΑΙΡΙ!

    Οι χρήστες Android μπορούν να χωριστούν σε δύο ομάδες. Το πρώτο είναι εκείνοι για τους οποίους είναι σημαντικό να έχουν σταθερή εργασία και το τηλέφωνο να λειτουργεί απλά. Οι δεύτεροι είναι εκείνοι που ανυπομονούν να δοκιμάσουν νέες λειτουργίες και να ελέγξουν άλλο υλικολογισμικό για το τηλέφωνό τους, που αγαπούν πραγματικά να ασχολούνται με το τηλέφωνό τους. Εδώ βρίσκεται η κύρια διαφορά μεταξύ του υλικολογισμικού ODEX και DEODEX.

    Υλικολογισμικό ODEX (odexed).– πρόκειται για επίσημο, επώνυμο ή εργοστασιακό υλικολογισμικό Android. Τα DEODEX (deoxified) είναι υλικολογισμικά που έχουν τροποποιηθεί από χρήστες.

    Γιατί τέτοια διάκριση;

    Το υλικολογισμικό "Odexed" θα αποκαλυφθεί αμέσως από την παρουσία αρχείων με την επέκταση .odex στο φάκελο /system/app. Η συντομογραφία odex σημαίνει "Βελτιστοποιημένο εκτελέσιμο αρχείο Dalvik". Αυτό το είδος αρχείου είναι πολύ απαραίτητο για μια σαφή δομή συστήματος που περιέχει όλες τις πληροφορίες σχετικά με την εφαρμογή. Το Android λαμβάνει τα δεδομένα αμέσως απευθείας χωρίς να αποσυμπιέζει τα αρχεία apk. Τα αρχεία .odex συνήθως φορτώνονται στην κρυφή μνήμη Dalvik, η οποία αποθηκεύει πληροφορίες σχετικά με προγράμματα που χρησιμοποιεί συχνά ο χρήστης. Η ταχύτητα του συστήματος αυξάνεται σημαντικά.

    Τα πλεονεκτήματα του υλικολογισμικού ODEX μπορούν να καταγραφούντο γεγονός ότι οι εφαρμογές ανοίγουν πιο γρήγορα και τα αρχεία apk καταλαμβάνουν λίγο χώρο. Τα μειονεκτήματα είναι η δυσκολία χακαρίσματος και αλλαγής προγραμμάτων. Αλλά οι περισσότεροι χρήστες δεν το χρειάζονται αυτό· εκτιμούν την ταχύτητα και τη σταθερότητα του συστήματος.

    Για παράδειγμα, ένα τέτοιο υλικολογισμικό είναι μια ιδανική λύση για όσους θέλουν απλώς να κατεβάσουν παιχνίδια σε tablet Android (http://vipsmart.org/all-genres/tablet/).

    DEODEX



    Στο "deodexed" firmware, οι πληροφορίες της εφαρμογής περιέχονται στο αρχείο apk. Ο κώδικας που συνήθως εισάγεται σε ένα αρχείο odex περιλαμβάνεται σε ένα apk που ονομάζεται classex.dex.

    Τα κύρια πλεονεκτήματα αυτού του υλικολογισμικού είναι ότι είναι πολύ πιο εύκολο να τροποποιηθούν (όλα τα δεδομένα βρίσκονται σε ένα μέρος) και τα προγράμματα συστήματος είναι ευκολότερο να αφαιρεθούν.

    Ένα από τα μειονεκτήματα είναι ότι τα προγράμματα χρειάζονται περισσότερο χρόνο για να ξεκινήσουν. Αλλά αυτό το μειονέκτημα δεν είναι πολύ σημαντικό. Το Dalvic-cache αποθηκεύει όλα τα δεδομένα σχετικά με τις εφαρμογές που χρησιμοποιεί συχνά ο χρήστης. Και τα προγράμματα χρειάζονται πολύ χρόνο για να φορτωθούν μόνο μετά την εκκαθάριση της κρυφής μνήμης Dalvic. Για παράδειγμα, μετά την εγκατάσταση μιας ενημέρωσης υλικολογισμικού ή σε άλλες περιπτώσεις.

    Συνοψίζοντας, μπορούμε να πούμε με σιγουριά ότι το firmware "odexed" (εργοστασιακό) συνιστάται για όσους εκτιμούν την ταχύτητα και τη σταθερότητα. Τα "Deoxed" (προσαρμοσμένα) είναι πιο κατάλληλα για εκείνους για τους οποίους είναι σημαντικό να προσαρμόσουν πλήρως το υλικολογισμικό ώστε να ταιριάζει στις ανάγκες τους, να δοκιμάσουν νέες λειτουργίες και να "σκάψουν βαθύτερα" στο σύστημα Android.

    Γεια σου Χαμπρ!

    Πριν από αρκετά χρόνια, όταν πρωτογνωρίστηκα στο Android, άκουσα από έναν συνάδελφο ότι το Android παρέχει τη δυνατότητα εγκατάστασης τροποποιημένου ή σπιτικού υλικολογισμικού. Ειλικρινά, ήμουν πολύ μακριά από αυτό τότε. Και ακόμη και πριν από μισό χρόνο σχεδόν δεν με ενδιέφεραν τέτοια πράγματα. Βαθιά στην καρδιά μου, ήμουν σίγουρος ότι αυτό που έκανε ο κατασκευαστής προοριζόταν ήδη για κανονική χρήση.

    Φανταστείτε την απογοήτευσή μου όταν αγόρασα ένα τηλέφωνο από την Κίνα, όπου οι εργοστασιακές ρυθμίσεις απαγόρευαν τη χρήση του Google, του Skype, του Facebook και άλλων εφαρμογών. Κατ 'αρχήν, ήταν δυνατό να κλείσω τα μάτια σε ορισμένα πράγματα, αλλά όταν το τηλέφωνό μου δεν απαιτούσε τη χρήση λογαριασμού Google, έδωσα υποσχέσεις να το καταλάβω οπωσδήποτε ανεξάρτητα από το τι μου συνέβαινε.

    Πέρασε μισός χρόνος και το προσαρμοσμένο υλικολογισμικό μου χρησιμοποιείται με επιτυχία σε όλο τον κόσμο.

    Αυτή η σειρά άρθρων θα συζητήσει πώς να κάνετε αντίστροφο προγραμματισμό για Android, να εφαρμόσετε ενημερώσεις κώδικα, τροποποιήσεις και mods.

    Προοίμιο

    Ετσι! Ας ορίσουμε πρώτα τις έννοιες που θα χρησιμοποιηθούν δεδομένοςάρθρο. Η συνήθης κατανόησή σας, ωστόσο, μπορεί να είναι πολύ διαφορετική.

    Κηλίδα- αλλαγή ή αντικατάσταση υπάρχοντος κώδικα προγράμματος προκειμένου να τροποποιηθεί ο αλγόριθμος του προγράμματος.
    Maud- κατά κανόνα, προσθήκη πρόσθετης λειτουργικότητας στον υπάρχοντα κώδικα προγράμματος χωρίς αλλαγή του αλγόριθμου.
    Μικροδιόρθωση- βελτίωση της λειτουργικότητας του προγράμματος προκειμένου να διευκολυνθεί η πρόσβαση στις παραμέτρους του συστήματος.

    Θέλω επίσης να σημειώσω ότι όλα τα παραδείγματα θα ληφθούν για ένα τηλέφωνο HTC, αλλά αυτό δεν σημαίνει ότι αυτές οι πληροφορίες δεν μπορούν να χρησιμοποιηθούν σε άλλα τηλέφωνα.

    Προετοιμασία του περιβάλλοντος

    Μπορώ να κάνω χωρίς λεπτομερείς οδηγίες σχετικά με τον τρόπο χρήσης αυτού ή εκείνου του λογισμικού. Εάν ενδιαφέρεστε για αυτό το άρθρο και έχετε διαβάσει μέχρι εδώ, τότε ελπίζω να είστε ήδη έμπειρος χρήστης και να έχετε εμπειρία χρήσης ή τουλάχιστον πειραματισμού σε αυτόν τον τομέα. Υπάρχουν πολλές οδηγίες, άρθρα και αποτελέσματα δοκιμών στο δημόσιο τομέα, όπως και στο Habré. Θα κάνω επίσης χωρίς να περιγράψω ορισμένους όρους, διαφορετικά το άρθρο θα αποδειχθεί πολύ μεγάλο και κουραστικό. Θα γράψουμε μόνο επί της ουσίας. Είμαι σίγουρος ότι είσαι την Τετάρτη για πολύ καιρό. Αν όχι, τότε προτείνω να το κατεβάσετε και να το εγκαταστήσετε.

    1 . Android SDK. Αυτό είναι ένα περιβάλλον ανάπτυξης εφαρμογών για Android. Για να κάνουμε τροποποιήσεις, θα πρέπει οπωσδήποτε να ελέγξουμε τον κωδικό του προγράμματος μας. Το περιβάλλον ανάπτυξης είναι το καλύτερο που μπορούμε να χρησιμοποιήσουμε.
    2 . Android Κουζίνα. Αυτό το βοηθητικό πρόγραμμα θα σας επιτρέψει να εργαστείτε με εικόνες διαμερισμάτων συστήματος επίσημου ή ανεπίσημου υλικολογισμικού.
    3 . JD-GUI. Απομεταγλωττιστής κώδικα Java. Θα ήθελα να σημειώσω αμέσως ότι αυτός είναι ο καλύτερος απομεταγλωττιστής όσον αφορά την ευκολία χρήσης.
    4 . DJ Java Decompiler. Ένας άλλος απομεταγλωττιστής, ή αποσυναρμολογητής, όπως κάποιοι θέλουν να τον αποκαλούν, κώδικα προγράμματος γλώσσας Java. Δεν είναι βολικό στη χρήση, αλλά αναλύει κώδικα που μερικές φορές το JD-GUI δεν κατανοεί.
    5 . smali. Άλλος ένας αποσυναρμολογητής, αλλά αυτή τη φορά κωδικός dalvik. Το smali χρειάζεται για την αποσυναρμολόγηση και το backsmali για τη συναρμολόγηση κώδικα.
    6 . dex2jar. Ένα βοηθητικό πρόγραμμα για τη μετατροπή εκτελέσιμων αρχείων κώδικα Dalvik.

    Μετατροπή υλικολογισμικού

    Φυσικά, το υλικολογισμικό που έχετε στο τηλέφωνό σας από τον κατασκευαστή είναι βελτιστοποιημένο για μείωση της κατανάλωσης ενέργειας. Για να τροποποιηθεί το υλικολογισμικό, πρέπει να μετατραπεί σε μορφή που να επιτρέπει την τροποποίηση του κώδικα. Το Android Kitchen χρησιμοποιείται για αυτό. Φυσικά, μπορείτε να το κάνετε με τα χέρια σας, όπως έκανα πριν μέχρι να βρω αυτήν την ίδια την «κουζίνα». Μπορείτε να διαβάσετε στο Διαδίκτυο πώς να αφαιρέσετε την περιοχή του συστήματος από το τηλέφωνο, να εγκαταστήσετε το περιβάλλον και να δημιουργήσετε υλικολογισμικό DEODEX. Αν δεν καταλαβαίνετε τίποτα ήδη, νομίζω ότι αξίζει να περιμένετε να διαβάσετε αυτό το άρθρο μέχρι να αποκτήσετε αρκετή εμπειρία.

    Αφού αλλάξει το υλικολογισμικό από βελτιστοποιημένη έκδοση (ODEX - βελτιστοποιημένος εκτελέσιμος κώδικας dalvik, αν με εξυπηρετεί σωστά η μνήμη μου) σε DEODEX (δηλαδή ΟΧΙ βελτιστοποιημένο), όλα τα εκτελέσιμα αρχεία είναι έτοιμα για τροποποίηση.

    Άμεσες τροποποιήσεις

    Δημιουργία patches
    Όπως είπα ήδη, το τηλέφωνό μου είχε αρχικά απαγορευτεί από τη χρήση της Google. Λοιπόν, ανεξάρτητα από το τι, δεν μπορείτε να πάτε στο Playstore, δεν μπορείτε να δημιουργήσετε λογαριασμό, ο τηλεφωνικός κατάλογος δεν συγχρονίζεται πραγματικά. Γιατί χρειάζεστε ένα τέτοιο Android; Μετά από αρκετή ώρα στο logcat της ίδιας της συσκευής, βρήκα καταχωρήσεις που έλεγαν ότι η χρήση της Google απαγορεύεται. Το πιο ενοχλητικό πράγμα για το Android είναι ότι βλέπετε το αρχείο καταγραφής, αλλά δεν ξέρετε ποια εφαρμογή συστήματος το παράγει. Για να βρω από πού προέρχονταν τα πόδια μου, έπρεπε να μεταφέρω όλες τις εφαρμογές του συστήματος σε αποσυναρμολογημένο κώδικα Java. Χρειάστηκε πολύς χρόνος, αλλά εξακολουθώ να χρησιμοποιώ τη δουλειά που έκανα κατά την ανάλυση και την εύρεση του σωστού κώδικα. Τα βήματα για την απόκτηση τέτοιων εργαλείων είναι τα εξής:
    1 . Κάντε DEODEX από όλο το υλικολογισμικό
    2 . Το νέο σας υλικολογισμικό DEODEX θα πρέπει να συναρμολογηθεί και να αναβοσβήσει στο τηλέφωνό σας. Το πώς γίνεται αυτό είναι θέμα άλλου άρθρου.
    3 . Από κάθε αρχείο που βρίσκεται στο /system/framework, εξαγάγετε το αρχείο classes.dex και μετατρέψτε το σε JAR χρησιμοποιώντας το dex2jar.
    4 . Ανοίξτε κάθε JAR που προκύπτει στο JD-GUI και αποθηκεύστε το ξανά στον πηγαίο κώδικα
    5 . Αποσυσκευάστε τον πηγαίο κώδικα από το αρχείο.

    Στο τέλος, κατέληξα με όσους φακέλους υπήρχαν αρχεία JAR στο /system/framework και κάθε φάκελος είχε μια δομή πηγαίου κώδικα Java.
    Μέσα από απλούς χειρισμούς, βρήκα γρήγορα το μέρος που δημιουργούσε καταχωρήσεις στο logcat.

    Δεν θα εξετάσουμε ολόκληρη τη λογική της απαγόρευσης, αφού κάθε περίπτωση είναι μια ξεχωριστή ιστορία. Έπρεπε να περάσω μερικές ώρες πριν βρω πού έγιναν οι έλεγχοι, έφτιαξα ένα μπλοκ διάγραμμα του αλγορίθμου στο κεφάλι μου και κατάλαβα πού να πάω για να «χαλάσω» λίγο τον αλγόριθμο.

    Αποδείχθηκε απλό. Υπάρχει μια υπορουτίνα που, με βάση προκαθορισμένες σταθερές, όταν επικοινωνούσε, απαντούσε αν το τηλέφωνο ανήκει στην Κίνα ή όχι.

    Ο κωδικός ήταν στο αρχείο HTCExtension.jar, και η τάξη που περιείχε αυτήν την υπορουτίνα ήταν μέσα

    Αποσυσκευασία και ανάλυση του αρχικού αρχείου
    1 . Αρχικά, πρέπει να πάρουμε το αρχικό αρχείο DEODEX JAR, το οποίο είναι υπεύθυνο για το τμήμα του κώδικα που χρειαζόμαστε. Στην περίπτωσή μας HTCExtension.jar.
    2 . Ανοίξτε με οποιοδήποτε αρχείο αρχειοθέτησης και τραβήξτε το classes.dex από εκεί
    3 . Χρησιμοποιήστε τον μετατροπέα dex2jar για να το μετατρέψετε σε αρχείο JAR. Εντολή: dex2jar.bat classes.dex
    4 . Ανοίξτε το αρχείο classes_dex2jar.jar που προκύπτει στο JD-GUI.
    5 . Ναι, τις περισσότερες φορές το JD-GUI απομεταγλωττίζει τον κώδικα όχι όπως φαίνεται στο πρωτότυπο, είναι κατανοητό, αλλά είναι αρκετά ευανάγνωστο. Στον πηγαίο κώδικα βλέπουμε ότι η υπορουτίνα ελέγχει τις παραμέτρους του έργου και τη σημαία γλώσσας υλικολογισμικού. Στην ατυχή περίπτωση μας, επιστρέφεται η ΑΛΗΘΕΙΑ.
    δημόσιος στατικός δυαδικός ορισμός isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag) (HtcBuildFlag.Htc_PROJECT_flag). 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) επιστροφή true; return false; )
    6 . Για να φτιάξουμε ένα patch, πρέπει να αποσυναρμολογήσουμε τον ίδιο τον κώδικα Dalvik. Για αυτό χρησιμοποιούμε μπακσμάλι. Ο πιο βολικός τρόπος είναι να δημιουργήσετε έναν ξεχωριστό φάκελο και να τοποθετήσετε τρία αρχεία εκεί μαζί: HTCExtension.jar, smali.βάζοΚαι μπακσμάλι.βάζο. Δώστε την εντολή java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar

    Αυτό είναι το API για την έκδοση του Android που διαθέτετε. Για τον JB είναι 16
    - ο φάκελος όπου βρίσκονται όλα τα πλαίσια υλικολογισμικού.

    Στην περίπτωσή μου ήταν η εντολή
    java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
    7 . Στον νέο μας φάκελο εμφανίστηκε ο φάκελος HTCExtension και σε αυτόν τα αρχεία μας με κώδικα Dalvik.
    8 . Εύρεση του αρχείου κατά μήκος της διαδρομής \com\htc\util\contacts\BuildUtils$Customization.javaκαι κοιτάξτε τον κωδικό:
    .method public static isChina()Z .registers 3 .prologue const/4 v0, 0x1 .line 276 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/0x1 v1 , v2, :cond_13 sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0xda if-eq v1, v2, :cond_13 sget-short/HtcBuildFlag, ;->Htc_PROJECT_flag:S const/16 v2, 0x17 if-ne v1, v2, :cond_14 .line 297:cond_13:goto_13 return v0 .line 283:cond_14 sget-short v1, Lcom/hctflag>Building/htflag Htc_PROJECT_flag:S if-ne v1, v0, :cond_1d .line 285 const/4 v1, 0x2 sget-short v2, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_LANGUAGE_flag:S v.3-2, 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .γραμμή 297, λήξεως . μέθοδος
    9 . Τρομακτικό, έτσι δεν είναι; Τίποτα δεν είναι ξεκάθαρο. Αλλά αυτό είναι ένα ζήτημα που μπορεί να διορθωθεί. Έχοντας δημιουργήσει μερικές από τις δικές σας ενημερώσεις κώδικα και έτσι έχετε αποκτήσει εμπειρία, μπορείτε εύκολα να τροποποιήσετε τον κώδικα χωρίς εργαλεία τρίτων. Στην περίπτωσή μας, σε αυτόν τον κώδικα
    Το .prologue const/4 v0, το 0x1 εκχωρεί στη μεταβλητή v0 την τιμή 1, δηλαδή TRUE. Στη συνέχεια, υπάρχουν κάθε είδους έλεγχοι και αν το τηλέφωνο δεν είναι κινέζικο, τότε η τιμή της μεταβλητής αλλάζει:
    .line 297 const/4 v0, 0x0 goto:goto_13
    10 . Ο ευκολότερος τρόπος για να σώσετε τον πατέρα της ρωσικής δημοκρατίας είναι να αλλάξετε τον κώδικα ως εξής:
    .prologue const/4 v0, 0x0 , δηλαδή αλλάξτε την τιμή της μεταβλητής από 1 σε 0. Δηλαδή, ανεξάρτητα από το τι, η τιμή FALSE θα επέστρεφε πάντα και στο JD-GUI ο κώδικας θα έμοιαζε με δημόσιο στατικό boolean isChina() ( if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag =(laFROJECT_flag =(laFROJECT_flag =(laFROJECT_flag ==(laFROJECT_cT); && ( 2 == HtcBuildFlag.Htc _LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) επιστροφή false; επιστροφή ψευδής; )
    11 . Ναι, η μέθοδος θα λειτουργήσει. Αλλά δεν ψάχνουμε εύκολους τρόπους - αυτή τη φορά. Δεύτερον, δεν είναι ακριβώς όμορφο. Θα ήθελα κώδικα κάτι σαν
    δημόσιος στατικός boolean isChina() ( return false; )
    12 . Πώς μπορούμε να λάβουμε τον κώδικα Dalvik για αυτόν τον πηγαίο κώδικα; Για αρχάριους θα κάνουμε ένα μικρό κόλπο.

    Δημιουργία κώδικα Dalvik
    1 . Ανοίξτε το Android SDK.
    2 . Δημιουργούμε ένα νέο έργο και γράφουμε τον παρακάτω κώδικα στη μοναδική μας δοκιμαστική τάξη
    πακέτο ru.habrahabr.test; τεστ δημόσιας τάξης (δημόσιο στατικό δυαδικό isChina() (επιστροφή ψευδής; ) )
    3 . Μεταγλωττίζουμε το έργο μας και στη συνέχεια παίρνουμε τη συναρμολογημένη εφαρμογή από τον χώρο εργασίας.
    4 . Βάλαμε τη συναρμολογημένη εφαρμογή στο φάκελο όπου αφαιρέσαμε το αρχείο JAR.
    5 . Δώστε την εντολή java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk
    6 . Αποσυναρμολογήσαμε τη νέα εφαρμογή σε κώδικα Dalvik.
    7 . Ανοίξτε το αρχείο test.smali και δείτε τον κώδικα εκεί
    .μέθοδος public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end μέθοδος
    8 . Αυτό είναι όλο, ο κώδικας επιδιόρθωσης είναι έτοιμος.
    Κυλώντας ένα έμπλαστρο
    1 . Ο κώδικας Dalvik είναι γεμάτος με δείκτες που υποδεικνύουν μια γραμμή κώδικα στο αρχικό αρχείο προέλευσης. Αυτό είναι απαραίτητο κατά την εμφάνιση σφαλμάτων, εάν υπάρχουν, στο πρόγραμμά σας. Ο κώδικας λειτουργεί επίσης καλά χωρίς να προσδιορίζει γραμμές.
    2 . Διαγράφουμε τις γραμμές με αρίθμηση γραμμών, αντιγράφουμε και αντικαθιστούμε τη μέθοδο (υπορουτίνα) στο δικό μας \com\htc\util\contacts\BuildUtils$Customization.javaαρχείο.
    .method public static isChina()Z .registers 1 .prologue const/4 v0, 0x0 return v0 .end μέθοδος
    3 . Αποθηκεύστε το αρχείο. Ναι, ξέχασα να πω, χρειάζεστε έναν κανονικό επεξεργαστή, για παράδειγμα Notepad++ ή EditPlus. Σε ποιον αρέσει ποιο;
    Μεταγλώττιση και δημιουργία ενός επιδιορθωμένου αρχείου JAR
    1 . Χρησιμοποιώντας το backsmali, αφαιρέσαμε το αρχείο JAR και τώρα πρέπει να το ξανασυνθέσουμε.
    2 . Δώστε την εντολή java -Xmx512m -jar smali.jar -a 16 HTCExtension -o classes.dex
    3 . Το αρχείο classes.dex εμφανίζεται στον φάκελό μας
    4 . Ανοίγοντας ξανά HTCExtension.jarαρχείο με αρχειοθέτηση και αντικαταστήστε το υπάρχον σε αυτό τάξεις.dexσε αυτόν που μόλις δημιουργήσαμε.
    5 . Αυτό είναι, το δικό μας HTCExtension.jarπεριέχει τροποποιημένο κώδικα προγράμματος.
    Αντικατάσταση του αρχικού αρχείου με ένα επιδιορθωμένο
    Συνήθως, δημιουργούνται ειδικά σενάρια για απλούς χρήστες, τα οποία αντικαθίστανται μέσω ανάκτησης. Δεν μας ενδιαφέρει όμως αυτό. Πρώτον, είναι μακρύ και κουραστικό, και δεύτερον, είμαστε έμπειροι χρήστες και μπορούμε να αντέξουμε οικονομικά κάποιες λεπτές αποχρώσεις.

    1 . Μπορείτε να αντικαταστήσετε το τρέχον αρχείο εργασίας με τις ακόλουθες εντολές εάν έχετε ήδη υλικολογισμικό DEODEX και έχετε πρόσβαση root:

    Adb push HTCExtension.jar /sdcard/HTCExtension.jar adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar of=/system/framework/HTCExtension.jar.back dd if=/sdcard /HTCExtension.jar of=/system/framework/HTCExtension.jar chmod 644 /system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [email προστατευμένο]επανεκκίνηση @classes.dex

    Η πρώτη εντολή μεταφορτώνει το επιδιορθωμένο αρχείο στη μονάδα flash
    Η 2η εντολή ανοίγει το κέλυφος
    Η 3η εντολή δίνει πρόσβαση root
    Η 4η εντολή προσαρτά το σύστημα σε λειτουργία ανάγνωσης/εγγραφής
    Η 5η εντολή δημιουργεί ένα αντίγραφο ασφαλείας του αρχείου
    Η 6η εντολή αντικαθιστά το υπάρχον αρχείο με το νέο διορθωμένο.
    Η 7η εντολή ρυθμίζει τα δικαιώματα
    Η 8η εντολή διαγράφει την κρυφή μνήμη
    Η 9η εντολή επανεκκινεί τη συσκευή.

    2 . Ευχαριστώ που διαβάσατε μέχρι εδώ, μένουν λίγα.
    3 . Μετά από μια επανεκκίνηση, ο νέος διορθωμένος κώδικας θα τεθεί σε ισχύ.
    4 . Εάν ο κωδικός δεν λειτουργεί ή παρουσιαστεί σφάλμα, τότε χρησιμοποιώντας απλούς συνδυασμούς μπορείτε να επιστρέψετε το αντίγραφο ασφαλείας.
    adb shell su mount -o remount -rw /system dd if=/system/framework/HTCExtension.jar.back of=/system/framework/HTCExtension.jar rm /data/dalvik-cache/system@ [email προστατευμένο]επανεκκίνηση @classes.dex

    Επίλογος

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

    Για το επόμενο άρθρο θα σας πω πώς να φτιάξετε Tweeks. Θα υπάρχει ένα παράδειγμα χρήσης αυτόματης εγγραφής τηλεφωνικών κλήσεων με χρήση εγγενών εργαλείων τηλεφώνου. Σας ευχαριστώ για την προσοχή σας.

    ΥΣΤΕΡΟΓΡΑΦΟ. Εάν κάτι δεν είναι ξεκάθαρο ή μπερδεμένο, κάντε ερωτήσεις - θα χαρώ πάντα να απαντήσω και να εξηγήσω.

    Ενώ χρησιμοποιείτε διαφορετικό υλικολογισμικό Android, πιθανότατα έχετε συναντήσει έννοιες όπως "odexed" και "deodexed". Και συχνά, όταν εκτελείτε οποιουσδήποτε χειρισμούς με το υλικολογισμικό, πρέπει να ξέρετε αν είναι "αποξειδωμένο" ή "αποδεξιωμένο" για να μην κάνετε τίποτα ανόητο. Τι κρύβεται λοιπόν πίσω από αυτούς τους δύο όρους;

    Odexed ROM

    Εάν το υλικολογισμικό έχει επισημανθεί ως odexed, τότε στον φάκελο εφαρμογών συστήματος /system/app θα βρείτε αρχεία με την επέκταση .odex. Αυτή η επέκταση σημαίνει ""Optimized Dalvik Executable File"". Εκτός από το κανονικό αρχείο APK, θα βρείτε ένα αντίγραφο .odex του. Για παράδειγμα, Browser.apk και browser.odex.

    Τι είναι ένα αρχείο .odex;

    Αυτό το αρχείο χρησιμεύει κυρίως για την οργάνωση της δομής οποιασδήποτε εφαρμογής, περιέχει οδηγίες εφαρμογής και επιτρέπει στο Android να έχει γρήγορη πρόσβαση σε αυτές χωρίς περιττή αναζήτηση και εξαγωγή από το αρχείο .apk. Τα αρχεία Odex φορτώνονται απευθείας στην κρυφή μνήμη της εικονικής μηχανής Java "dalvik", αυτό επιτρέπει στο σύστημα να λειτουργεί πολύ πιο γρήγορα.

    Πλεονεκτήματα του υλικολογισμικού Odexed

    Οι εφαρμογές ξεκινούν πολύ πιο γρήγορα επειδή ο κώδικάς τους είναι προφορτωμένος στην κρυφή μνήμη dalvik. Το μέγεθος των αρχείων .apk είναι μικρό, επομένως καταλαμβάνουν λιγότερο χώρο.

    Μειονεκτήματα του υλικολογισμικού Odexed

    Η εφαρμογή modding/themes/hacking γίνεται πολύ πιο περίπλοκη αφού ο κώδικας βρίσκεται πλέον σε δύο διαφορετικά σημεία. Εάν διαγράψετε οποιαδήποτε εφαρμογή, το αρχείο .odex πρέπει επίσης να διαγραφεί. Εάν δεν το αφαιρέσετε, ενδέχεται να προκύψουν σφάλματα.

    Deodexed ROM

    Όσον αφορά αυτόν τον τύπο υλικολογισμικού, όλες οι οδηγίες και ο κώδικας για τις εφαρμογές βρίσκονται σε αρχεία .apk. Ο κώδικας που ήταν αποθηκευμένος στο αρχείο .odex είναι τώρα ενσωματωμένος στο .apk που ονομάζεται τάξεις.dex.

    Πλεονεκτήματα του υλικολογισμικού Deodexed

    Το Deodexed είναι πολύ πιο εύκολο για modding/themes/hacking αφού όλος ο κώδικας βρίσκεται πλέον σε ένα αρχείο .apk. Οι εφαρμογές συστήματος αφαιρούνται ευκολότερα επειδή χρειάζεται να καταργήσετε μόνο ένα αρχείο APK.

    Μειονεκτήματα του υλικολογισμικού Deodexed

    Οι εφαρμογές ξεκινούν πιο αργά. Αλλά όχι μόνο οι εφαρμογές, αλλά και το ίδιο το σύστημα χρειάζεται περισσότερο χρόνο για να φορτώσει, αφού το περιεχόμενο της εφαρμογής φορτώνεται από το σύστημα και όχι απευθείας.

    Το υλικολογισμικό Android, το οποίο προέρχεται απευθείας από κατασκευαστές διαφόρων συσκευών, είναι ως επί το πλείστον odexed. Το προσαρμοσμένο υλικολογισμικό, σε 9 από τις 10 περιπτώσεις, έχει αποδεξιωθεί. Αυτό που παίρνουμε είναι ότι το firmware του odexed έχει καλύτερη ταχύτητα λειτουργίας, το Deodexed είναι πιο κατάλληλο για hacks, modding και άλλους χειρισμούς. Αυτό είναι, εν συντομία για το κύριο πράγμα.