Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Linpmem — Linux-Kernel-Treiber zur Erfassung des physischen Speichers, der Lesezugriff auf jede physische Adresse ermöglicht, einschließlich reserviertem Speicher und Speicherlücken, mit CR3-Informationen und Diensten zur virtuell-physischen Adressübersetzung. | Kitploit
Tools/GitHubGitHub/velocidex/linpmem
SpeicherforensikForensikDigitale ForensikIncident Response
GitHubvelocidex/linpmem

Linpmem

Linux-Kernel-Treiber zur Erfassung des physischen Speichers, der Lesezugriff auf jede physische Adresse ermöglicht, einschließlich reserviertem Speicher und Speicherlücken, mit CR3-Informationen und Diensten zur virtuell-physischen Adressübersetzung.

Repository anzeigen
1051225vor 1 JahrVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Linpmem -- ein Tool zur Erfassung des physischen Arbeitsspeichers für Linux

alt text

Linpmem ist ein reines Linux-x64-Tool zum Lesen des physischen Arbeitsspeichers.

Wie sein Windows-Pendant Winpmem ist dies kein traditioneller Memory-Dumper. Linpmem bietet eine API zum Lesen von jeder physischen Adresse, einschließlich reserviertem Speicher und Speicherlöchern, kann aber auch für normales Speicher-Dumping verwendet werden. Darüber hinaus bietet der Treiber eine Vielzahl von Zugriffsmodi zum Lesen des physischen Arbeitsspeichers, wie Byte-, Word-, Dword-, Qword- und Puffer-Zugriffsmodus, wobei der Puffer-Zugriffsmodus in den meisten Standardfällen geeignet ist. Wenn das Lesen einen ausgerichteten Byte-/Word-/Dword-/Qword-Lesezugriff erfordert, führt Linpmem genau das aus.

Derzeit bietet Linpmem folgende Funktionen:

  1. Lesen von einer physischen Adresse (Zugriffsmodus Byte, Word, Dword, Qword oder Puffer)
  2. CR3-Informationsdienst (Zielprozess per PID angeben)
  3. Dienst zur Übersetzung virtueller in physische Adressen

Cache Control wird in Zukunft hinzugefügt, um die spezialisierten Lesezugriffsmodi zu unterstützen.

Übersichtstabelle

  • Erstellen des Kernel-Treibers
  • Laden des Treibers
  • Verwendung
    • Beispielcode
    • CLI-Tool
    • Bibliothek
    • Memdumping-Tool
  • Bibliothek
  • Getestete Linux-Distributionen
  • Umgang mit Secure Boot
  • Bekannte Probleme
  • In Arbeit
  • Zukünftige Arbeiten
  • Danksagungen

Erstellen des Kernel-Treibers

Zumindest vorerst müssen Sie den Linpmem-Treiber selbst kompilieren. Eine Methode zum Laden eines vorkompilierten Linpmem-Treibers auf anderen Linux-Systemen befindet sich derzeit in Arbeit, ist aber noch nicht abgeschlossen. Das Kompilieren des Linpmem-Treibers ist dennoch nicht schwierig, im Grunde genügt die Ausführung von 'make'.

Schritt 1 - Die richtigen Header besorgen

Sie benötigen make und einen C-Compiler (wir empfehlen gcc, aber clang sollte auch funktionieren).

Stellen Sie sicher, dass die linux-headers installiert sind (mit dem Paketmanager Ihrer Ziel-Linux-Distribution). Der genaue Paketname kann je nach Distribution variieren. Eine schnelle (distributionsunabhängige) Methode, um zu überprüfen, ob das Paket installiert ist:

ls -l /usr/lib/modules/`uname -r`/

Das war's, Sie können mit Schritt 2 fortfahren.

Fremdsystem: Derzeit müssen Sie, wenn Sie den Treiber für ein anderes System kompilieren möchten, z. B. weil Sie einen Speicherabbild erstellen möchten, aber auf dem Zielsystem nicht kompilieren können, das Header-Paket direkt aus den Paketquellen der Linux-Distribution dieses Systems herunterladen. Überprüfen Sie unbedingt, ob die Paketversion exakt mit der auf dem Fremdsystem laufenden Release- und Kernelversion übereinstimmt. Falls das andere System einen selbst kompilierten Kernel verwendet, müssen Sie eine Kopie des Build-Verzeichnisses dieses Kernels besorgen. Legen Sie dann den Pfad zu einem dieser Verzeichnisse in der Umgebungsvariablen KDIR fest.

export KDIR=path/to/extracted/header/package/or/kernel/root

