Προστατέψτε τα δεδομένα τροποποιώντας το διαμέρισμα συστήματος του σκληρού δίσκου. Τι είναι το Magisk ή πώς να αποκρύψετε το root στο Android

Τι είναι ένα δεσμευμένο διαμέρισμα ή γιατί τα Windows αποκρύπτουν μέρος του δίσκου;

Κατά την πρώτη εγκατάσταση των Windows 7, Windows 8 κ.λπ. σε έναν κενό ή διαμορφωμένο δίσκο (και σε προηγούμενες εκδόσεις του συστήματος δεν υπήρχε τέτοιος τόμος), το πρώτο πράγμα που κάνουν τα Windows είναι να δημιουργήσουν ένα συγκεκριμένο διαμέρισμα στην αρχή του σκληρού δίσκου. Ονομάζεται System Reserved Partition (διατηρημένο διαμέρισμα συστήματος ή διαμέρισμα συστήματος). Το διαμέρισμα χρησιμοποιείται ενεργά από το σύστημα για την εγκατάσταση και τη φόρτωση του κύριου σώματος των παραθύρων - αυτό που βλέπουμε ως το ίδιο το λειτουργικό σύστημα.

Όταν ανοίγετε το φάκελο Ο Υπολογιστής μου ή απλώς ο Υπολογιστής, δεν θα δείτε το διαμέρισμα συστήματος. Δεν έχει εκχωρηθεί καμία ονομασία και δεν είναι διαθέσιμη στην Εξερεύνηση των Windows. Για να το δείτε, πρέπει να ανοίξετε την κονσόλα διαχείρισης υπολογιστή (εντολή στη γραμμή αναζήτησης diskmgmt.msc) στην ενότητα Διαχείριση δίσκων:

Γιατί χρειάζεστε ένα δεσμευμένο διαμέρισμα;

Αυτό το διαμέρισμα συστήματος περιέχει δεδομένα εκκίνησης, κώδικα διαχείρισης εκκίνησης (πρόγραμμα που σας επιτρέπει να επιλέξετε το ενεργό διαμέρισμα δίσκου από το οποίο θα εκκινούν τα παράθυρα). Θα υπάρχει επίσης ένα περιβάλλον αποκατάστασης των Windows ως αποτέλεσμα αποτυχίας συστήματος. Εάν χρησιμοποιείτε την ενσωματωμένη δυνατότητα κρυπτογράφησης BitLocker στα Windows, τα δεδομένα εκκίνησης της δυνατότητας κρυπτογράφησης μονάδας δίσκου BitLocker θα βρίσκονται επίσης εκεί.

Για κάθε έκδοση του συστήματος, το μέγεθος του δίσκου είναι επίσης ήδη έτοιμο. 100 MB στα Windows 7, 350 MB στα Windows 8/8.1 και τέλος 500 MB στα Windows 10. Και, παρεμπιπτόντως, μερικές φορές αυτός ο χώρος δεν είναι αρκετός και ο χρήστης λαμβάνει ένα μήνυμα σφάλματος μετά την επόμενη δέσμη ενημερώσεων.

Πώς να κοιτάξετε στην δεσμευμένη ενότητα;

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

Εάν δεν μπορείτε να το κάνετε αυτό χρησιμοποιώντας την κονσόλα των Windows, αλλά αρχεία όπως , BOOTSECT.bak και οι φάκελοι Boot, Recovery, καθώς και System Volume Information, $RECYCLE BIN γίνονται ορατά χωρίς τέτοιους χειρισμούς, δεν είστε οι πρώτοι που θα εργαστείτε με ο σκληρός σας δίσκος. Χωρίς δίσκο Με κράτηση από το σύστημαΗ κρυπτογράφηση δίσκου θα είναι απλώς αδύνατο να διατηρηθεί. Και δεδομένου ότι το ransomware είναι έτοιμο να λειτουργήσει σε όλες τις πιο πρόσφατες εκδόσεις των Windows, αυτή η ενότητα θα εμφανίζεται επίσης πάντα.

Δεν υπάρχει πλέον διαμέρισμα συστήματος...

Είναι δυνατή η διαγραφή ενός δεσμευμένου διαμερίσματος;

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

Δεν υπάρχει τρόπος να απαλλαγούμε από αυτό;

