Schützen Sie Daten, indem Sie die Systempartition der Festplatte ändern. Was ist Magisk oder wie verbirgt man Root in Android?

Was ist eine reservierte Partition oder warum verbirgt Windows einen Teil der Festplatte?

Bei der Erstinstallation von Windows 7, Windows 8 usw. auf eine leere oder formatierte Festplatte (und in früheren Versionen des Systems gab es kein solches Volume), erstellt Windows zunächst eine bestimmte Partition ganz am Anfang der Festplatte. Sie wird als Systemreservierte Partition (systemreservierte Partition oder Systempartition) bezeichnet. Die Partition wird vom System aktiv verwendet, um den Hauptteil von Windows zu installieren und zu laden – was wir als das Betriebssystem selbst betrachten.

Wenn Sie den Ordner „Arbeitsplatz“ oder nur „Computer“ öffnen, wird die Systempartition nicht angezeigt. Es hat keine Bezeichnung und ist im Windows Explorer nicht verfügbar. Um es anzuzeigen, müssen Sie die Computerverwaltungskonsole öffnen (Befehl in der Suchleiste). diskmgmt.msc) im Abschnitt Datenträgerverwaltung:

Warum benötigen Sie eine reservierte Partition?

Diese Systempartition enthält Boot-Daten und Boot-Manager-Code (ein Programm, mit dem Sie die aktive Festplattenpartition auswählen können, von der Windows booten soll). Bei einem Systemausfall wird es auch eine Windows-Wiederherstellungsumgebung geben. Wenn Sie die integrierte BitLocker-Verschlüsselungsfunktion in Windows verwenden, befinden sich dort auch die Startdaten der BitLocker-Laufwerkverschlüsselungsfunktion.

Für jede Version des Systems ist auch die Festplattengröße bereits fertig. 100 MB in Windows 7, 350 MB in Windows 8/8.1 und schließlich 500 MB in Windows 10. Und übrigens reicht dieser Speicherplatz manchmal nicht aus und der Benutzer erhält nach dem nächsten Update-Batch eine Fehlermeldung.

Wie kann ich in den reservierten Bereich schauen?

Wenn Sie sich den Inhalt dieses Abschnitts ansehen möchten, geben Sie dem Abschnitt einfach einen Namen. Wie immer in Form eines lateinischen Buchstabens. Nachdem die neue Partition im Windows Explorer angezeigt wird, aktivieren Sie die Anzeige versteckter Ordner und Dateien sowie Systemdateien. Ich möchte Sie daran erinnern, dass dies über die Systemsteuerung im Element „Ordneroptionen“ erfolgt.

Wenn Sie dies nicht über die Windows-Konsole tun können, aber Dateien wie , BOOTSECT.bak und die Ordner „Boot“, „Recovery“ sowie „System Volume Information“ und „$RECYCLE BIN“ ohne solche Manipulationen sichtbar werden, sind Sie nicht der Erste, der damit arbeitet Ihre Festplatte. Ohne Diskette Vom System reserviert Die Festplattenverschlüsselung wird einfach nicht unterstützt werden können. Und da die Ransomware in allen aktuellen Windows-Versionen einsatzbereit ist, wird dieser Abschnitt auch immer angezeigt.

Es gibt keine Systempartition mehr...

Ist es möglich, eine reservierte Partition zu löschen?

Ich habe keine Ahnung, warum Sie das brauchen könnten. Ich empfehle dringend, dies nicht zu tun, während Windows läuft.. Ja, aus irgendeinem Grund. Andernfalls ist es fast sicher, dass ein Ladefehler auftritt. Wenn Sie darüber hinaus nachträglich versuchen, das Laden von Windows zu beheben, wenn es den Start verweigert (wenn das natürlich passiert), zeigt Ihnen das System natürlich ein Problem in Form eines fehlenden Elements an Fehlerbehebung für Ihren Computer. Und Sie müssen Windows verwenden.

Gibt es keine Möglichkeit, es loszuwerden?

Denken Sie noch einmal darüber nach – dieser Abschnitt ist sehr nützlich und kann sich als nützlich erweisen. Wenn Sie jedoch denken, dass er Ihnen nur im Weg steht, denken Sie darüber nach.

  • Vor der Installation von Windows

Hier ist alles einfach. Wenn Sie diesen Abschnitt in Zukunft nicht mehr sehen möchten, verwenden Sie das integrierte Dienstprogramm Diskpart. Es ist auf der Windows-Installationsdiskette enthalten.

  • Drücken Sie während der Systeminstallation Umschalt + F10, um die cmd-Konsole aufzurufen
  • Start diskpart und überprüfen Sie die Anzahl der physischen Festplatten mit dem Befehl Listendiskette(Nummerierung beginnt bei 0)
  • Wählen Sie mit dem Befehl die gewünschte aus Wählen Sie Datenträger 0 aus
  • und erstellen Sie mit dem Befehl ein gebrauchsfertiges Volume Erstellen Sie eine primäre Partition

Wir fahren mit der Installation von Windows fort und verweisen auf diese Festplatte (Windows erstellt keine reservierte Partition).

  • Der Abschnitt ist bereits vorhanden

