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 は、GDB とともに使用するために設計された Python スクリプトで、Doug Lea のアロケータ、別名 dlmalloc を解析するために使用できます。現在、dlmalloc 2.8.x バージョンをサポートしています。一部の機能は GDB とは独立して使用することもでき、例えば、スナップショットされたヒープメモリのオフライン解析を行うことができます。

libdlmalloc は、ヒープを解析するための他の gdb Python スクリプト、例えば libtalloc、unmask_jemalloc、libheap に触発されました。いくつかの基本機能はこれらのプロジェクトとほぼ同一です。

Supported versions

libdlmalloc は、主に dlmalloc 2.8.3 を使用する 32 ビットおよび 64 ビットの Cisco ASA デバイスでテストされています。他の 2.8.x バージョンでも動作するはずですが、大きな違いがあるため、<= 2.7.x などの以前のリリースでは動作しません。

特定の 2.8.x リリースや特定のデバイスで libdlmalloc のテストに成功した場合は、作者にお知らせください。ドキュメントを更新します。

Installation

このスクリプトは、python3 をサポートする比較的新しいバージョンの GDB のみを必要とします。主に python3 でテストしているため、現時点では python2.7 では動作しないでしょう。

gdb コマンドを使用したい場合は、以下を使用できます。``` (gdb) source libdlmalloc_28x.py

コアロジックの多くは `dl_helper` クラスに分割されており、GDB セッションの外部で
libdlmalloc を直接インポートして、特定の重要な構造体にアクセスできます。
これは、オフラインのチャンク/ヒープスナップショットを分析したい場合に
便利です。

# 使い方

ほとんどの機能は、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)

-x を使ってチャンクの16進数コンテンツをダンプでき、ダンプするバイト数は -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` を検索してみましょう。上記で見たように、これは2番目のチャンクにのみ存在します。```
(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
ツールをダウンロード