Zum Hauptinhalt springen

Was ist besonders an einer roothide-Umgebung?

roothide ist eine dritte Jailbreak-Umgebung neben rootful und rootless.


Unterschiede zu rootful und rootless

Anders als bei einem herkömmlichen Jailbreak sind in einer roothide-Umgebung Jailbreak-Root (jbroot) und System-Root (rootfs) voneinander isoliert.
Der Jailbreak-Root wird unter einem zufälligen Pfad innerhalb des System-Roots eingehängt; gleichzeitig wird der System-Root unter dem Pfad Jailbreak-Root/rootfs/ zurück in den Jailbreak-Root eingehängt.

System-Root rootfs

In einer roothide-Umgebung ist der System-Root das unveränderte ursprüngliche Stammverzeichnis des iOS-Systems ohne zusätzliche Pfade.

Jailbreak-Root jbroot

Der Jailbreak-Root wird unter einem zufälligen Pfad im System-Root eingehängt.
Er befindet sich normalerweise unter /var/containers/Bundle/Application/.jbroot-XXXXXXXXXXXXXXXX/ (die lange Folge von X steht für einen Zufallswert).
Mit der Funktion jbroot kann ein normaler Pfad in den entsprechenden Pfad im Jailbreak-Root umgewandelt werden.
Um beispielsweise auf /var/mobile/Media/1.txt im Jailbreak-Root zuzugreifen, verwenden Sie jbroot("/var/mobile/Media/1.txt").
Wenn das Skript f = io.open(jbroot("/var/mobile/Media/1.txt"), "r") ausführt, wird tatsächlich folgende Datei geöffnet:

/var/containers/Bundle/Application/.jbroot-XXXXXXXXXXXXXXXX/var/mobile/Media/1.txt

Shell-Umgebung

Wie oben beschrieben, wird der Jailbreak-Root unter einem zufälligen Pfad im System-Root eingehängt.
In einer Shell-Umgebung (beispielsweise einem deb-Installationsskript) lässt sich die konkrete Position des Jailbreak-Roots im System-Root jedoch nicht vorhersehen.
Daher legt roothide den Laufzeit-Root von Shell-Skripten auf den Jailbreak-Root fest.
Das bedeutet: /Applications/XXTExplorer.app in einem deb-Paket wird tatsächlich unter folgendem Pfad installiert:

/var/containers/Bundle/Application/.jbroot-XXXXXXXXXXXXXXXX/Applications/XXTExplorer.app

Dadurch wird verhindert, dass durch deb installierte Jailbreak-Tweaks den System-Root verunreinigen.
Dies führt jedoch zu einem Problem: Wenn Sie in XXTouch os.execute oder io.popen verwenden,
wird das Shell-Skript über bash/zsh ausgeführt.
Der Aufruf os.execute("/usr/bin/hidutil list") führt daher tatsächlich folgenden Befehl aus:

/var/containers/Bundle/Application/.jbroot-XXXXXXXXXXXXXXXX/usr/bin/hidutil list

Dadurch können System-Root-Pfade nicht direkt aus der Shell aufgerufen werden.
Deshalb bindet roothide den System-Root unter Jailbreak-Root/rootfs/ zurück ein.
Wenn das Skript os.execute("/rootfs/usr/bin/hidutil list") ausführt, wird somit tatsächlich folgender Befehl ausgeführt:

/usr/bin/hidutil list

Spiegelung von Dateien und Verzeichnissen

Einige Datei- und Verzeichnispfade im Jailbreak-Root sind als symbolische Links auf den ursprünglichen System-Root eingerichtet:

Pfad im Jailbreak-Root
/dev
/private/preboot
/var/containers
/var/mobile/Containers
/usr/share/misc/trace.codes
/usr/share/zoneinfo
/etc/hosts.equiv
/etc/hosts
/var/run/utmpx
/var/db/timezone
/System/Library/CoreServices/SystemVersion.plist

Außerdem wird für den Skriptpfad von XXTouch /var/mobile/Media/1ferver im System-Root ebenfalls ein entsprechender symbolischer Link angelegt.
Die oben genannten Pfade sind sowohl im Jailbreak-Root als auch im System-Root direkt zugänglich.
Referenzquelle

XXTouch in einer Bootstrap-Umgebung

Kein automatischer Start