Σκεφτείτε το ξανά - αυτή η ενότητα είναι πολύ χρήσιμη και μπορεί να σας φανεί χρήσιμη. Ωστόσο, αν πιστεύετε ότι απλώς τον εμποδίζει, σκεφτείτε το.

  • Πριν εγκαταστήσετε τα Windows

Όλα είναι απλά εδώ. Εάν δεν θέλετε να βλέπετε αυτήν την ενότητα στο μέλλον, χρησιμοποιήστε το ενσωματωμένο βοηθητικό πρόγραμμα Diskpart. Περιλαμβάνεται στη δισκέτα εγκατάστασης των Windows.

  • Κατά την εγκατάσταση του συστήματος, πατήστε Shift + F10, καλώντας την κονσόλα cmd
  • εκτόξευση diskpartκαι ελέγξτε τον αριθμό των φυσικών δίσκων με την εντολή δίσκος λίστας(η αρίθμηση ξεκινά από το 0)
  • επιλέξτε αυτό που χρειάζεστε με την εντολή επιλέξτε δίσκο 0
  • και δημιουργήστε έναν τόμο έτοιμο για χρήση με την εντολή δημιουργία πρωτεύοντος διαμερίσματος

Συνεχίζουμε την εγκατάσταση των Windows με κατεύθυνση προς αυτόν τον δίσκο (τα Windows δεν θα δημιουργήσουν δεσμευμένο διαμέρισμα)

  • Η ενότητα είναι ήδη παρούσα

Δεν μπορείτε να το διαγράψετε με ένα απλό κλικ του ποντικιού - το σύστημα δεν είναι εχθρός του εαυτού του. Και, πριν διαγραφεί ο τόμος, όλα τα αρχεία που είναι αποθηκευμένα εκεί πρέπει να μετακινηθούν σε άλλη τοποθεσία. Μόνο που ακούγεται τόσο απλό: αυτοί οι χειρισμοί περιλαμβάνουν την επεξεργασία του μητρώου, την αντιγραφή αρχείων μεταξύ τόμων και την αλλαγή του χώρου αποθήκευσης του bootloader BCD. Σε εκδόσεις από τα Windows 8 θα πρέπει επίσης να συμπεριλάβετε το περιβάλλον ανάκτησης. Εάν θέλετε, μπορώ να περιγράψω πολλές τεχνικές, αλλά απλά δεν συνιστώ να το κάνετε αυτό. Επιπλέον, συνάντησα ορισμένα προγράμματα που διαβεβαίωναν ότι με τη βοήθειά τους, η μεταφορά δεδομένων από έναν αντίγραφο ασφαλείας (και στη συνέχεια η διαγραφή του) θα πήγαινε ομαλά. Δυστυχώς, στην πραγματικότητα υπήρχαν περισσότερα προβλήματα από όσα ανέφεραν. Αφήστε το ως έχει.

Διαβάστε: 20

Μενού Επεξεργασία(Επεξεργασία) του προγράμματος Regedt32 περιέχει εντολές που σας επιτρέπουν να προσθέσετε, να τροποποιήσετε και να διαγράψετε ενότητες και σημαντικά στοιχεία μητρώου.

Για να προσθέσετε μια νέα ενότητα σε οποιαδήποτε ομάδα μητρώου, επιλέξτε την εντολή Προσθήκη ενότηταςΜενού (Προσθήκη κλειδιού). Επεξεργασία.Όταν εκτελείτε αυτήν την εντολή, σας ζητείται να εισαγάγετε το όνομα και την κλάση ενότητας (η κλάση σε αυτήν την περίπτωση αναφέρεται στον τύπο δεδομένων). Το πλαίσιο διαλόγου για την εισαγωγή αυτών των πληροφοριών φαίνεται στην Εικ. 14.5. Δεν υπάρχει λίστα από την οποία μπορείτε να επιλέξετε έναν τύπο δεδομένων σε αυτό το παράθυρο διαλόγου, αλλά σας δίνεται η ευκαιρία να δημιουργήσετε μια ενότητα και να καθορίσετε τον τύπο δεδομένων όταν εισάγετε μια νέα παράμετρο ως μέρος της ενότητας που δημιουργήθηκε.

