逆向工具
Reverse工具
一、反汇编
VS写的程序应该选择release版本,因为release是发布版本,更接近实际情况。
1 CE
本地运行的exe改内存
2 OD
动态反汇编调试
2.1 基本窗口
顶部栏:
- 运行:F9
- 重开:Ctrl + F2
- 单步步过:F8
- 单步步入:F7
- 运行到选定位置:F4
- 执行到返回:Ctrl + F9
- 执行到用户代码:Alt + F9
- 断点窗口:Alt + B
- 查看上一步:-
- 查看下一步:+
- 查看当前指令地址:*
反汇编窗口:
- 显示被调试程序的反汇编代码。
- 断点:F2 / 右键——Breakpoint——Toggle。
- 查看或修改具体汇编代码:双击Command中代码。
- Comments:注释,点击可以关闭。
- 添加注释:双击Comments中的指定行。
- 找函数或地址:Ctrl + G / 右键——goto——Expression(其他窗口同理)
- 重新分析代码:右键——Analysis——Analyse code
- 窗口属性:右键——Appearance
寄存器窗口:
- 显示当前所选线程的CPU寄存器信息。
信息窗口:
- 选中的语句的相关信息。
数据窗口:
内存或文件的内容。
Value:值,点击可以切换出ASCII码等窗口。(右键显示详细信息)
堆栈窗口:
显示当前线程的堆栈。
跳转到指定位置:回车。
2.2 调试流程
调试流程:
- 打开文件
- 在反汇编窗口用Ctrl + G定位函数名
- F2加断点
- F9执行
- 分析堆栈,回车跳转
2.3 插件
command:
bp [addr] / function
:给指定反汇编窗口地址或函数入口加断点。bc [addr] / function
:清除断点db / dw / dd / dc [addr]
:跳转到指定数据窗口的地址处,以 字节 /字 / 双字 / 字符方式显示数据。? reg
:查看指定寄存器值(除了? eax
也可以? ebp-8
)
2.4 技巧
Command中带有详细注释:
- VS在编译时会生成一个exe和pdb文件,pdb中会保留调试信息。所以若pdb文件存在,OD在读取exe时会同时读取pdb文件,将注释信息加载到OD中,也可以在OD的Options中设置。
[local.num]
:
- 表示是第几个局部变量,如
[local.1]
表示是函数中第一个局部变量,以此类推。(按栈的顺序,并非源代码的定义的顺序)
2.5 问题
VS生成的有的代码没有:
- 在VS中右键项目——属性——配置属性——C/C++——优化——禁用
- 不禁用的话有的代码在编译时会被优化。
窗口混乱:
- View——CPU——全屏
- 初始打开的窗口是CPU窗口。
3 IDA
静态反汇编分析
4 VS调试
加断点——运行——调试——窗口——反汇编
二、 其他工具
1 磁盘文件
2 游戏解包
游戏资源提取:official::Ninja Ripper Official Website
资源解密:noesis
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Magialeaf的小窝!