Nach einem Neustart und der erneuten Aktivierung von Bootstrap auf einem Gerät mit Bootstrap-Roothide-Halbjailbreak wird der XXTouch-Hintergrunddienst nicht automatisch gestartet.
Öffnen Sie die XXTouch-App manuell. Die App beendet sich automatisch und zeigt Starting XXTouch Daemon... an; nach etwa 20 Sekunden ist der Hintergrunddienst bereit.

Kein Dienst auf dem Home-Bildschirm

Wenn Bootstrap verwendet, der Dienst für die Injektion auf dem Home-Bildschirm aber nicht über Serotonin aktiviert wurde, sind die oberflächenbezogenen Funktionen in XXTouch-Skripten nicht verfügbar:

  • Funktionen wie dialog und webview, die Oberflächen in einem übergeordneten Fenster erstellen, sind beeinträchtigt.
  • Die Funktion alerthelper zur Verarbeitung von Dialogen auf dem Home-Bildschirm funktioniert nicht.

Mit XXTouch Dateien bereinigen, die in einer Bootstrap-Roothide-Umgebung von Apps erkannt werden könnten

local noexecute = require('no_os_execute')

function remove_sys_app_caches(name)
noexecute.rm_rf('/var/root/Library/WebKit/'..name)
noexecute.rm_rf('/var/root/Library/Caches/'..name)
noexecute.rm_rf('/var/root/Library/HTTPStorages/'..name)
noexecute.rm_rf('/var/root/Library/SplashBoard/Snapshots/'..name)
noexecute.rm_rf('/var/root/Library/Saved Application State/'..name..'.savedState')
noexecute.rm_rf('/var/root/Library/Preferences/'..name..'.plist')

noexecute.rm_rf('/var/root/Library/WebKit/'..name)
noexecute.rm_rf('/var/mobile/Library/Caches/'..name)
noexecute.rm_rf('/var/mobile/Library/HTTPStorages/'..name)
noexecute.rm_rf('/var/mobile/Library/SplashBoard/Snapshots/'..name)
noexecute.rm_rf('/var/mobile/Library/Saved Application State/'..name..'.savedState')
noexecute.rm_rf('/var/mobile/Library/Preferences/'..name..'.plist')
end

remove_sys_app_caches('com.opa334.Dopamine')
remove_sys_app_caches('org.coolstar.SileoStore')
remove_sys_app_caches('ws.hbang.Terminal')
remove_sys_app_caches('pisshill.usprebooter')
remove_sys_app_caches('com.samiiau.loader')
remove_sys_app_caches('kr.xsf1re.vnodebypass')
remove_sys_app_caches('com.serena.Antoine')
remove_sys_app_caches('wiki.qaq.TrollFools')
remove_sys_app_caches('com.tigisoftware.Filza')
remove_sys_app_caches('com.tigisoftware.Filza000')
remove_sys_app_caches('com.tigisoftware.ADManager')
remove_sys_app_caches('com.ichitaso.otadisablerts')
remove_sys_app_caches('chaoge.ChargeLimiter')
remove_sys_app_caches('com.xxtouch.XXTExplorer')

noexecute.rm_rf('/private/var/mobile/Library/Filza')
noexecute.rm_rf('/private/var/mobile/.ssh')
noexecute.rm_rf('/private/var/root/.ssh')
noexecute.rm_rf('/private/var/mobile/offsets.txt')
noexecute.rm_rf('/private/var/mobile/offsets.txt')
noexecute.rm_rf('/private/var/mobile/Serotonin.jp2')
noexecute.rm_rf('/private/var/mobile/Documents/kfund_offsets.plist')
noexecute.rm_rf('/private/var/iomfb_bics_daemon')

Warum sind diese Dateien vorhanden?

Obwohl Roothide Jailbreak-Apps unter zufälligen Pfaden installiert, wird ihr Laufzeitverhalten nicht eingeschränkt.
Daher schreiben Jailbreak-Apps die nach ihrer Ausführung erzeugten Caches und sonstigen Dateien weiterhin an die entsprechenden Positionen im System-Root.

Außerdem können Apps den SSH-Port prüfen. Deaktivieren Sie bei Bedarf den SSH-Dienst in den Bootstrap-Einstellungen, um eine Erkennung zu verhindern.