Ομάδα Προσθήκη ενότηταςχρησιμοποιείται για την προσθήκη σημαντικών στοιχείων σε κλειδιά μητρώου. Το παράθυρο διαλόγου που ανοίγει κατά την εκτέλεση αυτής της εντολής (Εικ. 14.6) περιέχει μια λίστα που σας επιτρέπει να επιλέξετε τον τύπο δεδομένων για το σημαντικό στοιχείο: τιμές συμβολοσειράς (REG_SZ, REG_MULTI_SZ και REG_EXPAND_SZ) ή δυαδικές τιμές (REG_DWORD ή REG_BINARY ).

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

Σημείωση

Όπως έχει επαναληφθεί πολλές φορές, οι επεξεργαστές μητρώου δεν υποστηρίζουν λειτουργίες Αναίρεσης, επομένως μετά την επιβεβαίωση της λειτουργίας διαγραφής, δεν θα έχετε άλλον τρόπο να επαναφέρετε τις διαγραμμένες πληροφορίες εκτός από την επαναφορά τους από ένα αντίγραφο ασφαλείας που δημιουργήθηκε προηγουμένως. Επιπλέον, ο Επεξεργαστής Μητρώου σάς ζητά να επιβεβαιώσετε τη λειτουργία διαγραφής μόνο εάν έχει επιλεγεί η επιλογή Confirm On Delete στο μενού Options. Επομένως, όταν αποφασίζετε να διαγράψετε κλειδιά από το μητρώο, μην παραμελείτε τη δημιουργία αντιγράφων ασφαλείας (και μην αναζητάτε περιττές εργασίες για τον εαυτό σας με μια ήδη υπάρχουσα λύση).

Εάν διαγράψετε κατά λάθος κάτι από το κλειδί μητρώου HKEY_LOCAL_MACHINE\System\CurrentControlSet, θυμηθείτε ότι μπορείτε να επαναφέρετε τα περιεχόμενα αυτού του κλειδιού χρησιμοποιώντας την τελευταία επιτυχώς φορτωμένη διαμόρφωση (βλ. Κεφάλαια 2 και 8). Για να εκτελέσετε αυτήν τη λειτουργία, επανεκκινήστε τον υπολογιστή σας και αμέσως μετά την εμφάνιση του μενού του bootloader, πατήστε το και, στη συνέχεια, επιλέξτε την επιλογή Last Known Good από το μενού εντοπισμού σφαλμάτων.

Εκτός από τις εντολές για τη διαγραφή στοιχείων μητρώου και την προσθήκη νέων ενοτήτων και παραμέτρων στη σύνθεσή του, στο μενού ΕπεξεργασίαΟ επεξεργαστής Regedt32 έχει ένα σύνολο εντολών για την επεξεργασία υπαρχουσών καταχωρήσεων μητρώου (και πρέπει να σημειωθεί ότι αυτό το σύνολο επιλογών είναι πολύ ευρύτερο από εκείνα που παρέχονται από το νεότερο πρόγραμμα Regedit). Μενού ΕπεξεργασίαΟ επεξεργαστής μητρώου Regedt32 περιέχει εντολές Δυαδικά δεδομένα(Δυάδικος) Γραμμή(Σειρά), Διπλή λέξη(DWORD) και Πολυγραμμές(Πολλαπλή χορδή). Η επιλογή κάθε εντολής εκκινεί το πρόγραμμα επεξεργασίας τιμών του αντίστοιχου τύπου - για παράδειγμα, επιλέξτε εντολές δυαδικών δεδομένωνεκκινεί το δυαδικό πρόγραμμα επεξεργασίας - Binary Editor, επιλέξτε εντολή Διπλή λέξη- Επεξεργαστής τιμών DWORD και επιλογή εντολών Line και Multilineκαλεί τους αντίστοιχους επεξεργαστές για τιμές συμβολοσειράς και πολλαπλών γραμμών. Λάβετε υπόψη ότι τέτοιες εκτεταμένες δυνατότητες απλά δεν είναι διαθέσιμες στο πρόγραμμα επεξεργασίας Regedit.

