我在gdb中使用find命令时遇到问题。我想要做的是,找到一个特定的值,例如(964)在一个进程的记忆中。我已经成功了,但我的解决方案需要很长时间!
我做了什么:
p
比获取libc_malloc部分,我知道值在那些内部。
cat /proc/16617/maps
我可以使用examine命令来调查每个值。这个工作正在进行,但需要花费很多时间。我想gdb中的find命令可以更快地执行此操作。
7e43c000-7e451000 rw-p 00000000 00:00 0 [anon:libc_malloc]
7e452000-7e45b000 rw-p 00000000 00:00 0 [anon:libc_malloc]
7e470000-7e47c000 rw-p 00000000 00:00 0 [anon:libc_malloc]
7e47d000-7e490000 rw-p 00000000 00:00 0 [anon:libc_malloc]
7e4cc000-7e4dc000 rw-p 00000000 00:00 0 [anon:libc_malloc]
E.g地址由于多次运行而不匹配,但它正在运行:)
0x78b0e070: 0 829055599 57 59
0x78b0e080: 2 2024857820 2024857860 2024857900
0x78b0e090: 1970810756 4587520 71 0
0x78b0e0a0: 0 2024857756 2024857756 0
0x78b0e0b0: 0 27 1970675312 1
0x78b0e0c0: 1 2024857728 0 43
0x78b0e0d0: 23 23 0 1936029041
我的查找命令是这样的:
x/dw 0x78B0E19c --> Result 964
但是我得到了这些
find 0x419a1000, 0x7e5b6000, 964
这不是真的。它可能只在5个地址内。它应该更多。它似乎也没有正确搜索。因为它只在0x419a3xxx范围内。
我在arm架构中搜索int值。但这一点无关紧要。我做错了什么?能否请您提供一些示例来查找进程地址空间中的所有int值(964)?这很快? :)
谢谢!