Sie können es nicht mit einem einfachen Mausklick löschen – das System ist nicht sein eigener Feind. Und bevor das Volume gelöscht wird, müssen alle dort gespeicherten Dateien an einen anderen Ort verschoben werden. Es klingt nur so einfach: Diese Manipulationen umfassen das Bearbeiten der Registrierung, das Kopieren von Dateien zwischen Volumes und das Ändern des BCD-Bootloader-Speichers. In Versionen ab Windows 8 müssen Sie zusätzlich die Wiederherstellungsumgebung einbinden. Wenn Sie möchten, kann ich mehrere Techniken beschreiben, aber ich empfehle dies einfach nicht. Darüber hinaus bin ich auf einige Programme gestoßen, die versicherten, dass mit ihrer Hilfe die Übertragung von Daten von einer Backup-Festplatte (und das anschließende Löschen) reibungslos vonstatten ging. Leider gab es in Wirklichkeit mehr Probleme als erwähnt. Lass es so wie es ist.

Lesen Sie: 20

Speisekarte Bearbeiten(Bearbeiten) des Regedt32-Programms enthält Befehle, mit denen Sie Abschnitte und wichtige Registrierungselemente hinzufügen, ändern und löschen können.

Um einer Registrierungsstruktur einen neuen Abschnitt hinzuzufügen, wählen Sie den Befehl aus Abschnitt hinzufügen Menü (Schlüssel hinzufügen). Bearbeiten. Wenn Sie diesen Befehl ausführen, werden Sie aufgefordert, den Abschnittsnamen und die Klasse einzugeben (Klasse bezieht sich in diesem Fall auf den Datentyp). Das Dialogfeld zur Eingabe dieser Informationen ist in Abb. dargestellt. 14.5. In diesem Dialogfeld gibt es keine Liste, aus der Sie einen Datentyp auswählen können. Sie haben jedoch die Möglichkeit, einen Abschnitt zu erstellen und den Datentyp zu bestimmen, wenn Sie einen neuen Parameter als Teil des erstellten Abschnitts eingeben.

Team Abschnitt hinzufügen Wird zum Hinzufügen wichtiger Elemente zu Registrierungsschlüsseln verwendet. Das Dialogfeld, das sich beim Ausführen dieses Befehls öffnet (Abb. 14.6), enthält eine Liste, mit der Sie den Datentyp für das signifikante Element auswählen können: Zeichenfolgenwerte (REG_SZ, REG_MULTI_SZ und REG_EXPAND_SZ) oder Binärwerte (REG_DWORD oder REG_BINARY). ).

Um einen Abschnitt oder ein wichtiges Element aus der Registrierung zu entfernen, wählen Sie das zu löschende Objekt (Abschnitt oder wichtiges Element) aus und wählen Sie den Befehl Löschen Menü (Löschen). Bearbeiten. Sie werden aufgefordert, Ihre Absicht zu bestätigen, den ausgewählten Abschnitt oder das wichtige Element zu löschen.

Notiz

Wie schon oft wiederholt, unterstützen Registrierungseditoren keine Rückgängig-Vorgänge. Nach Bestätigung des Löschvorgangs haben Sie also keine andere Möglichkeit, gelöschte Informationen wiederherzustellen, als sie aus einer zuvor erstellten Sicherungskopie wiederherzustellen. Darüber hinaus fordert Sie der Registrierungseditor nur dann auf, den Löschvorgang zu bestätigen, wenn die Option „Beim Löschen bestätigen“ im Menü „Optionen“ ausgewählt ist. Vernachlässigen Sie daher bei der Entscheidung, Schlüssel aus der Registrierung zu löschen, nicht die Sicherung (und suchen Sie nicht nach unnötigen Aufgaben für sich selbst mit einer bereits vorhandenen Lösung).

Wenn Sie versehentlich etwas aus dem Registrierungsschlüssel HKEY_LOCAL_MACHINE\System\CurrentControlSet löschen, denken Sie daran, dass Sie den Inhalt dieses Schlüssels mit der letzten erfolgreich geladenen Konfiguration wiederherstellen können (siehe Kapitel 2 und 8). Um diesen Vorgang auszuführen, starten Sie Ihren Computer neu und drücken Sie unmittelbar nach dem Erscheinen des Bootloader-Menüs die Taste , und wählen Sie dann im Debug-Menü die Option „Letzter als funktionsfähig bekannt“ aus.

Zusätzlich zu den Befehlen zum Löschen von Registrierungselementen und zum Hinzufügen neuer Abschnitte und Parameter zu seiner Zusammensetzung im Menü Bearbeiten Der Regedt32-Editor verfügt über eine Reihe von Befehlen zum Bearbeiten vorhandener Registrierungseinträge (und es ist zu beachten, dass diese Reihe von Optionen viel umfassender ist als die, die das neuere Regedit-Programm bietet). Speisekarte Bearbeiten Der Regedt32-Registrierungseditor enthält Befehle Binärdaten(Binär) Linie(Zeichenfolge), Doppelwort(DWORD) und Mehrzeilig(Mehrfachsaite). Wenn Sie jeden Befehl auswählen, wird der Werteeditor des entsprechenden Typs gestartet, z. B. „select“. befiehlt binäre Daten startet den Binäreditor – Binäreditor, Befehl auswählen Doppelwort- DWORD-Werteditor und Befehlsauswahl Linie und Multiline ruft die entsprechenden Editoren für String- und mehrzeilige Werte auf. Bitte beachten Sie, dass solch umfangreiche Funktionen im Regedit-Editor einfach nicht verfügbar sind.