Στην απεραντοσύνη του Runet, είναι δύσκολο να βρει κανείς εποικοδομητικές και καλά παρουσιαζόμενες πληροφορίες σχετικά με τη σχεδίαση του λειτουργικού συστήματος Android. Ως επί το πλείστον, οι πληροφορίες είναι κατακερματισμένες και ελλιπείς· δεν υπάρχει εισαγωγικό μέρος με βασικές έννοιες, κάτι που δυσκολεύει τους αρχάριους να αντιληφθούν και να κατανοήσουν. Χωρίς βασικές γνώσεις σχετικά με τη συσκευή και τον αλγόριθμο λειτουργίας του λειτουργικού συστήματος Android, είναι αδύνατο να πραγματοποιήσετε εντοπισμό σφαλμάτων ή προσαρμογή υλικολογισμικού ή ανάπτυξη για το λειτουργικό σύστημα Android. Αυτό με ώθησε να γράψω αυτό το άρθρο, στο οποίο θα προσπαθήσω, σε συνηθισμένη και κατανοητή γλώσσα, να μεταφέρω «σύνθετα» πράγματα.

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

Κατατμήσεις εσωτερικής μνήμης Android

Η εσωτερική μνήμη μιας συσκευής Android χωρίζεται σε πολλές λογικές μονάδες δίσκου (partitions). Ακολουθεί μια κλασική διάταξη μνήμης:

Bootloader- εδώ είναι ένα πρόγραμμα (bootloader) που σας επιτρέπει να εκκινήσετε το λειτουργικό σύστημα Android, το Recovery και άλλες λειτουργίες υπηρεσίας.

Ανάκτηση- όπως υποδηλώνει το όνομα, εδώ είναι εγκατεστημένο ένα μενού ανάκτησης μηχανικής ή απλά το Recovery.

Μπότα- η καρδιά του λειτουργικού συστήματος Android, εδώ είναι ο πυρήνας, τα προγράμματα οδήγησης και οι ρυθμίσεις διαχείρισης επεξεργαστή και μνήμης.

Σύστημα- το διαμέρισμα συστήματος, το οποίο περιέχει όλα τα αρχεία που είναι απαραίτητα για τη λειτουργία του λειτουργικού συστήματος Android, είναι όπως ο φάκελος των Windows στη μονάδα δίσκου C:\ (στο εξής θα τον συσχετίσουμε με το λειτουργικό σύστημα Windows)

Δεδομένα- μια ενότητα για την εγκατάσταση εφαρμογών και την αποθήκευση των δεδομένων τους. (Αρχεια προγραμματος)

Χρήστης- πρόκειται για μια γνωστή κάρτα sd ή, πιο απλά, για ένα μέρος για τα αρχεία χρήστη (My Documents) Εδώ αναγκαζόμαστε να κάνουμε μια παρέκβαση, γιατί Η τοποθέτηση αυτής της ενότητας έχει πολλές επιλογές:

  • Το διαμέρισμα δεν βρίσκεται στην εσωτερική μνήμη και αντ 'αυτού χρησιμοποιείται μια εξωτερική μονάδα δίσκου - η πιο δημοφιλής επιλογή. (Εικ.1)
  • Σε συσκευές με μεγάλη ενσωματωμένη μνήμη, αυτή η ενότητα εμφανίζεται ως sdcard και η εξωτερική κάρτα μνήμης εμφανίζεται ως sdcard2 ή extsd (μπορεί να υπάρχουν άλλες επιλογές ονόματος). Βρίσκεται συνήθως σε συσκευές με Android 3.2. (Εικ.2 Επιλογή 1)
  • Αυτή η επιλογή αντικατέστησε την προηγούμενη έκδοση, μαζί με το Android 4.0. Η ενότητα Χρήστης αντικαταστάθηκε με έναν φάκελο πολυμέσων στην ενότητα Δεδομένα, που μας επέτρεπε να χρησιμοποιήσουμε όλη τη μνήμη που ήταν διαθέσιμη στον χρήστη για την εγκατάσταση προγραμμάτων και την αποθήκευση δεδομένων και όχι το ποσό που μας διέθεσε ο κατασκευαστής. Με άλλα λόγια, sdcard και data είναι ένα. (Εικ.2 Επιλογή 2)

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

Ας ξεκινήσουμε με το Bootloader. Αυτός είναι ο bootloader που εκκινεί το Android, την αποκατάσταση κ.λπ. Όταν πατάμε το κουμπί λειτουργίας, ο bootloader ξεκινά και, αν δεν υπάρχουν πρόσθετες εντολές (πατημένα πλήκτρα), ξεκινά τη φόρτωση της εκκίνησης. Εάν πατήθηκε ένας συνδυασμός πλήκτρων (κάθε συσκευή έχει το δικό της), τότε εκκινείται, ανάλογα με την εντολή, ανάκτηση, fastboot ή apx. Το παρακάτω σχήμα δείχνει ξεκάθαρα τι εκτελείται ο Bootloader και πώς διασυνδέονται οι ενότητες.

