- 第一天内容复习
- OllyDbg的使用
- include
- 二、认识OD的界面
- 三、OD提供的相关功能
- 查看内存信息 - 支持两种编码
- 通过数据窗口查看函数地址和名称
- 指定PE文件,主要用于查看内存中的PE文件(没有对应磁盘文件的),用于DUMP
- ">通过在内存窗口双击PE文件头也可以解析一个PE文件
- ">查找数据: 查找名称(导入导出函数)
- 查找指令(序列): 通过 ctrl+s ctrl+f ctrl+L
- 二进制查找: 用于查找特征值
- 查找模块间的调用
- 查找用户定义的注释. 用户的注释不应该写在堆空间
- OD 提供的自动分析功能 - 汇编代码界面,如果没有自动识别,应该通过 ctrl+a 进行识别
- OD 提供的自动分析功能 -堆栈界面
- 对应用程序执行修改之后,可以通过菜单中的补丁功能保存修改
- 假定参数: 使用假定参数设置消息断点
- OD快捷键
- 分析程序的方法
笔记:逆向002.zip
练习:01 分析实例(课堂练习).zip
第一天内容复习
一、逆向的目的是什么
- 分析逻辑和数据结构(游戏分析)
- 为一个没有源码的程序添加功能或修复漏洞(打补丁)
二、逆向的岗位有哪一些
- 逆向破解程序。(没有岗位)
- 逆向分析恶意代码(安全研究员)
- 协议分析 ———— 密码学、移动端
- 二进制代码审计(漏洞利用\挖掘)
- 竞品分析 ———— 分析友商的程序,重现或者写出更厉害的功能
- 游戏安全、免杀、内核安全
三、安全工具的使用
- 十六进制编辑器: 010Editor WinHex UE
- PE 工具: LORDPE PEID EXEINFO DIE | Depends | Resource Hacker
- 抓包工具 : WarkShark(内核) WSExplorer(应用层 Socket API HOOK )
- 行为监控: 火绒剑(看进程行为,进程树, 文件操作,注册表操作,内核信息查看)
- ARK:用于检测拥有较高权限且能够隐藏自身的木马程序的工具
- PCHUNTER 火绒剑(常见的 ARK 工具都被加了特征码)
- 数据搜索工具: CE,通常用于分析游戏的数据和相关的操作
OllyDbg的使用
一、使用OD调试程序的几种方式
// main 函数的另外一种接收命令行参数的标准写法 int main(int argc, char* argv[]) { // 第一个参数就是当前应用程序的路径,其余的附加参数保存在后面 for (int i = 0; i < argc; ++i) printf(“[%d]: %s\n”, i, argv[i]);
return 0;
} ```
- 通过菜单 -> 文件 -> 附加,附加到一个正在运行的程序上。
- 将 OllyDbg 设置为当前操作系统的实时调试器(程序崩溃时的默认调试器)。
- 通过菜单 -> 设置 -> 实时调试器 -> 将OllyDbg 设置为实时调试器。
- 最常见的是使用发送到将应用程序交给 OD 进行调试。在文件管理器输入 shell:sendto
- DLL调试,OD 的根目录下存在一个叫做 LoadDll.exe 的文件,当将一个 DLL 拖拽到 OD 中时,就会使用这个exe加载 DLL 文件,并且自动断到 dllMain 处,再进行调试.[操作系统提供了一个类似的 exe 叫做 rundll32.exe 经常会被恶意程序进行白利用].
二、认识OD的界面
OD主界面中的工具栏
L:日志窗口,查看调试过程中的信息
E:模块窗口,保存了模块相关的信息
M:应用程序的内存布局窗口,通常查看区段信息
T:线程信息窗口,可以操作线程
W:窗口信息,可以获取窗口的标题等,方便进行逆向分析
H:内核句柄窗口,没什么使用意义
C:CPU窗口,显示指令和内存等,是调试的主窗口
/:补丁窗口,显示当前所有对应用的修改
K :调用堆栈,逆向的时候使用的非常多,用于进行栈回溯查找关键代码
B:断点窗口,可以查看和操作断点
R: 查找参考,查找当前的指令被哪一些地方调用了,在IDA中叫做(交叉引用)
… : RUN跟踪,脱壳的时候会用到,会模拟执行并记录每一行代码的执行结果
三、OD提供的相关功能
查看内存信息 - 支持两种编码
通过数据窗口查看函数地址和名称
指定PE文件,主要用于查看内存中的PE文件(没有对应磁盘文件的),用于DUMP
https://www.freebuf.com/articles/system/86596.html
通过在内存窗口双击PE文件头也可以解析一个PE文件
查找数据: 查找名称(导入导出函数)
查找指令(序列): 通过 ctrl+s ctrl+f ctrl+L
二进制查找: 用于查找特征值
查找模块间的调用
查找用户定义的注释. 用户的注释不应该写在堆空间
OD 提供的自动分析功能 - 汇编代码界面,如果没有自动识别,应该通过 ctrl+a 进行识别
OD 提供的自动分析功能 -堆栈界面
对应用程序执行修改之后,可以通过菜单中的补丁功能保存修改
假定参数: 使用假定参数设置消息断点
OD快捷键
1.调试操作
F2 设置软件断点
F3 打开调试
F4 运行到光标处
F7 单步步入
F8 单步步过
F9 运行
Ctrl+F2 重新开始调试
Ctrl+F7 自动步入、运行到OEP
Ctrl+F8 自动步过
Ctrl+F9 运行到返回
Ctrl+F11 跟踪步入
Ctrl+A 分析模块
Ctrl+* 修改 EIP 为选中地址
Ctrl+“+” 调整到前一个函数
Ctrl+ “-” 跳到下一个函数开始处
Alt+F2 关闭调试进程
Alt+F9 执行到用户代码
Shift+F2 设置条件断点
2.代码、数据操作
空格 修改汇编指令
回车 进入 CALL 或 jmp 或 jcc
+下一步
-返回上一步
: 标签
; 注释
3.功能窗口操作
Ctrl+B 查找二进制数据
Ctrl+E 修改内存
Ctrl+F 打开命令搜索窗口(单个命令)
Ctrl+G 打开跳转窗口
Ctrl+S 打开命令序列搜索窗口
Ctrl+T 设置条件
4.信息窗口操作
Ctrl+N 查看导入导出信息
Alt+C 显示 CPU 信息(反汇编、寄存器、 …)
Alt+B 显示断点列表
Alt+E 查看模块
Alt+K 打开调用堆栈窗口
Alt+L 打开记录窗口(日志)
Alt+M 显示内存布局
Alt+o 调试选项
Alt+X 关闭 OD
F10 打开当前窗口快捷键菜单
分析程序的方法
- 字符串搜索找到关键点
- 通过关键函数进行栈回溯找到关键点