In den Weiten des Runet ist es schwierig, konstruktive und gut aufbereitete Informationen zum Design des Android-Betriebssystems zu finden. Die Informationen sind größtenteils fragmentiert und unvollständig; es gibt keinen Einführungsteil mit grundlegenden Konzepten, was es für Anfänger schwierig macht, sie wahrzunehmen und zu verstehen. Ohne grundlegende Kenntnisse des Geräts und des Betriebsalgorithmus des Android-Betriebssystems ist es unmöglich, Firmware zu debuggen oder anzupassen oder für das Android-Betriebssystem zu entwickeln. Dies hat mich dazu bewogen, diesen Artikel zu schreiben, in dem ich versuchen werde, „komplexe“ Dinge in einer einfachen und verständlichen Sprache zu vermitteln.

Das Material richtet sich in erster Linie an das Studium durch normale Benutzer und wird als einführender Ausflug in die Welt der Android-Betriebssysteme präsentiert. Daher werden hier prägnante und oberflächliche Informationen ohne technische Tiefen und Nuancen präsentiert. Dieses Material wird für alle nützlich sein, die sich mit dem Flashen und Anpassen von Firmware, der Entwicklung für das Android-Betriebssystem oder der Reparatur mobiler Computersysteme befassen, sowie für den Durchschnittsbenutzer, der die Funktionsprinzipien und Funktionen seines Android besser versteht.

Interne Speicherpartitionen von Android

Der interne Speicher eines Android-Geräts ist in mehrere logische Laufwerke (Partitionen) unterteilt. Hier ist ein klassisches Speicherlayout:

Bootloader- Hier ist ein Programm (Bootloader), mit dem Sie das Android-Betriebssystem, die Wiederherstellung und andere Dienstmodi starten können.

Erholung- Wie der Name schon sagt, ist hier ein Engineering-Recovery-Menü oder einfach Recovery installiert.

Stiefel- das Herzstück des Android-Betriebssystems, hier befinden sich der Kernel, die Treiber sowie die Prozessor- und Speicherverwaltungseinstellungen.

System- die Systempartition, die alle für den Betrieb des Android-Betriebssystems erforderlichen Dateien enthält. Dies ist wie der Windows-Ordner auf Ihrem Laufwerk C:\ (im Folgenden werden wir ihn dem Windows-Betriebssystem zuordnen).

Daten- ein Abschnitt zum Installieren von Anwendungen und zum Speichern ihrer Daten. (Programmdateien)

Benutzer- Dies ist eine bekannte SD-Karte oder einfacher gesagt ein Ort für Benutzerdateien (Eigene Dateien). Hier müssen wir einen Exkurs machen, weil Für die Platzierung dieses Abschnitts gibt es mehrere Optionen:

  • Die Partition befindet sich nicht im internen Speicher, sondern es wird ein externes Laufwerk verwendet – die beliebteste Option. (Abb.1)
  • Bei Geräten mit großem eingebautem Speicher wird dieser Abschnitt als „sdcard“ und die externe Speicherkarte als „sdcard2“ oder „extsd“ angezeigt (möglicherweise gibt es andere Namensoptionen). Wird normalerweise auf Geräten mit Android 3.2 gefunden. (Abb.2 Option 1)
  • Diese Option ersetzte die Vorgängerversion zusammen mit Android 4.0. Der Benutzerbereich wurde durch einen Medienordner im Datenbereich ersetzt, der es uns ermöglichte, den gesamten dem Benutzer zur Verfügung stehenden Speicher für die Installation von Programmen und die Datenspeicherung zu nutzen und nicht den vom Hersteller zugewiesenen Speicherplatz. Mit anderen Worten: SD-Karte und Daten sind eins. (Abb.2 Option 2)

Nachdem wir nun wissen, was wo ist, wollen wir herausfinden, warum es dort ist und wie diese Informationen für uns nützlich sein können.

Beginnen wir mit dem Bootloader. Dies ist der Bootloader, der Android, Wiederherstellung usw. startet. Wenn wir den Netzschalter drücken, startet der Bootloader und beginnt, wenn keine zusätzlichen Befehle (gedrückte Tasten) vorliegen, mit dem Booten. Wurde eine Tastenkombination gedrückt (jedes Gerät hat seine eigene), dann startet es, je nach Befehl, Recovery, Fastboot oder Apx. Die folgende Abbildung zeigt deutlich, was der Bootloader ausführt und wie die Abschnitte miteinander verbunden sind.

Wie aus Abbildung 3 hervorgeht, hat die Wiederherstellungspartition keinen Einfluss auf das Laden des Android-Betriebssystems. Warum wird sie dann benötigt? Versuchen wir es herauszufinden.

Recovery ist im Wesentlichen ein kleines Dienstprogramm, das auf dem Linux-Kernel basiert und unabhängig von Android geladen wird. Die Standardfunktionalität ist nicht umfangreich: Sie können das Gerät auf die Werkseinstellungen zurücksetzen oder die Firmware aktualisieren (vorher auf die SD-Karte heruntergeladen). Aber dank Volkshandwerkern haben wir eine modifizierte Wiederherstellung, mit der Sie modifizierte (benutzerdefinierte) Firmware installieren, Android konfigurieren, Backups erstellen und vieles mehr können. Das Vorhandensein oder Fehlen einer Wiederherstellung sowie deren Version haben keinen Einfluss auf die Leistung des Android-Betriebssystems (eine sehr häufige Frage in den Foren).

Besonders aufmerksamen Lesern dürfte in Abb. 3 ein gewisser Fastboot aufgefallen sein. Dies ist eine Schnittstelle zum direkten Arbeiten mit internen Speicherpartitionen über die Befehlszeile. Dadurch können Sie eine Flash-Wiederherstellung, einen Kernel oder eine neue Firmware-Version durchführen oder die eine oder andere Partition formatieren (alle Informationen löschen).