Όπως φαίνεται από την Εικόνα 3, το διαμέρισμα Recovery δεν επηρεάζει τη φόρτωση του λειτουργικού συστήματος Android, αλλά γιατί χρειάζεται τότε; Ας προσπαθήσουμε να το καταλάβουμε.

Το Recovery είναι ουσιαστικά ένα μικρό βοηθητικό πρόγραμμα που βασίζεται στον πυρήνα του Linux και φορτώνεται ανεξάρτητα από το Android. Η τυπική του λειτουργικότητα δεν είναι πλούσια: μπορείτε να επαναφέρετε τις εργοστασιακές ρυθμίσεις της συσκευής ή να ενημερώσετε το υλικολογισμικό (προκατεβασμένο στην κάρτα sdcard). Όμως, χάρη στους λαϊκούς τεχνίτες, έχουμε τροποποιήσει την ανάκτηση, μέσω της οποίας μπορείτε να εγκαταστήσετε τροποποιημένο (προσαρμοσμένο) υλικολογισμικό, να διαμορφώσετε το Android, να δημιουργήσετε αντίγραφα ασφαλείας και πολλά άλλα. Η παρουσία ή η απουσία ανάκτησης, καθώς και η έκδοσή της, δεν επηρεάζουν την απόδοση του λειτουργικού συστήματος Android (μια πολύ συχνή ερώτηση στα φόρουμ).

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

Δεδομένου ότι μιλάμε για διεπαφές, θέλω να μιλήσω για ένα άλλο αρκετά γνωστό - το adb (android debugbridge). Αυτή είναι η λεγόμενη λειτουργία εντοπισμού σφαλμάτων και ονομάζεται έτσι για κάποιο λόγο - μέσω αυτής μπορείτε να παρακολουθείτε τη λειτουργία τόσο του συστήματος στο σύνολό του όσο και των μεμονωμένων εφαρμογών. Αλλά δεν είναι μόνο αυτό, με το adb μπορείτε να αποκτήσετε πλήρη πρόσβαση στο σύστημα αρχείων της συσκευής και να αλλάξετε αρχεία συστήματος ή να ανακτήσετε σημαντικές πληροφορίες όταν η συσκευή σας έχει κολλήσει στη φόρτωση. Δεν θα περιγράψω όλες τις λειτουργίες της λειτουργίας εντοπισμού σφαλμάτων επειδή... Ο στόχος μου είναι να μεταφέρω γενικές πληροφορίες και όχι μια λεπτομερή επισκόπηση των λειτουργιών μιας συγκεκριμένης λειτουργίας.

Έχοντας κατανοήσει τη θεωρία, ας ξεκινήσουμε το λειτουργικό σύστημα Android.

Πατάμε το κουμπί λειτουργίας - Εκκινείται ο Bootloader, ο οποίος φορτώνει τον πυρήνα (boot), ο οποίος, με τη σειρά του, ξεκινά το σύστημα (System), και φορτώνει ήδη προγράμματα (δεδομένα) και χώρο χρήστη (χρήστης). (Εικ.3)

Τώρα ας πάμε στον ριζικό κατάλογο και ας δούμε το εσωτερικό του ίδιου του λειτουργικού συστήματος Android:

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

Και έτσι, ο φάκελος δεδομένων. Όπως υποδηλώνει το όνομα, έχει κάποια σχέση με δεδομένα, αλλά τι είδους; Ναι, σχεδόν σε όλους, αυτό περιλαμβάνει συγχρονισμό και δεδομένα λογαριασμού, κωδικούς πρόσβασης για σημεία πρόσβασης wifi και ρυθμίσεις vpn κ.λπ. Μεταξύ άλλων, μπορείτε να βρείτε την εφαρμογή, τα δεδομένα και τους φακέλους dalvik-cache εδώ - ας δούμε τον σκοπό τους:

  • εφαρμογή - προγράμματα και παιχνίδια εγκαθίστανται εδώ.
  • δεδομένα - τα δεδομένα εφαρμογών, οι ρυθμίσεις τους, οι αποθηκευμένες ρυθμίσεις παιχνιδιών και άλλες πληροφορίες αποθηκεύονται εδώ.
  • Το dalvik-cache είναι μια περιοχή προσωρινής αποθήκευσης λογισμικού για το πρόγραμμα Dalvik. Το Dalvik είναι μια εικονική μηχανή Java, η οποία αποτελεί τη βάση για την εκτέλεση προγραμμάτων που έχουν την επέκταση *.apk.
  • Για να γίνει πιο γρήγορη η εκκίνηση των προγραμμάτων, δημιουργείται η κρυφή τους μνήμη.

