Πώς να ανακαλύψετε τις κρυφές εντολές Fastboot

Υπάρχουν πολλές κρυφές εντολές fastboot στη συσκευή σας. Για να τα βρούμε, θα χρειαστεί να πετάξουμε το bootloader και να εξετάσουμε το περιεχόμενο!

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

Για να το αναπληρώσω, θα σας καθοδηγήσω σε κάτι πολύ, πολύ πιο προηγμένο και συναρπαστικό: απορρίπτοντας το bootloader της συσκευής σας για να ανακαλύψετε κρυφές εντολές fastboot. Αυτός ο οδηγός, αν και έγινε στο δικό μου Nexus 6P, σίγουρα μπορεί να αναπαραχθεί στην πλειονότητα των smartphone. Ωστόσο, οι εντολές στις οποίες θα έχετε πρόσβαση θα διαφέρουν σημαντικά μεταξύ των συσκευών. Οι περισσότερες εντολές δεν θα σας βοηθήσουν πραγματικά σε καμία πραγματική κατάσταση, αλλά παρόλα αυτά είναι πολύ ενδιαφέρον να βουτήξετε τόσο βαθιά στις ρυθμίσεις του τηλεφώνου σας. Ας αρχίσουμε.

Αποποίηση ευθύνης: Εφόσον γνωρίζετε τι κάνετε και μπορείτε να ακολουθήσετε τις οδηγίες κατάλληλα, δεν πρέπει να συμβεί τίποτα κακό στη συσκευή σας. Ωστόσο, εξακολουθούμε να μπλέκουμε με τα διαμερίσματα της συσκευής μας και το bootloader, οπότε δεν μπορούμε να πούμε τι θα μπορούσε να συμβεί αν πληκτρολογήσετε λάθος εντολή. Βεβαιωθείτε ότι έχετε έτοιμο αντίγραφο ασφαλείας εκτός συσκευής!


Παρασκευή

Πριν ξεκινήσουμε, πρέπει να σημειώσουμε ένα πραγματικά, πολύ σημαντικό πράγμα. Για να εξαγάγετε το bootloader της συσκευής σας, θα χρειαστείτε πρόσβαση root στο τηλέφωνό σας. Εάν δεν έχετε πρόσβαση root, μπορείτε να συνεχίσετε να διαβάζετε αυτόν τον οδηγό για εκπαιδευτικούς σκοπούς, αλλά δεν θα μπορείτε να εκτελέσετε καμία από τις απαραίτητες εντολές. Το κατάλαβα? Καλός. Μια άλλη προϋπόθεση που θα πρέπει να πληροίτε είναι να διασφαλίσετε ότι ο υπολογιστής σας διαθέτει όλα τα απαραίτητα κατάλληλα προγράμματα οδήγησης ADB/fastboot. Εάν δεν διαθέτετε τα δυαδικά αρχεία ADB/fastboot, προτείνω να τα εγκαταστήσετε Minimal ADB & Fastboot από τα φόρουμ μας. Όσον αφορά τα προγράμματα οδήγησης, μπορείτε να πάρετε τα απαραίτητα προγράμματα οδήγησης για συσκευές Google Nexus εδώ και για όλες τις άλλες συσκευές από εδώ. Πώς ξέρετε αν είστε έτοιμοι να πάτε; Συνδέστε τη συσκευή σας, ενεργοποιήστε το USB Debugging στις Ρυθμίσεις προγραμματιστή, ανοίξτε μια γραμμή εντολών και πληκτρολογήστε:

adb devices

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


Απόρριψη του Bootloader

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

adb shell

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

su

Το σύμβολο μπροστά από το κωδικό όνομα της συσκευής σας θα πρέπει να αλλάξει από $ προς την # υποδεικνύοντας ότι μπορείτε πλέον να εκτελέσετε εντολές με αυξημένα δικαιώματα. Πρόσεχε τώρα!