Da wir über Schnittstellen sprechen, möchte ich über eine andere ziemlich bekannte sprechen – adb (android debugbridge). Dies ist der sogenannte Debugging-Modus, und er wird nicht umsonst so genannt – damit können Sie den Betrieb sowohl des Systems als Ganzes als auch einzelner Anwendungen überwachen. Aber das ist noch nicht alles: Mit adb können Sie vollen Zugriff auf das Dateisystem des Geräts erhalten und Systemdateien ändern oder wichtige Informationen abrufen, wenn Ihr Gerät beim Laden hängen bleibt. Ich werde nicht alle Funktionen des Debugging-Modus beschreiben, weil ... Mein Ziel ist es, allgemeine Informationen zu vermitteln und nicht einen detaillierten Überblick über die Funktionen eines bestimmten Modus.

Nachdem wir die Theorie verstanden haben, starten wir das Android-Betriebssystem.

Wir drücken den Netzschalter – der Bootloader wird gestartet, der den Kernel lädt (Boot), der wiederum das System (System) startet und bereits Programme (Daten) und Benutzerbereich (Benutzer) lädt. (Abb. 3)

Gehen wir nun zum Stammverzeichnis und schauen uns das Innere des Android-Betriebssystems selbst an:

In diesem Diagramm haben wir nur die Verzeichnisse angegeben, die als Referenz erforderlich sind. Tatsächlich gibt es noch viel mehr davon, und die Überprüfung nur eines Systemordners würde einen ganzen Artikel erfordern.

Und so der Datenordner. Wie der Name schon sagt, hat es etwas mit Daten zu tun, aber welche Art? Ja, bei fast allen gehören dazu Synchronisierungs- und Kontodaten, Passwörter für WLAN-Zugangspunkte und VPN-Einstellungen und so weiter. Unter anderem finden Sie hier die App-, Daten- und Dalvik-Cache-Ordner – schauen wir uns ihren Zweck an:

  • App - Hier werden Programme und Spiele installiert.
  • Daten – Anwendungsdaten, deren Einstellungen, Spielstände und andere Informationen werden hier gespeichert.
  • Dalvik-Cache ist ein Software-Cache-Bereich für das Dalvik-Programm. Dalvik ist eine virtuelle Java-Maschine, die die Grundlage für die Ausführung von Programmen mit der Erweiterung *.apk bildet.
  • Um den Start von Programmen zu beschleunigen, wird ihr Cache erstellt.

Der Systemordner speichert Systemdaten und alles, was für den Betrieb des Betriebssystems erforderlich ist. Schauen wir uns einige dieser Ordner an:

  • App – hier handelt es sich um Systemanwendungen (SMS, Telefon, Kalender, Einstellungen usw.) sowie vom Gerätehersteller installierte Anwendungen (Marken-Widgets, Live-Hintergründe usw.).
  • Schriftarten – Systemschriftarten
  • Medien – enthält Standardklingeltöne, Benachrichtigungen, Alarme und Schnittstellentöne sowie eine Boot-Animation (Bootanimation)
  • build.prop – Diese Datei ist fast die erste, die in Gesprächen und Artikeln über die Feinabstimmung des Systems erwähnt wird. Es enthält eine Vielzahl von Einstellungen, wie z. B. Bildschirmdichte, Verzögerungszeit des Näherungssensors, WLAN-Steuerung, Gerätename und -hersteller sowie viele andere Parameter.

Root-Superuser-Rechte im Android-Betriebssystem

Wie in jedem Linux-ähnlichen System erfolgt der Zugriff auf Systemdateien und -verzeichnisse auch im Android-Betriebssystem mit Root-Superuser-Rechten. In diesem Abschnitt haben wir uns entschieden, das Funktionsprinzip von Superuser-Rechten im Android-Betriebssystem zu betrachten, die Möglichkeit, Systemdateien oder logische Partitionen des Dateibereichs zu bearbeiten, wenn Sie über Root-Superuser-Rechte verfügen.

— Zu wissen, was sich in welchem ​​Ordner befindet, ist gut, aber kann man etwas dagegen tun?

- Ja! Sie benötigen jedoch Superuser-Rechte (Root) oder, wenn wir eine Analogie zu Windows ziehen, Administratorrechte. Alle Android-Geräte verfügen zunächst über keine Root-Rechte für den Endbenutzer, d. h. Wenn wir ein Gerät kaufen, sind wir nicht dessen vollwertiger Besitzer. Dies geschieht sowohl zum Schutz vor Malware als auch vor dem Benutzer selbst – schließlich kann der vollständige Zugriff auf das System in ungeschickten Händen zum „Tod“ des Betriebssystems und der anschließenden Notwendigkeit eines Flashens des Geräts führen.

„Nun, was nützt so etwas Gefährliches?“- du fragst.

Jetzt verraten wir es Ihnen:

  • Die Möglichkeit, Daten zu sichern und nach dem Flashen oder versehentlichen Löschen wiederherzustellen.
  • Feinabstimmung des Systems manuell oder mit speziellen Programmen.
  • Entfernen von Systemanwendungen, Klingeltönen, Hintergrundbildern usw.
  • Ändern des Erscheinungsbilds des Betriebssystems (z. B. Anzeige der Akkuladung in Prozent)
  • Funktionalität hinzufügen (z. B. Unterstützung für Ad-hoc-Netzwerke)

Diese Liste lässt sich noch lange fortsetzen, aber ich denke, diese Beispiele werden ausreichen, um einen Eindruck von den Möglichkeiten und der Anwendungsbreite von Root-Rechten zu bekommen.

