Skip to content
KitploitKITPLOIT
도구블로그
Log in
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
libdlmalloc — dlmalloc용 힙 분석 도구 | Kitploit
도구/GitHubGitHub/nccgroup/libdlmalloc
Embedded Systems SecurityMemory ForensicsReverse EngineeringDebuggersBinary Analysis
GitHubnccgroup/libdlmalloc

libdlmalloc

dlmalloc용 힙 분석 도구

저장소 보기
327154년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

libdlmalloc

libdlmalloc은 GDB와 함께 사용하도록 설계된 python 스크립트로, Doug Lea의 할당자(일명 dlmalloc)를 분석하는 데 사용할 수 있습니다. 현재 dlmalloc 2.8.x 버전을 지원합니다. 일부 부분은 GDB와 독립적으로 사용할 수도 있습니다. 예를 들어 스냅샷된 힙 메모리의 오프라인 분석을 수행하는 데 사용할 수 있습니다.

libdlmalloc은 libtalloc, unmask_jemalloc, libheap 같은 힙 분석용 gdb python 스크립트에서 영감을 받았습니다. 일부 기본 기능은 이러한 프로젝트와 거의 동일합니다.

지원 버전

libdlmalloc은 주로 dlmalloc 2.8.3을 사용하는 32비트 및 64비트 Cisco ASA 장치에서 테스트되었습니다. 다른 2.8.x 버전에서도 작동해야 하지만, 상당한 차이로 인해 <= 2.7.x 같은 이전 릴리스에서는 작동하지 않습니다.

특정 2.8.x 릴리스나 특정 장치에서 libdlmalloc을 성공적으로 테스트한 경우 저자들에게 알려주시면 문서를 업데이트하겠습니다.

설치

이 스크립트는 python3를 지원하는 비교적 최신 버전의 GDB만 요구합니다. 우리는 주로 python3에서 테스트했으므로 현재 python2.7에서는 작동하지 않을 것으로 예상합니다.

gdb 명령을 사용하려면 다음을 사용할 수 있습니다:``` (gdb) source libdlmalloc_28x.py

핵심 로직의 상당 부분은 `dl_helper` 클래스로 분리되어 있으며, 이를 통해
GDB 세션 외부에서 libdlmalloc을 직접 가져오고 특정 중요한 구조체에
액세스할 수 있습니다. 이는 오프라인 청크/힙 스냅샷을 분석하려는 경우
유용합니다.

# 사용법

대부분의 기능은 별도의 GDB 명령이 제공되는 unmask_jemalloc 및
libtalloc의 접근 방식을 모델로 합니다. 다만 상당수의 스위치도
사용합니다.

현재 지원되는 명령의 전체 목록을 보려면 `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를 사용하여 청크의 hex 내용을 덤프할 수 있으며, -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

청크 내부에서도 검색할 수 있습니다. 다음 값을 찾기 위해 두 개의 청크를 검색해 보겠습니다.
`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
도구 다운로드