从零开始学 IDA 逆向 (1-31 章)PDF 文档
本教程主要想法是使用 IDA 对我们之前的逆向工程教程内容进行更新,让读者学习如何在最新的 Windows 操作系统上开始使用 IDA。在这一系列教程当
中,作者使用的是 64 位 Windows 10,并且安装了 2016 年 10 月 29 日之前的全部更新和补丁。
Ollydbg 仅仅是运行于 Windows 用户模式下的一种 32 位调试器,而 IDA是运行于 32/64 位下,可用作反编译和调试的一个完整的逆向工具。使用 IDA尽管是个更加复杂的学习过程,但它提供了 Ollydbg 无法实现的静态逆向分析手段,并且使用户能够在 Windows、Linux 或 Macosx 本地环境以及以下环境中远程操作。
1 简介
1.1 为什么使用 IDA
1.2 IDA 安装
1.3 使用 IDA 加载程序
2 数值系统以及 IDA 搜索功能
2.1 数值系统
2.2 十六进制数
2.3 ASCII 码字符
2.4 IDA 中的搜索功能
3 CPU 寄存器以及数据传输指令
3.1 IDA 加载器
3.2 寄存器
3.3 MOV 指令
4 数据传输以及栈操作指令
4.1 XCHG 指令
4.2 Keypatch 插件
4.3 栈操作指令
5 LEA 指令
5.1 LEA 指令
5.2 函数参数及局部变量
5.3 LEA 的其他用法
6 整数运算与逻辑运算指令
6.1 整数运算指令
6.2 逻辑运算指令
7 流程控制指令
7.1 无条件跳转指令 JMP
7.2 有条件跳转指令
7.3 CALL 和 RET 指令
8 静态逆向分析入门
8.1 程序加载详解
8.2 查找关键字符串
8.3 查找关键函数
8.4 标记指令位置
8.5 修改指令
9 函数栈逆向分析
9.1 安装 Visual C++运行时
9.2 符号文件
9.3 定位 main 函数
9.4 函数的栈
9.5 Main 函数参数
9.6 局部变量
9.7 Atoi 函数
10 IDA 调试器
10.1 选择 IDA 调试器
10.2 调试器界面功能
10.3 条件跳转指令与标志寄存器
10.4 SET EIP
11 标志寄存器
11.1 CARRY FLAG
11.2 OVERFLOW FLAG
11.3 SIGNED FLAG
11.4 ZERO FLAG
11.5 条件跳转与标志位
12 程序注册逆向分析
12.1 通过命令行参数确定 main 函数
12.2 Main 函数栈分析
12.3 Main 函数局部变量
12.4 循环和代码块编组
12.5 注册算法分析
13 IDA Python 简介
13.1 安装 ipyida
13.2 Ipython 的使用
13.3 Idapython 的使用
14 程序脱壳简介
14.1 什么是加壳
14.2 加载加壳文件
14.3 文件和内存占用
14.4 STUB 和 OEP
14.5 寻找 OEP
14.6 API 函数
14.7 保存脱壳后的数据库
14.8 通过执行断点寻找 OEP
15 转存并重建导入函数表(IAT)
15.1 使用脚本转存为可执行文件
15.2 什么是 IAT
15.3 重建 IAT
16 Aspack 脱壳
16.1 PUSHAD 和 POPAD
16.2 使用 idapython 进行调试
16.3 使用 idapython 进行 DUMP
17 远程调试
17.1 环境配置
17.2 远程调试
17.3 寻找 OEP
17.4 转存及 IAT 重建
17.5 取消随机基址
18 编写注册机
18.1 Main 函数及其参数
18.2 Security cookie 等局部变量
18.3 用户名和密码处理
18.4 算法总结
18.5 使用 Python 编写注册机
19 GUI 程序逆向
19.1 关键判断定位
19.2 GUI 控件
19.3 用户名处理
19.4 密码处理
19.5 算法总结与注册机
20 漏洞与栈缓存区溢出
20.1 什么是软件漏洞
20.2 无效缓存区
20.3 包含缓存区的栈结构分析
20.4 栈缓存区溢出实例
21 栈缓存区漏洞分析及修复
21.1 Bug、漏洞和利用的区别
21.2 回车符和换行符
21.3 IDA 附加进程调试
21.4 字符数等于缓存区大小
21.5 字符数-1 漏洞及其修复
22 文件对比工具
22.1 BINDIFF
22.2 TURBODIFF
22.3 DIAPHORA
23 Dev-C++编译器及其函数参数传递
23.1 Main 函数及 CANARY 变量
23.2 显示 ESP 变化
23.3 漏洞分析
23.4 溢出测试及脚本
24 struct.pack 函数
24.1 变量分析
24.2 缓存区分析
24.3 struct.pack 函数
25 结构体
25.1 什么是结构体
25.2 创建 C++结构体
25.3 结构体示例代码
25.4 IDA 中的结构体
25.5 根据字段创建结构体
25.6 IDA3.exe 解决方案
25.7 IDA4.exe 解决方案
26 识别结构体
26.1 示例代码
26.2 根据参数传递判断结构体
26.3 创建结构体
26.4 在其它函数中识别字段
26.5 编写脚本
27 从零开始创建结构体并识别字段
27.1 printf 函数与 scanf 函数
27.2 从零开始创建结构体
27.3 识别结构体字段
27.4 修复函数
27.5 实现溢出脚本并调试
28 指针和引用
28.1 变量的值
28.2 变量地址
28.3 变量的指针
28.4 使用指针操作数据
28.5 使用指针传递参数
28.6 变量引用
29 程序漏洞实战
30 程序漏洞实战分析
30.1 文件比对
30.2 创建结构体和字段
30.3 malloc 和 calloc 函数
30.4 malloc 参数漏洞分析
30.5 stream_Read 参数漏洞分析
31 制作验证程序
31.1 缓存区局部读写
31.2 寻找缓存区后的独立变量
31.3 stream_Read 函数
31.4 制作 POC
下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/03/ycoWucsdEUxt0eX7.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 精益创业 PDF 文档
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论