Στη συνέχεια, θα καταλάβουμε την ακριβή τοποθεσία της εικόνας του bootloader της συσκευής σας. Για να βρούμε τον ακριβή κατάλογο, θα εκτυπώσουμε μια λίστα με όλα τα διαμερίσματα και τους καταλόγους τους ονομαστικά και θα αναζητήσουμε ένα συγκεκριμένα με το όνομα 'μια μπότα.' Θα χρειαστεί να εισαγάγετε δύο εντολές ως εξής:

cd /dev/block/bootdevice/by-name
ls -all

Όπως μπορείτε να δείτε παραπάνω, εκτυπώνεται μια τεράστια λίστα καταλόγων διαμερισμάτων. Αυτά τα διαμερίσματα ταξινομούνται με βάση το όνομα, ώστε να μπορούμε εύκολα να διακρίνουμε τη θέση του διαμερίσματος του bootloader μας. Στην περίπτωσή μου, ο bootloader, που είναι 'μια μπότα' στην παραπάνω εικόνα, μπορείτε να βρείτε στο /dev/block/mmcblk0p10. Αυτό θα διαφέρει ανάλογα με τη συσκευή σας, επομένως είναι σημαντικό να ακολουθήσετε αυτές τις οδηγίες για να βρείτε τον πραγματικό κατάλογο όπου βρίσκεται ο bootloader σας. Ωστόσο, λάβετε υπόψη αυτόν τον κατάλογο, καθώς θα τον αναφέρουμε στην ακόλουθη εντολή για την απόρριψη του bootloader:

dd if=/dev/block/{YOUR ABOOT PARTITION} of=/sdcard/aboot.img

Μετά την επιτυχία, θα πρέπει να βρείτε ένα αρχείο που ονομάζεται 'aboot.img' βρίσκεται στη ρίζα του εσωτερικού σας αποθηκευτικού χώρου. Τώρα που απορρίψαμε τον bootloader, πρέπει να τον εξετάσουμε για να προσδιορίσουμε ποιες κρυφές εντολές μπορούμε να βρούμε.


Κρυφές εντολές Fastboot και οι χρήσεις τους

Ίσως να είστε εξοικειωμένοι με μερικές από τις πιο κοινές εντολές fastboot, όπως π.χ fastboot flash ή fastboot μπότα. Υπάρχουν πολλές περισσότερες εντολές fastboot όπως ορίζονται στο πρωτόκολλο ανοιχτού κώδικα fastboot. Ακολουθεί μια λίστα με τις εντολές fastboot που είναι διαθέσιμες σε κάθε συσκευή με bootloader που βασίζεται στον πιο πρόσφατο κώδικα AOSP:

Αυτό που λείπει σε αυτή τη λίστα είναι το fastboot oem εντολές. Αυτές οι εντολές είναι ειδικός σε κατασκευαστές συσκευών Android και δεν υπάρχει πουθενά ολοκληρωμένη λίστα ή τεκμηρίωση για τις διαθέσιμες εντολές fastboot oem. Τώρα, εάν ο κατασκευαστής της συσκευής σας είχε την καλοσύνη να παράσχει μια εντολή fastboot που παραθέτει όλες τις εντολές oem (δοκιμάστε fastboot oem ? και δείτε αν λειτουργεί), τότε δεν θα χρειαστεί να κάνετε τίποτα περαιτέρω. Εάν δεν υπάρχει καμία εντολή που να εκτυπώνει μια λίστα με τις διαθέσιμες εντολές fastboot oem, τότε θα χρειαστεί να εκτυπώσετε μια λίστα με χορδές από το aboot.img και αναζητήστε τις εντολές oem με μη αυτόματο τρόπο.

Το 'strings' είναι μια εντολή linux, η τεκμηρίωση της οποίας είναι διαθέσιμο εδώ. Όπως μπορείτε να πείτε, προσωπικά χρησιμοποιώ μια μηχανή Windows, οπότε αντ' αυτού χρησιμοποιούσα ένα πρόγραμμα που μιμείται «χορδές» από το Linux. Η ακατέργαστη έξοδος της εντολής 'strings' σε ένα αρχείο aboot.img θα είναι αρκετά ακατάστατο, αλλά αν κάνετε απλώς CTRL+F για το 'oem' θα πρέπει να βρείτε αυτό που χρειάζεστε. Εάν θέλετε να κάνετε πιο συγκεκριμένη την αναζήτησή σας, μπορείτε να δοκιμάσετε αυτήν την εντολή (για την έκδοση των Windows που συνέδεσα):

