作者:empty 页数:494 出版社:empty |
前言《从零开始学IDA逆向》是本人在2020年春节假期间翻译的一部IDA款件其余章节偏向于软件漏洞利用开发,译者也没有完成全部翻译,不过并不影翻译教材的目的一方面是对网络上现有中文逆向工程入门资料进行补充和使用的教程, 同时也可以作为逆向工程的入门教程使用。教程的作者为RicardoN ar vaja, 读者可以到以下页面下载教程原文以及附件。http://ricardonarvaja.info/WEB/IDA%20DESDE%20CERO/该教程共有67个章节, 本篇收录了前31章, 主要介绍了IDA软件的基本操作、静态分析、动态调试、脱壳破解等内容, 对于逆向工程入门和掌握IDA软件的使用操作具有较大的参考价值。响本篇内容的学习。
本教程主要想法是使用IDA对我们之前的逆向工程教程内容进行更新, 让读者学习如何在最新的Windows操作系统上开始使用IDA。在这一系列教程当中, 作者使用的是64位Windows 10, 并且安装了2016年10月29日之前的全部更新和补丁。1.1为什么使用IDAOlly dbg仅仅是运行于Windows用户模式下的一种32位调试器, 而IDA是运行于32/64位下, 可用作反编译和调试的一个完整的逆向工具。使用IDA尽管是个更加复杂的学习过程, 但它提供了Olly dbg无法实现的静态逆向分析手段, 并且使用户能够在Windows、Linux或Macosx本地环境以及以下环境中远程操作。
1简介.
1.1为什么使用IDA.
1.2IDA安装.
1.3使用IDA加载程序.
2数值系统以及IDA搜索功能.
2.1数值系统.
2.2十六进制数.
2.3ASCII码宇符.
2.4IDA中的搜索功能.
3CPU寄存器以及数据传输指令
3.1IDA加载器.
3.2寄存器.
3.3MOV指令.
4数据传输以及栈操作指令.
4.1XCHG指令.
4.2Key patch插件.
4.3栈操作指令.
5LEA指令.
5.1LEA指令.
5.2函数参数及局部变量.
5.3LEA的其他用法.
6整数运算与逻辑运算指令.
6.1整数运算指令.
6.2逻辑运算指令.
7流程控制指令.
7.1无条件跳转指令JMP.
7.2有条件跳转指令.
7.3C ALL和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.7Atoi函数.
10IDA调试器.
10.1选择IDA调试器
10.2调试器界面功能.
10.3条件跳转指令与标志寄存器
10.4SETEIP.
11标志寄存器.
11.1 CARRY FLAG.
11.2 OVERFLOW FLAG.
11.3 SIGNED FLAG.
11.4ZEROFLAG.
11.5条件跳转与标志位.
12程序注册逆向分析.
12.1通过命令行参数确定main函数
12.2 Main函数栈分析.
12.3 Main函数局部变量.
12.4循环和代码块编组.
12.5注册算法分析.
13IDA Python简介.
13.1安装ipy ida.
13.2I python的使用.
13.3Ida python的使用,
14程序脱壳简介.
14.1什么是加壳.
14.2加载加壳文件.
14.3文件和内存占用.
14.4STUB和OEP.
14.5寻找OEP.
14.6API函数, .
14.7保存脱壳后的数据库.
14.8通过执行断点寻找OEP.
15转存并重建导入函数表(I AT)
15.1使用脚本转存为可执行文件.
15.2什么是I AT.
15.3重建I AT.
16Aspack脱壳.
16.1PUSHAD和POP AD.
16.2使用ida python进行调试.
16.3使用ida python进行DUMP.
17远程调试.
17.1环境配置.
17.2远程调试.
17.3寻找OEP.
17.4转存及I AT重建.
17.5取消随机基址.
18编写注册机.
18.1 Main函数及其参数.
18.2 Security cookie等局部变量.
18.3用户名和密码处理.
18.4算法总结.
18.5使用Python编写注册机.
19GUI程序逆向.
19.1关键判断定位
19.2GUI控件.
19.3用户名处理
19.4密码处理.
19.5算法总结与注册机.
20漏洞与栈缓存区溢出.
20.1什么是软件漏洞
20.2无效缓存区.
20.3包含缓存区的栈结构分析
20.4栈缓存区溢出实例.
21栈缓存区漏洞分析及修复.
21.1Bug、漏洞和利用的区别.
21.2回车符和换行符.
21.3IDA附加进程调试.
21.4字符数等于缓存区大小.
21.5字符数-1漏洞及其修复.
22文件对比工具.
22.1BINDIFF.
22.2TURBODIFF.
22.3DIAPHORA.
23Dev-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.4IDA中的结构体.
25.5根据字段创建结构体.
25.6IDA 3.exe解决方案.
25.7IDA 4.exe解决方案.
26识别结构体.
26.1示例代码.
26.2根据参数传递判断结构体.
26.3创建结构体.
26.4在其它函数中识别字段.
26.5编写脚本.
27从零开始创建结构体并识别字段,.
27.1 printf函数与scanf函数.
27.2从零开始创建结构体.
27.3识别结构体字段.
27.4修复函数.
27