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.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
shadow — jemalloc-Heap-Exploitation-Framework | Kitploit
Tools/GitHubGitHub/census/shadow
SpeicherforensikExploitationReverse EngineeringDebuggerBinary-Exploitation
GitHubcensus/shadow

shadow

jemalloc-Heap-Exploitation-Framework

Repository anzeigen
4697125vor 4 JahrenVon 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

shadow :: De Mysteriis Dom jemalloc

shadow ist ein jemalloc-Heap-Exploitation-Framework. Es wurde entwickelt, um unabhängig von der Zielanwendung zu sein, die jemalloc als Heap-Allokator verwendet (sei es Android's libc, Firefox, FreeBSD's libc, standalone jemalloc oder was auch immer). Die aktuelle Version (2.0) wurde umfassend mit folgenden Zielen getestet:

  • Android 6-9 libc (ARM32 und ARM64)
  • Firefox (x86 und x86-64) unter Windows und Linux

Neben dem Quellcode des Tools enthält dieses Repository auch Dokumentation zur Einrichtung einer Android-Benutzerland-Debugging-Umgebung zur Nutzung von shadow, einen schnellen Überblick über die jemalloc-Strukturen von Android mit shadow und einige Hinweise dazu, wie sich doppelte, unausgerichtete und beliebige free()-Fehler in Android's jemalloc verhalten.

Usage

Wenn Sie zum ersten Mal einen jemalloc-spezifischen Befehl ausführen, parst shadow alle ihm bekannten jemalloc-Metadaten und speichert sie in einer Python-Pickle-Datei. Nachfolgende Befehle verwenden diese Pickle-Datei, anstatt die Metadaten erneut aus dem Speicher zu parsen, um schneller zu sein.

Wenn Sie wissen, dass sich der Zustand der jemalloc-Metadaten geändert hat (z. B. wenn Sie einige Allokationen vorgenommen oder eine Garbage Collection ausgelöst haben), verwenden Sie den Befehl jeparse, um die Metadaten erneut zu parsen und die Pickle-Datei neu zu erstellen.

Android Installation

Der erste Schritt ist die Installation von pyrsistence auf Ihrem Host-Rechner.

Führen Sie auf einem gerooteten Gerät Folgendes aus:

host$ adb shell
phone$ su root
phone# ps -e

Wählen Sie aus der Ausgabe von ps einen Prozess aus, z. B. com.google.process.gapps:

...
u0_a19    4679  3214  1668980 69216 SyS_epoll_ 7fa5f41430 S com.google.process.gapps
...
phone$ cd /data/local/tmp
phone$ ./gdbserver64 :5039 --attach 4679

Sie finden GDB-Server-Binärdateien für ARM32 und ARM64 im Verzeichnis "bin". Oder, wenn Sie uns nicht vertrauen, tun Sie:

host$ git clone http://android.googlesource.com/toolchain/gdb
host$ cd ./gdb/gdb-7.11
host$ mkdir build64; cd build64
host$ ../configure --program-prefix=aarch64-eabi-linux- --target=aarch64-eabi-linux --disable-werror
host$ make
host$ sudo make install

Dann auf dem Host-Rechner:

host$ adb forward tcp:5039 tcp:5039
host$ aarch64-eabi-linux-gdb
(gdb) target remote :5039
(gdb) source /dir/with/shadow/gdb_driver.py
(gdb) jeparse -c /dir/with/shadow/cfg/android7_64.cfg
(gdb) jeruns -c

Manchmal hört der GDB-Server auf zu lauschen, wenn Sie zu lange brauchen, um den Befehl target remote :5039 auszugeben. Wenn Sie also seltsame Fehler beim Ausführen des Befehls jeparse sehen, beginnen Sie einfach von vorne.

Windows/Firefox Installation

shadow für Windows/Firefox wurde mit Folgendem getestet:

  • Windows 8.1 und 10 x86-64
  • Windows 7 SP1 x86 und x86-64
  • Verschiedene Versionen von WinDBG
  • pykd version 0.3.2.8
  • Viele verschiedene Firefox-Versionen (sowohl x86-64 als auch x86), einschließlich der neuesten stabilen Version (55.0)

