逆向入门
逆向学习笔记
基本内容
1. 前置知识
- C、 C++语言
- x86汇编语言
- 少量的组成原理、编译原理等方面知识
- 少量Python类脚本语言编程
- 部分密码算法知识
- 熟悉Base64编码
- 熟悉MD5,SHA1等hash算法
- 熟悉DES、AES、RC4、TEA等分组加密算法
- 熟悉RSA等非对称加密算法
- 了解数字签名、SSL/TLS等密码算法的相关应用
1.1 学习内容
- 《逆向工程核心原理》、《加密与解密(第四版)》这两本书建议完整学习。
- 学习github上的资源汇总:https://github.com/alphaSeclab/awesome-reverse-engineering
1.2 学习目标
- 用C语言编写一个程序,使用openssl加密库,来对指定目录下的所有文件进行加密。
- 《逆向工程核心原理》、《加密与解密(第四版)》相关例程都要掌握。
2. 汇编与反汇编知识
2.1 学习内容
- 熟悉常见x86汇编指令
- 熟悉函数调用约定
- 熟悉函数调用栈
- IDA工具的使用
- IDA插件编写方法
2.2 学习目标
- 编程实现5个C、C++程序,包括文件操作、socket操作、进程操作、注册表操作,用IDA对程序进行反汇编处理,从反汇编代码中找出自己写的函数,理解反汇编代码指令功能(对照着c源码)。
- 撰写一篇关于函数调用约定和函数调用栈的笔记,能够对照反汇编实例,理解函数调用过程。
3. 可执行文件结构
3.1 PE文件结构
学习内容
- 参考《逆向工程核心原理》关于PE文件的内容
- 详细理解PE文件格式
- 学习LordPE、PEStudio等PE解析器的使用方法
- 学习ELF文件格式。ELE是Linux下的可执行文件格式,与PE类似,可参考https://blog.csdn.net/mergerly/article/details/94585901
学习目标
- 编写一个PE文件解析器,能够解析并输出PE文件主要内容。
- 编写一个ELF文件解析器,能够解析并输出ELF文件主要内容。
3.2 PE文件感染
学习内容
- PE感染示例代码
学习目标
- 编写一个PE文件感染代码,通过添加节的方式,实现PE文件的感染,执行PE文件的时候,能够弹出一个计算器。
4. 调试与反调试
4.1 动态调试
学习内容
- 学习OllyDBG调试工具的使用方法,自行百度资料
- 学习WinDBG调试工具的使用方法,自行百度资料
学习目标
- 会使用OllyDBG对程序进行逆向调试,实现程序注册码破解
- 用OllyDBG对给定的三个PE文件进行动态调试,撰写调试分析报告
4.2 反调试方法
学习内容
- 反调试学习:参考 https://blog.csdn.net/xiao_yi_xiao/article/details/121762629
- 反调试相关Windows API
- IsDebuggerPresent
- CheckRemoteDebuggerPresent
- NtQueryInformationProcess
- GetLastError
- ZwSetInformationThread
学习目标
- 编写一个程序,使其具备反调试功能,并使用调试器检验反调试效果
5.加壳与脱壳
学习内容
- 加壳的原理与方法
- 脱壳的原理与方法
- 了解虚拟机壳的原理
- 相关内容可参考《加密与解密》
学习目标
- 编写一个简单的PE文件加壳工具
- 对5个加壳程序进行脱壳处理
6. 代码混淆与去混淆
学习内容
- 常用代码混淆方法:指令替换、垃圾指令、控制流扁平化等
- 花指令总结 https://www.anquanke.com/post/id/236490
- OLLVM学习(实验室有系统的学习资料)
学习目标
- 编写一个自动化的代码混淆工具
- 对三个混淆程序进行反混淆处理
其他参考资料
其他语言逆向
Java
C#
Go
- Go二进制文件逆向分析从基础到进阶——综述 - 安全客,安全资讯平台 (anquanke.com)
Python
Lua
Android
swf
其他资源
在线资源
- 看雪论坛
- 吾爱破解
CTF比赛
- 看雪CTF,每季度一次
- CTF等
- 其他,几乎每周都有CTF比赛
常用工具
反汇编与反编译
- IDA Pro(重点)
- Ghidra
- Jeb(安卓)
调试工具
工具 | 操作系统 | 处理器 | 内核 | 备注 |
---|---|---|---|---|
OD | Windows | 32 | 不支持 | |
x64Dbg | Windows | 32、64 | 不支持 | |
Windbg | Windows | 32、64 | 支持 | |
GDB | Linux | 32、64 | 支持 |
文件结构查看工具
文件查看工具
- peview
- peid
- PEStudy
- HackResource(PE文件资源)
- readelf
二进制编辑工具
- 010editor
IDA Pro
常用操作
IDAPython 脚本
- IDAPython Book https://bbs.pediy.com/thread-225920.htm
- https://www.hex-rays.com/products/ida/support/idapython_docs/
插件
OD
常用操作
WinDbg
超级推荐WinDbg 10的TTD模式
配置
命令
GDB
命令
插件
- peda
- gef