1.内容概要:
- s 命令搜索内存
在进程的虚拟内存空间中找到想要的数据 - 符号搜索
不记得符号全名的情况下使用符号搜索找到符号 - 搜索符号引用
搜索符号引用的意思是:找到使用符号(函数或者地址,变量)的地方
1.1:s 命令搜索内存
内存搜索是调试器中的常见操作,在windbg中搜索内存使用的是s命令,下面讲解s命令的用法:
-
在指定范围内搜索ASCII字符或者UNICODE字符
s - [flags]sa | su 范围sa 表示搜索ASCII字符,su表示搜索UNICODE字符 在指定范围搜索特定的数据类型 s -[flags]type 范围 要搜索的数据 type表示搜索的类型,后面跟上范围和要搜索的数据
flags的含义如下:
type的含义:
1.2 符号搜索
此外,在逆向分析的时候我们可能会忘记了搜索目标的符号名称,可以使用x命令加上通配符来搜索匹配,寻找我们感兴趣的函数。
x 符号
示例:x *er*!Message * (x 模块 函数)
1.3 搜索符号引用
在分析程序的时候,我们还可能需要看程序中哪里调用了我们感兴趣的函数,哪里访问了我们感兴趣的变量。
这种情况下我们可以通过搜索符号引用找到这些位置:
# 符号 范围
同样的,可以使用模糊查询,使用*作为通配符
- 2:使用示例:
先在VS stdio中编辑并编译源程序为exe文件供测试使用:
使用Windbg打开编译好的exe文件,
使用搜索命令:
搜索unicode 码:
# MessageBoxA 起始地址 l 字节大小(在此范围中查找引用此函数的地方)
此外,输入 r 查看寄存器的值。