GDB在内存中找到值

use*_*230 5 memory int search gdb find

我在gdb中使用find命令时遇到问题.我想要做的是,在进程的内存中找到特定值,例如(964).我已经成功了,但我的解决方案需要很长时间!

我做了什么:

cat /proc/16617/maps
Run Code Online (Sandbox Code Playgroud)

比得到libc_malloc部分,我知道值是在那些.

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]
Run Code Online (Sandbox Code Playgroud)

我可以使用examine命令来调查每个值.这个工作正在进行,但需要花费很多时间.我想gdb中的find命令可以更快地执行此操作.

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
Run Code Online (Sandbox Code Playgroud)

由于几次运行,地址不匹配,但它正在工作:)

x/dw 0x78B0E19c    --> Result 964
Run Code Online (Sandbox Code Playgroud)

我的find命令是这样的:

find 0x419a1000, 0x7e5b6000, 964
Run Code Online (Sandbox Code Playgroud)

但是我得到了这些结果

0x419a3058
0x419a30c0
0x419a348c
0x419a3e7d
0x419a3fec
5 patterns found.
Run Code Online (Sandbox Code Playgroud)

这不是真的.它可能只在5个地址内.它应该更多.它似乎也没有正确搜索.因为它只在0x419a3xxx范围内.

我在arm架构中搜索int值.但这一点无关紧要.我做错了什么?能否请您提供一些示例来查找进程地址空间中的所有int值(964)?这很快?:)

谢谢!