- Das ist alles großartig, aber jetzt kann jedes Programm auf das „Herz“ des Betriebssystems und meine Daten zugreifen?

- Nein. Sie entscheiden, ob dieser oder jener Anwendung Root-Zugriff gewährt werden soll oder nicht. Dafür gibt es ein Programm namens Superuser bzw. dessen weiterentwickelte Schwester SuperSU. Ohne dieses oder ein ähnliches Programm ist die Nutzung von Root nicht möglich.

Wie Sie sehen, ist Android für den Benutzer kein so schwer zu verstehendes Betriebssystem. Wenn Sie bereits Erfahrung mit Linux-ähnlichen Betriebssystemen haben, werden Sie viele Ähnlichkeiten mit Android-Systemen feststellen, und diese Ähnlichkeiten sind berechtigt. Das Android-System ist vom Linux-Kernel abgeleitet und darauf aufgebaut. Ich hoffe, dass Sie nach der Lektüre des Artikels etwas Neues erfahren oder eine Antwort auf eine Frage erhalten haben, die Sie schon lange interessiert.

Hallo Habr!

Als ich vor einigen Jahren zum ersten Mal mit Android in Kontakt kam, hörte ich von einem Arbeitskollegen, dass Android die Möglichkeit bietet, modifizierte oder selbstgemachte Firmware zu installieren. Ehrlich gesagt war ich damals noch weit davon entfernt. Und selbst vor einem halben Jahr interessierte ich mich für solche Dinge kaum. Tief in meinem Herzen war ich mir sicher, dass das, was der Hersteller tat, bereits für den normalen Gebrauch gedacht war.

Stellen Sie sich meine Enttäuschung vor, als ich ein Telefon in China kaufte, wo die Werkseinstellungen die Nutzung von Google, Skype, Facebook und anderen Anwendungen untersagten. Im Prinzip war es möglich, bei manchen Dingen die Augen zu verschließen, aber als mein Telefon kein Google-Konto erforderte, versprach ich, es auf jeden Fall herauszufinden, egal, was mit mir passierte.

Ein halbes Jahr ist vergangen und meine benutzerdefinierte Firmware wird weltweit erfolgreich eingesetzt.

In dieser Artikelserie wird erläutert, wie man Reverse-Programmierung für Android durchführt und Patches, Optimierungen und Mods implementiert.

Präambel

Also! Definieren wir zunächst die Konzepte, die verwendet werden gegeben Artikel. Ihr übliches Verständnis kann jedoch sehr unterschiedlich sein.

Patch- Ändern oder Ersetzen vorhandener Programmcodes, um den Programmalgorithmus zu modifizieren.
Maud- in der Regel das Hinzufügen zusätzlicher Funktionalität zu bestehendem Programmcode, ohne den Algorithmus zu ändern.
Optimieren- Verbesserung der Programmfunktionalität, um den Zugriff auf Systemparameter zu erleichtern.

Ich möchte auch darauf hinweisen, dass alle Beispiele für ein HTC-Telefon verwendet werden, dies bedeutet jedoch nicht, dass diese Informationen nicht auf anderen Telefonen verwendet werden können.

Vorbereitung der Umgebung

Auf eine ausführliche Anleitung zur Bedienung dieser oder jener Software kann ich verzichten. Wenn Sie sich für diesen Artikel interessieren und bis hierher gelesen haben, dann hoffe ich, dass Sie bereits ein erfahrener Benutzer sind und Erfahrung in der Nutzung oder zumindest dem Experimentieren in diesem Bereich haben. Es gibt viele Anleitungen, Artikel und Testergebnisse im öffentlichen Bereich, genau wie bei Habré. Ich werde auch auf die Beschreibung einiger Begriffe verzichten, da der Artikel sonst sehr langwierig und langweilig wird. Wir werden nur auf den Punkt schreiben. Ich bin mir sicher, dass Sie schon lange am Mittwoch dabei sind. Wenn nicht, empfehle ich, es herunterzuladen und zu installieren.

1 . Android SDK. Dies ist eine Anwendungsentwicklungsumgebung für Android. Um Änderungen vorzunehmen, müssen wir auf jeden Fall unseren Programmcode überprüfen. Die Entwicklungsumgebung ist die beste, die wir nutzen können.
2 . Android-Küche. Mit diesem Dienstprogramm können Sie mit Images von Systempartitionen offizieller oder inoffizieller Firmware arbeiten.
3 . JD-GUI. Java-Code-Dekompiler. Ich möchte gleich anmerken, dass dies hinsichtlich der Benutzerfreundlichkeit der beste Dekompiler ist.
4 . DJ Java Decompiler. Ein weiterer Dekompiler oder Disassembler, wie manche ihn gerne nennen, für den Programmcode der Java-Sprache. Es ist nicht bequem zu verwenden, aber es analysiert Code, den JD-GUI manchmal nicht versteht.
5 . klein. Ein weiterer Disassembler, aber dieses Mal Dalvik-Code. Smali wird zum Zerlegen und Backsmali zum Zusammenstellen des Codes benötigt.
6 . dex2jar. Ein Dienstprogramm zum Konvertieren ausführbarer Dateien mit Dalvik-Code.

Firmware-Konvertierung