Schritt 2 - make

Das Kompilieren des Treibers ist einfach, geben Sie einfach ein:

make

Dies sollte linpmem.ko im aktuellen Arbeitsverzeichnis erzeugen.

Sie sollten vorher precompiler.h überprüfen und wählen, ob Sie für Release oder Debug kompilieren möchten (z. B. mit Debug-Ausgabe). Es gibt derzeit nicht viele andere Precompiler-Einstellungen.

Laden des Treibers

Das Modul linpmem.ko kann mit insmod path-to-linpmem.ko geladen und mit rmmod path-to-linpmem.ko entladen werden. (Dadurch wird der Treiber nur für diese Betriebszeit geladen.) Wenn Sie für Debug kompiliert haben, werfen Sie auch einen Blick auf dmesg.

Nach dem Laden müssen Sie das Gerät erstellen, um mit dem Treiber zu kommunizieren:

mknod /dev/linpmem c 42 0

Wenn Sie nicht mit dem Treiber kommunizieren können, überprüfen Sie ggf. im dmesg-Protokoll, ob '42' tatsächlich die registrierte Major-Nummer ist:

[12827.900168] linpmem: registered chrdev with major 42

Normalerweise versucht der Kernel jedoch, diese Nummer tatsächlich zuzuweisen.

Sie können chown auf dem Gerät verwenden, um es Ihrem Benutzer zu geben, wenn Sie nicht ständig eine Root-Konsole offen halten möchten. (Oder verwenden Sie sie einfach weiter in einer Root-Konsole.)

  • Beobachten Sie die dmesg-Ausgabe. Bitte melden Sie Fehler, falls welche auftreten!
  • Warnung: Wenn in dmesg eine Fehlermeldung von Linpmem erscheint, die zum Neustart auffordert, führen Sie diesen besser sofort durch.
  • Warnung: Dies ist eine frühe Version.

Verwendung

Beispielcode

Es gibt einen Beispielcode, der detailliert zeigt und erklärt, wie mit dem Treiber interagiert wird. Die Referenz für die Benutzerraum-API finden Sie außerdem in ./userspace_interface/linpmem_shared.h.

  1. cd demo
  2. gcc -o test test.c
  3. (sudo) ./test // <= Sie benötigen sudo, wenn Sie kein chown auf dem Gerät verwendet haben.

Dieser Code ist wichtig, wenn Sie verstehen möchten, wie Sie direkt mit dem Treiber interagieren, anstatt eine Bibliothek zu verwenden. Er kann auch als kurzer Funktionstest verwendet werden.

Kommandozeilen-Schnittstelle (CLI-Tool)

Es gibt ein (optionales) grundlegendes Kommandozeilen-Tool für Linpmem, das pmem CLI-Tool. Es ist hier zu finden: https://github.com/vobst/linpmem-cli. Neben dem Quellcode gibt es auch ein vorkompiliertes CLI-Tool sowie die vorkompilierte statische Bibliothek und Header, die hier (signiert) zu finden sind. Hinweis: Dies ist eine vorläufige Version, überprüfen Sie unbedingt auf Updates, da bald viele Ergänzungen und Verbesserungen folgen werden.

Das pmem CLI-Tool kann zum Testen der verschiedenen Funktionen von Linpmem auf eine (relativ) sichere und bequeme Weise verwendet werden. Linpmem kann auch mit diesem Tool anstatt mit insmod/rmmod geladen werden, mit einigen zusätzlichen Optionen in Zukunft. Dies hat auch den Vorteil, dass pmem automatisch das richtige Gerät für die sofortige Nutzung erstellt. Es ist extrem portabel und läuft auf jedem Linux-System (und wurde tatsächlich sogar auf einem Linux 2.6 getestet).

$ ./pmem -h
Command-line client for the linpmem driver

Usage: pmem [OPTIONS] [COMMAND]

Commands:
  insmod  Load the linpmem driver
  help    Print this message or the help of the given subcommand(s)

Options:
  -a, --address <ADDRESS>            Address for physical read operations
  -v, --virt-address <VIRT_ADDRESS>  Translate address in target process' address space (default: current process)
  -s, --size <SIZE>                  Size of buffer read operations
  -m, --mode <MODE>                  Access mode for read operations [possible values: byte, word, dword, qword, buffer]
  -p, --pid <PID>                    Target process for cr3 info and virtual-to-physical translations
      --cr3                          Query cr3 value of target process (default: current process)
      --verbose                      Display debug output
  -h, --help                         Print help (see more with '--help')
  -V, --version                      Print version
Tool herunterladen