Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
libdlmalloc — Инструментарий анализа кучи для dlmalloc | Kitploit
Инструменты/GitHubGitHub/nccgroup/libdlmalloc
Безопасность встроенных системКриминалистика памятиОбратная инженерияОтладчикиАнализ Бинарных Файлов
GitHubnccgroup/libdlmalloc

libdlmalloc

Инструментарий анализа кучи для dlmalloc

Репозиторий
327154 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

libdlmalloc

libdlmalloc — это Python-скрипт, предназначенный для использования с GDB, который можно применять для анализа аллокатора Doug Lea, также известного как dlmalloc. В настоящее время поддерживаются версии dlmalloc 2.8.x. Обратите внимание, что некоторые части можно использовать и независимо от GDB, например, для офлайн-анализа снимков памяти кучи.

libdlmalloc был вдохновлён другими GDB Python-скриптами для анализа куч, такими как libtalloc, unmask_jemalloc и libheap. Некоторый базовый функционал почти идентичен этим проектам.

Поддерживаемые версии

libdlmalloc в основном тестировался на 32-битных и 64-битных устройствах Cisco ASA, использующих dlmalloc 2.8.3. Он должен работать и с другими версиями 2.8.x, однако из-за значительных отличий не будет работать с более ранними релизами, такими как <= 2.7.x.

Если вы успешно протестировали libdlmalloc на какой-либо конкретной версии 2.8.x или конкретном устройстве, пожалуйста, сообщите авторам — мы обновим документацию.

Установка

Скрипту требуется относительно современная версия GDB с поддержкой python3. Мы в основном тестировали на python3, поэтому ожидаем, что на python2.7 он не будет работать.

Если вы хотите использовать команды gdb, можно:``` (gdb) source libdlmalloc_28x.py

Большая часть основной логики вынесена в класс `dl_helper`, который позволяет
напрямую импортировать libdlmalloc и получать доступ к некоторым важным структурам
вне сессии GDB. Это полезно, если вы хотите анализировать офлайн-снимки
chunk/heap.

# Использование

Большая часть функциональности смоделирована по образцу подхода в unmask_jemalloc и
libtalloc, где предоставляется отдельная команда GDB. Хотя мы также используем
довольно много переключателей.

Чтобы увидеть полный список поддерживаемых в настоящее время команд, можно использовать
команду `dlhelp`:

## dlhelp

Это основная команда для просмотра доступных команд. Каждая из команд
поддерживает опцию `-h`, которая позволяет получить более подробные
инструкции по использованию.```
(gdb) dlhelp
[libdlmalloc] dlmalloc commands for gdb
[libdlmalloc] dlchunk    : show one or more chunks metadata and contents
[libdlmalloc] dlmstate   : print mstate structure information. caches address after first use
[libdlmalloc] dlcallback : register a callback or query/modify callback status
[libdlmalloc] dlhelp     : this help message
[libdlmalloc] NOTE: Pass -h to any of these commands for more extensive usage. Eg: dlchunk -h

Анализ чанка

dlchunk может предоставить вам сводку по чанку или более подробную информацию о каждом поле. Вы также можете использовать его для вывода информации о нескольких чанках, поиска чанков и т. д. Использование dlchunk показано ниже:``` (gdb) dlchunk -h [libdlmalloc] usage: dlchunk [-v] [-f] [-x] [-c ] [libdlmalloc] a dlmalloc chunk header [libdlmalloc] -v use verbose output (multiples for more verbosity) [libdlmalloc] -f use explicitly, rather than be smart [libdlmalloc] -x hexdump the chunk contents [libdlmalloc] -m max bytes to dump with -x [libdlmalloc] -c number of chunks to print [libdlmalloc] -s search pattern when print chunks [libdlmalloc] --depth depth to search inside chunk [libdlmalloc] -d debug and force printing stuff [libdlmalloc] Flag legend: C=CINUSE, P=PINUSE

Базовый вывод выглядит так:```
(gdb) dlchunk 0xacff59d0
0xacff59d0 M sz:0x000f8 fl:CP

Как видите, вы хотите передать ему адрес самих метаданных dlmalloc. Чтобы получить более подробный вывод, можно использовать -v.``` (gdb) dlchunk -v 0xacff59d0 struct malloc_chunk @ 0xacff59d0 { prev_foot = 0x8140d4d0 size = 0xf8 (CINUSE|PINUSE)

Вы также можете перечислить несколько соседних фрагментов, используя параметр `-c <count>`.```
(gdb) dlchunk -c 2 0xacff59d0
0xacff59d0 M sz:0x000f8 fl:CP
0xacff5ac8 M sz:0x00270 fl:CP
(gdb) dlchunk -v -c 2 0xacff59d0
struct malloc_chunk @ 0xacff59d0 {
prev_foot   = 0x8140d4d0
size        = 0xf8 (CINUSE|PINUSE)
--
struct malloc_chunk @ 0xacff5ac8 {
prev_foot   = 0x8140d4d0
size        = 0x270 (CINUSE|PINUSE)

Вы можете сделать дамп hex-содержимого чанка с помощью -x и управлять количеством байт, которые хотите вывести, с помощью -m.``` (gdb) dlchunk -v -x -m 16 -c 2 0xacff59d0 struct malloc_chunk @ 0xacff59d0 { prev_foot = 0x8140d4d0 size = 0xf8 (CINUSE|PINUSE) 0x10 bytes of chunk data: 0xacff59d8: 0xa11c0123 0x000000cc 0x00000000 0x00000000

struct malloc_chunk @ 0xacff5ac8 { prev_foot = 0x8140d4d0 size = 0x270 (CINUSE|PINUSE) 0x10 bytes of chunk data: 0xacff5ad0: 0xa11c0123 0x00000244 0x00000000 0x00000000

Вы также можете искать внутри фрагментов. Давайте поищем 2 фрагмента на значение
`0x00000244`, которое, как мы видим выше, есть только во втором фрагменте.```
(gdb) dlchunk -s 0x00000244 -c 2 0xacff59d0
0xacff59d0 M sz:0x000f8 fl:CP [NO MATCH]
0xacff5ac8 M sz:0x00270 fl:CP [MATCH]

Все совпадения среди просмотренных фрагментов будут показаны. Давайте найдём 0xa11c01123, который, как мы видели выше, присутствует в обоих фрагментах:``` (gdb) dlchunk -s 0xa11c0123 -c 2 0xacff59d0 0xacff59d0 M sz:0x000f8 fl:CP [MATCH] 0xacff5ac8 M sz:0x00270 fl:CP [MATCH]

## dlmstate
Скачать инструмент