Ich verstehe, dass das /proc
Dateisystem die Ausgabe verschiedener Prozesse widerspiegelt. Leider habe ich eine propietary ( romdump
) - Binärdatei, die erwartet, dass die Mount-Tabelle als /proc/mtd
angezeigt wird, während mein Android-Gerät sie als ausgibt /proc/mounts
.
Ich habe versucht, einen symbolischen Link zu erstellen, aber dies funktioniert natürlich nur für tatsächliche Dateien oder Verzeichnisse. Wie kann ich diese Binärdatei täuschen, um die Ausgabe zu lesen, /proc/mounts
anstatt /proc/mtd
?
Antworten:
Der einfachste Weg wäre, die Binärdatei zu ändern:
Da Sie eine Binärdatei bearbeiten, besteht der Trick darin, sicherzustellen, dass die ursprüngliche Zeichenfolge
/proc/mtd
dieselbe Länge wie die neue Zeichenfolge hat/tmp/mntx
, damit Sie die Größe oder Position von Elementen in der Binärdatei nicht ändern.Dies ist nicht kinderleicht - es funktioniert nicht, wenn die Binärdatei den Pfadnamen in Teilen aufbaut, anstatt eine feste Zeichenfolge zu verwenden. Aber es wird wahrscheinlich den Trick machen.
quelle
ln
gibt "Link abgelegt Datei existiert", während/tmp/mntx
nicht. (Tatsächlich musste ich das/tmp
Verzeichnis erstellen .)ln
Befehl war rückwärts, sorry. Fest!Ich kenne keine Möglichkeit, Dinge
/proc
außerhalb des Schreibens eines Moduls (oder eines einfachen Kernel-Codes) hinzuzufügen . Könnte aber einige Dienstprogramme da draußen sein.Wenn Sie ein Modul erstellen und einfügen können, ist es ziemlich einfach: Sie können einfach einen anderen Symlink erstellen (
/proc/mounts
ist bereits ein Symlink).Quelle (
mnt_link.c
):Makefile:
(Dies setzt voraus, dass Sie für Ihr aktuelles Linux-System erstellen. Um etwas für Android zu erstellen, lesen Sie bitte: Wie erstellen Sie ein ladbares Kernelmodul für Android? )
Sobald Sie das Modul (
insmod mnt_link.ko
) geladen haben , sollten Sie Folgendes erhalten:Davon abgesehen könnte Ihr Dienstprogramm sehr wohl etwas anderes als diesen Symlink erwarten. (Möglicherweise hängt es davon ab, dass ein anderes Modul geladen wird, um an dieser Stelle Informationen bereitzustellen.)
Verwendung auf eigenes Risiko .
quelle
CC-WIKI
es sich nicht um eine bekannte GPL-kompatible Lizenz für den Kernel handelt (sieheinclude/linux/license.h
).Das / proc-Dateisystem existiert sozusagen im Speicher. Weitere Informationen finden Sie unter http://www.kernel.org/doc/Documentation/filesystems/proc.txt . Links werden wahrscheinlich nicht funktionieren.
Möglicherweise können Sie LD_PRELOAD verwenden, um die Funktion open () abzufangen. Siehe /programming/426230/what-is-the-ld-preload-trick
Möglicherweise können Sie auch die Binärdatei bearbeiten, um den Dateinamen von / proc / mnt in / proc_mnt zu ändern und diesen mit / proc / mounts zu verknüpfen.
Eine andere Möglichkeit wäre, den Kernel neu zu kompilieren und / proc / mnt zu einem Alias für / proc / mounts zu machen.
quelle
Haben Sie einen harten Link ausprobiert?
quelle
link failed No such file or directory
./proc
Kernel-Code Dateien erstellen .