strings * | findstr /i oem

Για το Nexus 6P, συνέταξα την ακόλουθη λίστα με εντολές fastboot oem:

fastboot oem unlock-go
fastboot oem frp-unlock
fastboot oem frp-erase
fastboot oem enable reduced-version
fastboot oem device-info
fastboot oem enable-charger-screen
fastboot oem disable-charger-screen
fastboot oem enable-bp-tools
fastboot oem disable-bp-tools
fastboot oem enable-hw-factory
fastboot oem disable-hw-factory
fastboot oem select-display-panel
fastboot oem off-mode-charge enable
fastboot oem off-mode-charge disable
fastboot oem ramdump enable
fastboot oem ramdump disable
fastboot oem uart enable
fastboot oem uart disable
fastboot oem hwdog certify begin
fastboot oem hwdog certify close
fastboot oem get-imei1
fastboot oem get-meid
fastboot oem get-sn
fastboot oem get-bsn
fastboot oem get_verify_boot_status

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

Τούτου λεχθέντος, έχω σκεφτεί κάποιες εύστοχες χρήσεις για ορισμένες από αυτές τις εντολές fastboot που έχω βρει (που μπορεί να είναι ή όχι υπάρχει στη συσκευή σας, γι' αυτό ακολουθήστε τις παραπάνω οδηγίες για να ελέγξετε!) που θα σας αρέσει το πιο σκληροπυρηνικό Android θιασώτης. Υπάρχουν δύο εντολές εδώ που θα μπορούσαν να έχουν κάποια πρακτική χρήση.

Πρώτα είναι το fastboot oem (ενεργοποίηση|απενεργοποίηση)-charger-screen εντολή. Αυτό που κάνει είναι να απενεργοποιεί την οθόνη φόρτισης που εμφανίζεται όταν η συσκευή σας είναι απενεργοποιημένη. Εάν δεν είστε λάτρης της εκτυφλωτικής φωτεινότητας της οθόνης φόρτισης όταν το τηλέφωνό σας είναι απενεργοποιημένο, τότε μπορείτε να την απενεργοποιήσετε μέσω αυτής της κρυφής εντολής fastboot!

Στη συνέχεια, υπάρχει το fastboot oem off-mode-charge (ενεργοποίηση|απενεργοποίηση) εντολή. Αυτή η εντολή καθορίζει εάν η συσκευή σας θα ενεργοποιηθεί αυτόματα όταν ανιχνευτεί πηγή ενέργειας. Από προεπιλογή, έχει οριστεί σε "απενεργοποίηση". Θα παραδεχτώ ότι αυτή η εντολή δεν έχει μεγάλη χρήση για τηλέφωνα, αλλά αν σχεδιάζετε να τοποθετήσετε το tablet σας στο ταμπλό του αυτοκινήτου σας, θα βρείτε αυτή την εντολή απίστευτα χρήσιμος. Θα μπορείτε να ρυθμίσετε τη συσκευή σας ώστε να ενεργοποιείται αμέσως όταν τροφοδοτείται το tablet, όπως όταν ξεκινά η μπαταρία του αυτοκινήτου σας. Αντίθετα, είναι πολύ εύκολο να απενεργοποιήσετε το tablet όταν χάνεται η ισχύς χρησιμοποιώντας μια εφαρμογή αυτοματισμού όπως το Tasker. Αυτή η εντολή, παρεμπιπτόντως, λειτουργεί ακριβώς όπως αναγράφεται στο Nexus 7 (2013).


Αυτό ήταν για αυτό το μάθημα για την προσαρμογή Android. Μοιραστείτε τις εντολές που ανακαλύπτετε (ιδανικά σε σύνδεσμο pastebin) στα παρακάτω σχόλια!

Χάρη στον XDA Senior Recognized Developer Dees_Troy για τη βοήθειά του στη δημιουργία αυτού του άρθρου!