Ich habe ein One Plus 6T Android-Gerät mit einem ROM des Build-Typs user
. dm-verity
Dieses Gerät ist mit Magisk gerootet und ich möchte es auf diesem Gerät deaktivieren . Ich habe versucht zu laufen, adb disable-verity
aber ich habe eine Fehlermeldung erhaltenverity cannot be disabled/enabled - USER build
Gibt es eine Möglichkeit, dies zu deaktivieren?
sepolicy
Ziel: Sie möchten eine benutzerdefinierte Datei im Verzeichnis platzieren system_root
. Ich habe es mit folgenden Befehlen versucht:
C:\Users\GPU-Test>adb shell
OnePlus6T:/ $ su
OnePlus6T:/ # mount -o rw,remount /system_root
OnePlus6T:/ # cp /sdcard/selinux_policy_modified /system_root/sepolicy
cp: /system_root/sepolicy: Permission denied
1|OnePlus6T:/ # cp -f /sdcard/selinux_policy_modified /system_root/sepolicy
cp: /system_root/sepolicy: No such file or directory
1|OnePlus6T:/ # ^C
130|OnePlus6T:/ # exit
130|OnePlus6T:/ $ exit
C:\Users\GPU-Test>adb disable-verity
verity cannot be disabled/enabled - USER build
Preserve force encryption
Es wurde auch versucht, das Kontrollkästchen zu deaktivieren Preserve AVB 2.0/dm-verity
, aber die obigen Befehle haben immer noch das gleiche Ergebnis. Auch beim Neustart werden diese Kontrollkästchen automatisch wieder aktiviert.
Ich werde einen allgemeinen Überblick darüber geben, wie dm-verity
und verwandte Dinge auf Android funktionieren, entsprechend meinem begrenzten Wissen. Die Situation kann auf verschiedenen Geräten und ROMs unterschiedlich sein.
WIE WIRD DM-VERITY DURCHGESETZT?
dm-verity
( Verified Boot und AVB ) sowie dm-crypt
( FDE ) sind Ziele von device-mapper
Funktionen des Linux-Kernels. dm-verity
verifiziert die Integrität jedes Blocks, wenn sie vom Blockgerät gelesen werden; erzwungen durch init_first_stage
gemäß fs_mgr_flags
Satz in fstab ( 1 ) . Auf System-als-Root- Geräten ( A/B
und non-A/B
) wird der Kernel gepatcht , um während des Mountens Verity zu erzwingen /system
, und /vendor
wenn verify
/ avb
-Flags im fstab-Gerätebaum (dtb) gefunden werden.
dm-crypt
entschlüsselt/verschlüsselt Daten transparent beim Lesen/Schreiben von/auf Blockgerät. FBE basiert auf einem anderen Kernel-Frameworkfscrypt
; aber beide werden verwaltet von vold
(der als nativer Dienst ausgeführt wird), wenn fs_mgr_flags
enthalten voldmanaged
.
WO IST FSTAB?
fstab
ist traditionell eine Datei unter Linux, um Dateisysteme anzugeben, die beim Booten gemountet werden sollen. Es ist eine Kernkomponente der fs_mgr
Funktionalität von Android.
Bei Veröffentlichungen vor Oreo fstab
war in ramdisk
. /vendor
Mit Treble wurde es nach (oder ) verschoben /system/vendor
, während die fstab-Einträge für system
und vendor
(und odm
) nach Device Tree Blob ( dtb
) verschoben wurden. Der Kernel exportiert dtb fstab
Einträge im Gerätebaumverzeichnis unter /proc/device-tree/firmware/android
.
Einige OEMs setzen auch oder Partitionen fstab
ein .odm
nvdata
Quelle: Konfiguration des Android-Speichergeräts
WO IST DTB?
Der Gerätebaum ist eine Datenstruktur zum Beschreiben von Hardware, die für den Kernel nicht erkennbar ist. Device Tree Source ( dts
) kann in (binäres Blob von DT) konvertiert werden dtb
und umgekehrt mit dtc
. DTB wird beim Booten vom Bootloader geladen und an den Kernel übergeben, damit dieser Hardware erkennen und entsprechende Geräteknoten erstellen kann.
DTB ist entweder:
zImage
oder Image.gz
in boot.img
( 2 ) . Es kann gzip
mit vom Archiv getrennt werden split-appended-dtb (sadtb)
.Oder in dtbo
Partition, wie es einige OEMs tun. Dies kann überprüft werden mit:
~# ls -l /dev/block/bootdevice/by-name/dtbo*
~# grep -C5 PARTNAME=dtbo /sys/dev/block/*/uevent | grep DEVNAME | sed 's/.*=//; s|^|/dev/block/&|'
boot.img
nach der 2. Stufe oder in odm
der Partition (selten, einige OEMs tun dies).Auch wenn das Gerät non-A/B
, dtb
(von boot.img
und/oder Partition) ist, wird es auch im DTBO-Abschnitt nach Header, Kernel, Ramdisk und 2nd Stage ( 3 )dtbo
hinzugefügt . Dies spielt jedoch keine Rolle beim normalen Booten. Aber wenn das Gerät auch ist , muss Magisk in dieser Wiederherstellungspartition installiert werden, da die keine ( 4 ) enthält .recovery.img
system-as-root
boot.img
ramdisk
Falls DTB nicht an den Kernel angehängt wird, dtb(s)
werden sie in dtb.img
die Verwendung von mkdtimg
. Dasselbe Tool kann das Bild zurückgeben.
Quelle: Implementieren von DTO
WIE DEAKTIVIERE ICH DM-VERITY?
Kann auf userdebug
ROMs dm-verity
mit deaktiviert werden adb
. Es ändert die magische Zahl des Verity-Metadatenblocks ( 5 , 6 ) , der nach dem letzten Dateisystemblock auf dem Blockgerät ( system
oder vendor
) ( 7 ) geschrieben wird . Zitat von hier :
Das Fehlen dieser magischen Zahl stoppt den Verifizierungsprozess
Im Fall von AVB adb
werden Änderungen vorgenommen , vbmeta header
um die Überprüfung von Hashtree-Bildern zu deaktivieren ( 8 , 9 ) . Zitat von hier :
wenn das
AVB_VBMETA_IMAGE_FLAGS_HASHTREE_DISABLED
Flag in der vbmeta der obersten Ebene gesetzt ist,androidboot.veritymode
wird es auf deaktiviert gesetzt
On user
builds ro.debuggable
wird 0
und adbd
wird nicht als root ausgeführt. Es gibt auch andere Unterschiede wie den von ALLOW_ADBD_DISABLE_VERITY
, also adb
wird nicht deaktiviert dm-verity
. Ein anderer Ansatz besteht darin , das Flag verify
or ( 10 ) aus zu entfernen . Zitat von hier :avb
fstab
Um die Partition zu überprüfen...
...
in der fstab für den entsprechenden Eintragverify
diefs_mgr
Flags ergänzen.
Um die Verschlüsselung zu entfernen, müssen forceencrypt=
, forcefdeorfbe=
oder fileencryption=
durch ersetzt werden encryptable=
. Die Verschlüsselung kann jedoch nicht ohne Zurücksetzen auf die Werkseinstellungen entfernt werden (auch FBE?), sodass das Deaktivieren Preserve force encryption
der Magisk-App nichts bewirkt.
Einige OEMs verwenden Flags und Eigenschaften auch auf Geräten mit aktiviertem.support_scfs
fs_mgr
ro.config.dmverity=true
dm-verity
Es wurden auch einige Exploits in der Bootloader- und ADB- Implementierung einiger OEMs entdeckt, die zum Deaktivieren dm-verity
auf betroffenen Geräten verwendet werden können. Solche Sicherheitslücken werden jedoch normalerweise im Laufe der Zeit durch Updates von OEMs behoben.
OPTION 1
Legen Sie Optionen in der Konfigurationsdatei fest, bevor Sie Magisk installieren:
~# echo 'KEEPVERITY=false' >/cache/.magisk
~# echo 'KEEPFORCEENCRYPT=true' >>/cache/.magisk
Falls installiert, Preserve AVB v2.0/dm-verity
muss Magisk nach dem Deaktivieren der App neu installiert werden. Zitat von hier :
in Magisk Manager „Deinstallieren > Bilder wiederherstellen“, um die Bilder wiederherzustellen, aktivieren Sie das Kontrollkästchen „AVB 2.0/dm-verity beibehalten“ in den erweiterten Einstellungen und installieren Sie dann Magisk über die App neu.
OPTION 2
Verwenden Sie einige dm-verity
Disabler-Reißverschlüsse wie diesen .
OPTION 3
Finden Sie heraus, wo sich die fstab
Einträge von /system
und /vendor
auf Ihrem Gerät befinden.
Wenn in ramdisk
(vor Höhen):
ramdisk
, modifizieren fstab
und neu packen.ramdisk
Oder direkt patchen :
~# magiskboot cpio ramdisk.cpio 'patch false true'
Wenn im dtb
:
boot.img
dtb(s)
dtb(s)
.dtb(s)
An Kernel anhängenboot.img
dtbo
der Partition oder boot.img
nach der 2. Stufe, patchen dtb.img
und zurück in die Partition oder schreiben boot.img
.Wie werden Boot- oder Recovery-Image und Ramdisk entpackt / neu gepackt?
Verwenden Sie AIK oder magiskboot
.
Wie wird gepatcht dtb
?
Patchen Sie direkt mit magiskboot
oder konvertieren Sie sie manuell dtb
in dts
, bearbeiten Sie sie dts
mit einem beliebigen Texteditor, um dm-verity
Markierungen zu entfernen, und konvertieren Sie sie dts
wieder in dtb
.
VERWANDT:
Sie können das Magisk-Stammpaket einfach bearbeiten, um NUR das dm-verity-Flag zu deaktivieren. Es werden buchstäblich nur ein paar Zeilen von Magisk-Skripten auskommentiert, da die Funktionalität in Magisk von Natur aus vorhanden ist. Hier ist der Link zu einem solchen Paket: Download magisk-onlynoveritypatch.zip Booten Sie in twrp, installieren Sie von zip und wählen Sie dieses zip aus.
Alex
Vatish Sharma
Alex
/
warum nicht statt verwenden/system_root
?Irfan Latif
/
, nichtsystem
auf Partition./
ist ein flüchtiges Dateisystem.Alex
Irfan Latif
system
wird die Partition angehängt,/
aber die zu ändernden/hinzuzufügenden Dateien (z. B.init
,init.rc
,/sbin
) werden mithilfe von Bind-Mounts überlagert. In jedem Fall soll das Ziel systemlos und erkennungslos sein .Vatish Sharma
sepolicy
die Datei direkt platzierensystem.img
und dann per Befehl flashenfastboot system system.img
. Ich habe viele Tutorials wie china-devices.com/forum/index.php?threads/… ausprobiert , aber ich erhalte eine Fehlermeldung wie „Ungültiges Sparse-Dateiformat bei Header Magi \n Fehler beim Lesen der Sparse-Datei“. Ich denke, dass alle Tutorials für neue Android-Images veraltet sind. Habt ihr eine Ahnung von einem Tool, das extrahieren kannsystem.img
?Irfan Latif
system.img
ist keine große Sache, aber es macht keinen Unterschied. Das Gerät startet nicht mit geändertem,system.img
wenndm-verity
aktiviert ist. Lassen Sie mich Ihnen antworten, was Sie versuchen können, zu deaktivierendm-verity
.