Natürlich ist die Firmware, die Sie vom Hersteller auf Ihrem Telefon haben, darauf optimiert, den Stromverbrauch zu senken. Damit die Firmware geändert werden kann, muss sie in ein Format konvertiert werden, das eine Änderung des Codes ermöglicht. Hierzu wird Android Kitchen verwendet. Natürlich können Sie es mit Ihren Händen machen, so wie ich es zuvor getan habe, bis ich genau diese „Küche“ gefunden habe. Im Internet können Sie nachlesen, wie Sie den Systembereich vom Telefon entfernen, die Umgebung installieren und die DEODEX-Firmware erstellen. Wenn Sie noch nichts verstehen, lohnt es sich meiner Meinung nach, mit der Lektüre dieses Artikels zu warten, bis Sie genügend Erfahrung gesammelt haben.

Nachdem die Firmware von einer optimierten Version (ODEX – optimierter ausführbarer Dalvik-Code, wenn ich mich richtig erinnere) zu DEODEX (d. h. NICHT optimiert) geändert wurde, sind alle ausführbaren Dateien zur Änderung bereit.

Direkte Modifikationen

Patches erstellen
Wie ich bereits sagte, war meinem Telefon zunächst die Nutzung von Google untersagt. Egal was passiert, man kann nicht in den Playstore gehen, man kann kein Konto einrichten, das Telefonbuch wird nicht wirklich synchronisiert. Warum braucht man so ein Android? Nachdem ich lange im Logcat des Geräts selbst gestöbert hatte, fand ich Einträge, die besagten, dass die Nutzung von Google verboten sei. Das Unpraktischste an Android ist, dass Sie das Protokoll sehen, aber nicht wissen, welche Systemanwendung es erstellt. Um herauszufinden, woher meine Beine kamen, musste ich alle Systemanwendungen entkernen, um Java-Code zu disassemblieren. Es hat viel Zeit gekostet, aber ich nutze immer noch die Arbeit, die ich beim Analysieren und Finden des richtigen Codes geleistet habe. Die Schritte, um solche Tools zu erhalten, sind wie folgt:
1 . Machen Sie DEODEX aller Firmware
2 . Ihre neue DEODEX-Firmware muss zusammengestellt und auf Ihr Telefon geflasht werden. Wie das geht, ist Thema eines anderen Artikels.
3 . Extrahieren Sie aus jeder Datei in /system/framework die Datei „classes.dex“ und konvertieren Sie sie mit „dex2jar“ in JAR.
4 . Öffnen Sie jedes resultierende JAR in der JD-GUI und speichern Sie es erneut im Quellcode
5 . Entpacken Sie den Quellcode aus dem Archiv.

Am Ende hatte ich so viele Ordner, wie es JAR-Dateien in /system/framework gab, und jeder Ordner hatte eine Java-Quellcodestruktur.
Durch einfache Manipulationen fand ich schnell die Stelle, an der Einträge in Logcat generiert wurden.

Wir werden nicht die gesamte Logik des Verbots betrachten, da jeder Fall eine eigene Geschichte ist. Ich musste ein paar Stunden damit verbringen, herauszufinden, wo die Überprüfungen durchgeführt wurden, ein Blockdiagramm des Algorithmus in meinem Kopf zu erstellen und zu verstehen, wohin ich gehen musste, um den Algorithmus ein wenig zu „verwöhnen“.

Es stellte sich als einfach heraus. Es gibt eine Unterroutine, die auf der Grundlage voreingestellter Konstanten bei der Kontaktaufnahme antwortet, ob das Telefon zu China gehört oder nicht.

Der Code befand sich in der Datei HTCExtension.jar, und die Klasse, die diese Unterroutine enthielt, befand sich in

