linux 无法使用gdb搜索堆

5lhxktic  于 2023-01-08  发布在  Linux
关注(0)|答案(2)|浏览(124)

我尝试在堆内存中搜索ascii,使用

cat /proc/PID/maps | grep heap

然后我想用GDB搜索ascii

find 0x1577000,0x2a01000,"/bin/sh"

但我得到了错误:

gdbserver: Unable to access target memory at 0x1579e9b, halting search.

我能做些什么?

cotxawn7

cotxawn71#

但我得到了错误:
1.您 * 可能 * 在不同的进程上使用了grep(gdb) find。堆位置由ASLR随机化(尽管GDB禁用ASLR)
1.在GLIBC中,malloc倾向于使用mmap ed arenas,在/proc/$pid/maps中,它们 * not * 标记为heap,所以无论如何,您很有可能找不到要查找的字符串。

im9ewurl

im9ewurl2#

查找0x 1577000、0x 2a 01000 "、/bin/sh”
GDB的命令find将搜索一个“包含范围”,但是如果0x 2a 01000是/proc/pid/maps中一个内存区域的上限,这意味着该区域向上到但不包括那个位置,所以从那个位置减去1,然后给予GDB这个命令

find 0x1577000,0x2a00fff,"/bin/sh"

相关问题