Ο φάκελος System αποθηκεύει τα δεδομένα συστήματος και όλα τα απαραίτητα για τη λειτουργία του ΛΣ. Ας δούμε μερικούς από αυτούς τους φακέλους:

  • app - εδώ υπάρχουν εφαρμογές συστήματος (SMS, τηλέφωνο, ημερολόγιο, ρυθμίσεις κ.λπ.), καθώς και εφαρμογές που έχουν εγκατασταθεί από τον κατασκευαστή της συσκευής (επώνυμα widget, ζωντανές ταπετσαρίες κ.λπ.).
  • γραμματοσειρές - γραμματοσειρές συστήματος
  • μέσα - περιέχει τυπικούς ήχους κλήσης, ειδοποιήσεις, συναγερμούς και ήχους διεπαφής, καθώς και κινούμενα σχέδια εκκίνησης (bootanimation)
  • build.prop - Αυτό το αρχείο είναι σχεδόν το πρώτο που αναφέρεται σε συζητήσεις και άρθρα σχετικά με τη βελτίωση του συστήματος. Περιέχει έναν τεράστιο αριθμό ρυθμίσεων, όπως πυκνότητα οθόνης, χρόνο καθυστέρησης αισθητήρα εγγύτητας, έλεγχο wifi, όνομα και κατασκευαστή συσκευής και πολλές άλλες παραμέτρους.

Δικαιώματα υπερχρήστη ρίζας στο λειτουργικό σύστημα Android

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

— Το να γνωρίζετε τι είναι σε ποιο φάκελο είναι καλό, αλλά είναι δυνατόν να κάνετε κάτι για αυτό;

- Ναί! Χρειάζεστε όμως δικαιώματα υπερχρήστη (root) ή, αν κάνουμε μια αναλογία με τα Windows, δικαιώματα διαχειριστή. Αρχικά, όλες οι συσκευές Android έρχονται χωρίς δικαιώματα root για τον τελικό χρήστη, π.χ. Όταν αγοράζουμε μια συσκευή, δεν είμαστε πλήρεις κάτοχοι της. Αυτό γίνεται τόσο για την προστασία από κακόβουλο λογισμικό όσο και από τον ίδιο τον χρήστη - σε τελική ανάλυση, σε ακατάλληλα χέρια, η πλήρης πρόσβαση στο σύστημα μπορεί να οδηγήσει στον "θάνατο" του λειτουργικού συστήματος και στην επακόλουθη ανάγκη να αναβοσβήνει η συσκευή.

«Λοιπόν, σε τι χρησιμεύει ένα τόσο επικίνδυνο πράγμα;»- εσύ ρωτάς.

Τώρα θα σας πούμε:

  • Δυνατότητα δημιουργίας αντιγράφων ασφαλείας δεδομένων και επαναφοράς τους μετά από αναλαμπή ή τυχαία διαγραφή.
  • Ρυθμίστε το σύστημα με μη αυτόματο τρόπο ή χρησιμοποιώντας ειδικά προγράμματα.
  • Αφαίρεση εφαρμογών συστήματος, ήχων κλήσης, ταπετσαριών κ.λπ.
  • Αλλαγή της εμφάνισης του λειτουργικού συστήματος (για παράδειγμα, εμφάνιση φόρτισης μπαταρίας ως ποσοστό)
  • Προσθήκη λειτουργικότητας (υποστήριξη για ad-hoc δίκτυα, για παράδειγμα)

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

- Όλα αυτά είναι υπέροχα, αλλά τώρα οποιοδήποτε πρόγραμμα θα μπορεί να έχει πρόσβαση στην «καρδιά» του λειτουργικού συστήματος και στα δεδομένα μου;