Entpacken und Analyse der Originaldatei
1 . Zuerst müssen wir die ursprüngliche DEODEX-JAR-Datei nehmen, die für den Teil des Codes verantwortlich ist, den wir benötigen. In unserem Fall HTCExtension.jar.
2 . Öffnen Sie es mit einem beliebigen Archivierungsprogramm und ziehen Sie von dort aus die Datei „classes.dex“ heraus
3 . Verwenden Sie den dex2jar-Konverter, um es in eine JAR-Datei zu konvertieren. Befehl: dex2jar.batclasses.dex
4 . Öffnen Sie die resultierende Datei „classes_dex2jar.jar“ in der JD-GUI.
5 . Ja, meistens dekompiliert JD-GUI den Code nicht so, wie er im Original aussieht, er ist verständlich, aber durchaus lesbar. Im Quellcode sehen wir, dass das Unterprogramm die Projektparameter und das Firmware-Sprachflag überprüft. In unserem unglücklichen Fall wird TRUE zurückgegeben.
public static boolean isChina() ( if ((HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && (2 == HtcBuildFlag.Htc_LANGUAGE_flag)) || (HtcBuildFlag.Htc_PROJECT_flag == 27)) return true;
6 . Um einen Patch zu erstellen, müssen wir den Dalvik-Code selbst zerlegen. Hierfür verwenden wir Baksmali. Am bequemsten ist es, einen separaten Ordner zu erstellen und dort drei Dateien zusammenzufügen: HTCExtension.jar, smali.jar Und baksmali.jar. Geben Sie den Befehl java -Xmx512m -jar baksmali.jar -a -d -o HTCExtension -x HTCExtension.jar ein

Dies ist die API für Ihre Android-Version. Für JB sind es 16
– der Ordner, in dem sich alle Firmware-Frameworks befinden.

In meinem Fall war es der Befehl
java -Xmx512m -jar baksmali.jar -a 16 -d S:\dev\Android\Android-Kitchen\WORKING_JB_15\system\framework -o HTCExtension -x HTCExtension.jar
7 . In unserem neu erstellten Ordner erschien der HTCExtension-Ordner und darin unsere Dateien mit Dalvik-Code.
8 . Suchen der Datei entlang des Pfads \com\htc\util\contacts\BuildUtils$Customization.java und schauen Sie sich den Code an:
.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/16 v2, 0xd8 if-eq 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 v1, Lcom/htc/htcjavaflag/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/htc/htcjavaflag/HtcBuildFlag;-> 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 if-eq v1, v2, :cond_13 .line 291:cond_1d sget-short v1, Lcom/htc/htcjavaflag/HtcBuildFlag;->Htc_PROJECT_flag:S const/16 v2, 0x1b if-eq v1, v2, :cond_13 .line 297 const/4 v0, 0x0 goto:goto_13 .end Methode
9 . Beängstigend, nicht wahr? Nichts ist klar. Dies ist jedoch ein behebbares Problem. Nachdem Sie einige eigene Patches erstellt und damit Erfahrung gesammelt haben, können Sie den Code problemlos ohne Tools von Drittanbietern ändern. In unserem Fall in diesem Code
.prologue const/4 v0, 0x1 weist der Variablen v0 den Wert 1, also TRUE, zu. Als nächstes folgen alle möglichen Prüfungen, und wenn das Telefon kein chinesisches ist, ändert sich der Wert der Variablen:
.Zeile 297 const/4 v0, 0x0 goto:goto_13
10 . Der einfachste Weg, den Vater der russischen Demokratie zu retten, besteht darin, den Code wie folgt zu ändern:
.prologue const/4 v0, 0x0 , also den Wert der Variablen von 1 auf 0 ändern. Das heißt, egal was passiert, der Wert FALSE würde immer zurückgegeben und in der JD-GUI würde der Code wie public static aussehen boolean isChina() ( if (( HtcBuildFlag.Htc_PROJECT_flag == 216) || (HtcBuildFlag.Htc_PROJECT_flag == 218) || (HtcBuildFlag.Htc_PROJECT_flag == 23)); while (((HtcBuildFlag.Htc_PROJECT_flag == 1) && ( 2 == HtcBuildFlag. Htc_LANGUAGE_flag)) (HtcBuildFlag.Htc_PROJECT_flag == 27)) return false;
11 . Ja, die Methode wird funktionieren. Aber wir suchen diesmal nicht nach einfachen Wegen. Zweitens ist es nicht gerade schön. Ich möchte so etwas codieren
öffentlicher statischer boolescher Wert isChina() ( return false; )
12 . Wie können wir den Dalvik-Code für diesen Quellcode erhalten? Für Anfänger machen wir einen kleinen Trick.

Dalvik-Code erstellen
1 . Öffnen Sie das Android SDK.
2 . Wir erstellen ein neues Projekt und schreiben den folgenden Code in unserer einzigen Testklasse
Paket ru.habrahabr.test; öffentlicher Klassentest ( public static boolean isChina() ( return false; ) )
3 . Wir kompilieren unser Projekt und nehmen dann die zusammengestellte Anwendung aus dem Arbeitsbereich.
4 . Wir haben die zusammengestellte Anwendung in dem Ordner abgelegt, in dem wir die JAR-Datei entkernt haben.
5 . Geben Sie den Befehl java -Xmx512m -jar baksmali.jar -a -d -o test -x test .apk ein
6 . Wir haben die neu erstellte Anwendung in Dalvik-Code zerlegt.
7 . Öffnen Sie unsere Datei test.smali und sehen Sie sich den Code dort an
.method public static isChina()Z .registers 1 .prologue .line 7 const/4 v0, 0x0 return v0 .end method
8 . Das war's, der Patching-Code ist fertig.
Einen Patch rollen
1 . Der Dalvik-Code ist mit Markierungen übersät, die auf eine Codezeile in der ursprünglichen Quelldatei hinweisen. Dies ist erforderlich, wenn in Ihrem Programm etwaige Fehler angezeigt werden. Der Code funktioniert auch ohne Angabe von Zeilen einwandfrei.
2 . Wir löschen die Zeilen mit Zeilennummerierung, kopieren und ersetzen die Methode (Unterroutine) in unserem \com\htc\util\contacts\BuildUtils$Customization.java Datei.
.method public static isChina()Z .registers 1 .prologue const/4 v0, 0x0 return v0 .end method
3 . Speicher die Datei. Ja, ich habe vergessen zu erwähnen, dass Sie einen normalen Editor benötigen, zum Beispiel Notepad++ oder EditPlus. Wem gefällt welches?
Kompilieren und Erstellen einer gepatchten JAR-Datei
1 . Mit Backsmali haben wir unsere JAR-Datei entkernt und müssen sie jetzt wieder zusammensetzen.
2 . Geben Sie den Befehl java -Xmx512m -jar smali.jar -a 16 HTCExtension -oclasses.dex ein
3 . Die Datei „classes.dex“ erscheint in unserem Ordner
4 . Wieder geöffnet HTCExtension.jar Datei mit einem Archivierungsprogramm und ersetzen Sie die vorhandene darin class.dex zu unserem gerade erstellten.
5 . Das ist es, unseres HTCExtension.jar enthält geänderten Programmcode.
Ersetzen der Originaldatei durch eine gepatchte Datei
Normalerweise werden für normale Benutzer spezielle Skripte erstellt, die per Wiederherstellung ersetzt werden. Aber das interessiert uns nicht. Erstens ist es langwierig und mühsam, und zweitens sind wir erfahrene Benutzer und können uns einige Feinheiten leisten.

1 . Sie können die aktuelle Arbeitsdatei mit den folgenden Befehlen ersetzen, wenn Sie bereits über DEODEX-Firmware verfügen und über Root-Zugriff verfügen:

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 protected]@classes.dex neu starten

Der erste Befehl lädt die gepatchte Datei auf das Flash-Laufwerk hoch
Der 2. Befehl öffnet die Shell
Der dritte Befehl gewährt Root-Zugriff
Der 4. Befehl mountet das System im Lese-/Schreibmodus
Der 5. Befehl erstellt eine Sicherungskopie der Datei
Der 6. Befehl überschreibt die vorhandene Datei mit der neuen gepatchten.
Der 7. Befehl konfiguriert Berechtigungen
8. Befehl löscht den Cache
Der 9. Befehl startet das Gerät neu.

2 . Vielen Dank, dass Sie bis hierhin gelesen haben, es ist nur noch wenig übrig.
3 . Nach einem Neustart wird Ihr neuer gepatchter Code wirksam.
4 . Wenn der Code nicht funktioniert oder ein Fehler auftritt, können Sie mit einfachen Kombinationen die Sicherungskopie zurückgeben.
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 protected]@classes.dex neu starten