Hinweis: Wenn Sie mit einer Firefox-Version älter als 36.0 arbeiten, verwenden Sie den mozjs-Zweig!

Zunächst müssen Sie WinDBG mit Mozillas Symbolserver einrichten. Sie müssen auch pykd installieren. Kopieren Sie dann das von GitHub geklonte shadow-Verzeichnis in einen Pfad (z. B. C:\tmp\).

Sie finden auch ein Beispiel-WinDBG-Initialisierungsskript in der Datei "windbg-init.cmd". Platzieren Sie es unter C:\tmp\ und starten Sie WinDBG mit windbg.exe -c "$$>< C:\tmp\windbg-init.cmd".

Geben Sie schließlich in WinDBG die folgenden Befehle ein:

!load pykd.pyd
!py c:\\tmp\\shadow\\pykd_driver help

[shadow] De Mysteriis Dom jemalloc
[shadow] shadow v2.0
[shadow] Firefox v56.0a1 (x86-64)

[shadow] jemalloc-specific commands:
[shadow]   jechunks                : dump info on all available chunks
[shadow]   jearenas                : dump info on jemalloc arenas
[shadow]   jerun [-m] <address>    : dump info on a single run
[shadow]                                 -m : map content preview to metadata
[shadow]   jeruns [-cs]            : dump info on jemalloc runs
[shadow]                                 -c : current runs only
[shadow]                    -s <size class> : runs for the given size class only
[shadow]   jebins                  : dump info on jemalloc bins
[shadow]   jebininfo               : dump info on bin sizes 
[shadow]   jesize2bin              : convert size to bin index
[shadow]   jeregions <size class>  : dump all runs that host the regions of
[shadow]                             the given size class
[shadow]   jesearch [-cs] <hex>    : search the heap for the given hex dword
[shadow]                                 -c : current runs only
[shadow]                    -s <size class> : regions of the given size only
[shadow]   jeinfo <address>        : display all available details for an address
[shadow]   jedump [path]           : store the heap snapshot to the current
[shadow]                             working directory or to the specified path
[shadow]   jestore [path]          : jedump alias
[shadow]   jetcaches               : dump info on all tcaches
[shadow]   jetcache [-bs] <tid>    : dump info on single tcache
[shadow]                    -b <bin index>  : info for the given bin index only
[shadow]                    -s <size class> : info for the given size class only
[shadow]   jeparse [-crv]           : parse jemalloc structures from memory
[shadow]                   -c <config file> : jemalloc target config file
[shadow]                                 -r : read content preview
[shadow]                                 -v : produce debug.log
[shadow] Firefox-specific (pykd only) commands:
[shadow]   nursery                 : display info on the SpiderMonkey GC nursery
[shadow]   symbol [-vjdx] <size>   : display all Firefox symbols of the given size
[shadow]                                 -v : only class symbols with vtable
[shadow]                                 -j : only symbols from SpiderMonkey
[shadow]                                 -d : only DOM symbols
[shadow]                                 -x : only non-SpiderMonkey symbols
[shadow]   pa <address> [<length>] : modify the ArrayObject's length (default new length 0x666)
[shadow] Android-specific commands:
[shadow]   jefreecheck [-bm]                : display addresses that can be passed to free()
[shadow]                     -b <bin index> : display addresses that will be freed to
[shadow]                                      the tcache bin of <bin index>
[shadow]                          -m <name> : only search this specific module
[shadow] Generic commands:
[shadow]   jeversion               : output version number
[shadow]   jehelp                  : this help message

Wenn Sie die obige Hilfemeldung nicht sehen, haben Sie etwas falsch gemacht ;)

Support for symbols

Hinweis: Diese Funktion ist derzeit nur für Firefox/Windows!

Der Befehl symbol ermöglicht es Ihnen, nach SpiderMonkey- und DOM-Klassen (und -Strukturen) bestimmter Größen zu suchen. Dies ist nützlich, wenn Sie Use-After-Free-Fehler ausnutzen möchten oder wenn Sie interessante Opferobjekte zum Überschreiben/Beschädigen positionieren möchten.

Tool herunterladen