- Οχι. Εσείς αποφασίζετε εάν θα επιτρέψετε σε αυτήν ή εκείνη την εφαρμογή να αποκτήσει πρόσβαση root ή όχι. Για αυτό υπάρχει ένα πρόγραμμα που ονομάζεται Superuser ή η προηγμένη αδελφή του SuperSU. Χωρίς αυτό ή παρόμοιο πρόγραμμα, δεν είναι δυνατή η χρήση του root.

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

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

Πριν από αρκετά χρόνια, όταν πρωτογνωρίστηκα στο 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 =(laFRJECT_flag ==(laFRJECT_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. Θα υπάρχει ένα παράδειγμα χρήσης αυτόματης εγγραφής τηλεφωνικών κλήσεων με χρήση εγγενών εργαλείων τηλεφώνου. Σας ευχαριστώ για την προσοχή σας.

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

Διατύπωση του προβλήματος

Η αποθήκευση πληροφοριών σε έναν υπολογιστή συνδέεται με τον κίνδυνο τυχαίας ή σκόπιμης αποκάλυψης, επομένως χρησιμοποιούνται διάφορες μέθοδοι και μέσα για την προστασία τους. Τις περισσότερες φορές ως πρωταρχικό μέσο, ​​το οποίο εμποδίζει την ελεύθερη πρόσβαση σε πληροφορίες σε ηλεκτρονική μορφή, χρησιμοποιήστε κρυπτογράφηση, το οποίο υλοποιείται σε υλικό ή λογισμικό. Τα αντικείμενα κρυπτογραφικής προστασίας είναι μεμονωμένα αρχεία, ομάδες αρχείων, κατάλογοι και, τέλος, λογικές μονάδες δίσκου. Το αποτέλεσμα της κρυπτογράφησης είναι τα αρχεία αρχείων που βρίσκονται στο ηλεκτρονικά μέσα. Λεπτομέρειες σχετικά με την εφαρμογή διαφόρων κρυπτογραφικών αλγορίθμων, μπορεί να σημειωθεί ότι σε αυτήν την περίπτωση το GKU πρέπει επίσης να λύσει προβλήματα που σχετίζονται με την εγγυημένη καταστροφή του αρχικού μη κρυπτογραφημένες πληροφορίεςγια να αποτρέψει την ανάκτησή του.

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

Έτσι, είναι δυνατή η ανάκτηση διαγραμμένων μη κρυπτογραφημένων πληροφοριών, η οποία επιτυγχάνεται με επιτυχία από τέτοια προϊόντα λογισμικού όπως Ανάκτηση αρχείων, Back2Life, R-Studio, GetDataBack για NTFS, κ.λπ.

Εάν δεν λάβετε υπόψη τις συστάσεις που σχετίζονται με αυτές φυσική καταστροφή ηλεκτρονικών μέσων,τότε αυτό μπορεί να γίνει αδύνατο μόνο με την επανειλημμένη επανεγγραφή αυτών των μαγνητικών συστάδων δίσκων όπου είχαν αποθηκευτεί προηγουμένως εμπιστευτικές πληροφορίες. Για παράδειγμα, Αμερικανικό Εθνικό Πρότυπο του Υπουργείου ΆμυναςΤο DOD 5220.22-M (E) περιλαμβάνει την καταγραφή τυχαίων αριθμών στο πρώτο πέρασμα, αριθμών επιπλέον αυτών που καταγράφηκαν στο προηγούμενο πέρασμα στο δεύτερο και τυχαίων αριθμών στο τρίτο. Στον διάσημο αλγόριθμο του Peter Gutmann, ο οποίος θεωρείται ένας από τους πιο αξιόπιστα, στη θέση των κατεστραμμένων δεδομένων, όλοι οι γνωστοί συνδυασμοί ψηφίων γράφονται με τη σειρά (συνολικά πραγματοποιούνται 35 περάσματα). — οι μέθοδοι καταστροφής πληροφοριών υποστηρίζουν τα αμερικανικά πρότυπα DOD 5220.22-M, Army AR380-19, NCSC-TG-025, Air Force 5020, NAVSO P-5239-26, HMG IS5,Γερμανικό VSITR, καναδικό OPS-II και ρωσικό GOST P50739-95, κ.λπ. κρυπτογράφηση που εκτελείται μέσα στη λογική μονάδα δίσκου,ενέχει πάντα τον κίνδυνο ατελούς καταστροφής των αρχικών πληροφοριών, επομένως απαιτείται διαφορετική προσέγγιση σε αυτό το πρόβλημα.

mob_info