Epilog

Ja, einige fanden diesen Artikel zu spezifisch, andere fanden ihn schwer zu verstehen und wieder andere fanden ihn nutzlos. Auf ausführliche Details und Abbildungen, wie das Ganze live und in der Praxis aussieht, habe ich bewusst verzichtet. Erstens wird diese Arbeit undankbar sein und nur noch mehr Fragen aufwerfen. Zweitens möchte ich nicht, dass sich in Foren eine Heerschar von Benutzern darüber beschwert, dass sie ihr Telefon kaputt gemacht haben.

Im nächsten Artikel werde ich Ihnen erklären, wie man Tweeks macht. Es wird ein Beispiel für die automatische Aufzeichnung von Telefongesprächen mit nativen Telefontools geben. Vielen Dank für Ihre Aufmerksamkeit.

P.S. Wenn etwas nicht klar oder verwirrend ist, stellen Sie Fragen – ich werde immer gerne antworten und erklären.

Formulierung des Problems

Das Speichern von Informationen auf einem Computer birgt das Risiko einer versehentlichen oder vorsätzlichen Offenlegung. Daher werden verschiedene Methoden und Mittel zu ihrem Schutz eingesetzt. Meistens als primäres Mittel, das den freien Zugang zu Informationen in elektronischer Form verhindert, Verschlüsselung verwenden, die in Hardware oder Software implementiert ist. Als Objekte des kryptografischen Schutzes fungieren einzelne Dateien, Dateigruppen, Verzeichnisse und schließlich logische Laufwerke. Das Ergebnis der Verschlüsselung sind Dateiarchive, die sich darauf befinden elektronische Medien. Einzelheiten zur Implementierung verschiedener kryptografischer Algorithmen lassen darauf schließen, dass die GKU in diesem Fall auch Probleme im Zusammenhang mit der garantierten Zerstörung des Originals lösen muss unverschlüsselte Informationen um seine Genesung zu verhindern.

Tatsache ist, dass ein Merkmal aller verwendeten Dateisysteme ( FAT, NTFS usw.). Es ist nicht möglich, Informationen in Clustern, die zu einer Datei gehören, zu überschreiben, bis die Datei als gelöscht erkannt wird. Das heißt, bei der Dateiverschlüsselung wird ihre verschlüsselte Kopie nicht anstelle der ursprünglichen Datei, sondern in freie Cluster des elektronischen Mediums geschrieben, und erst nach Abschluss des Verschlüsselungsvorgangs wird die unverschlüsselte Datei gelöscht, sofern dies nicht vorgesehen ist Algorithmus.

Somit ist es möglich, gelöschte unverschlüsselte Informationen wiederherzustellen, was durch Softwareprodukte wie erfolgreich gelingt File Recover, Back2Life, R-Studio, GetDataBack für NTFS usw.

Wenn Sie die damit verbundenen Empfehlungen nicht berücksichtigen physische Zerstörung elektronischer Medien, Dann kann dies nur dadurch unmöglich gemacht werden, dass die Magnetplattencluster, auf denen zuvor vertrauliche Informationen gespeichert waren, wiederholt neu beschrieben werden. Zum Beispiel, American National Standard des Verteidigungsministeriums DOD 5220.22-M (E) beinhaltet die Aufzeichnung von Zufallszahlen im ersten Durchgang, zusätzliche Zahlen zu den im vorherigen Durchgang aufgezeichneten Zahlen im zweiten und Zufallszahlen im dritten Durchgang. Im berühmten Algorithmus von Peter Gutmann gilt dieser als einer der Am zuverlässigsten werden anstelle der zerstörten Daten nacheinander alle bekannten Ziffernkombinationen geschrieben (insgesamt werden 35 Durchgänge durchgeführt). — Methoden zur Informationsvernichtung unterstützen amerikanische Standards DOD 5220.22-M, Armee AR380-19, NCSC-TG-025, Luftwaffe 5020, NAVSO P-5239-26, HMG IS5, Deutsches VSITR, kanadisches OPS-II und russisches GOST P50739-95 usw. Somit Verschlüsselung, die innerhalb des logischen Laufwerks durchgeführt wird, birgt immer das Risiko einer unvollständigen Zerstörung der Originalinformationen, sodass eine andere Herangehensweise an dieses Problem erforderlich ist.

mob_info