这门课在补什么?

逆向工程里,IDA Pro 是绕不开的“瑞士军刀”,但很多学习者卡在两个极端:要么只会基本跳转,遇到混淆和加壳就束手无策;要么理论背得熟,真打开一个二进制文件时,面对海量的函数和混乱的控制流图(CFG)无从下手。这门课的核心价值,在于把 IDA 的操作从“点状记忆”串联成“系统化工作流”。它不讲泛泛的界面介绍,而是围绕不同架构(如 x86、ARM 等)的实际实例,拆解 IDA 在分析过程中的关键决策点:如何快速定位入口、如何识别函数边界、如何处理伪代码与汇编的对应关系,以及如何利用 IDA 的插件和脚本能力提升分析效率。

对于备考 CTF 逆向题或准备安全岗位面试的学习者,这里解决的是“工具熟练度”与“分析思路”之间的脱节问题。你不会再是因为“不知道这个快捷键”而卡壳,而是能基于对二进制结构的理解,主动利用 IDA 的功能去验证假设、剥洋葱式地逼近核心逻辑。

适合谁?先看哪几块?

建议具备基础的汇编语言知识(至少读懂 x86/ARM 的基础指令),并了解程序在内存中的基本布局(栈、堆、数据段)。如果你完全没接触过逆向,可能需要先补一下《汇编语言》或《程序员的自我修养》这类前置内容,否则直接看 IDA 操作会像看天书。

学习路径上,不要按顺序从头啃到尾。建议先看“基础操作与界面导航”部分,确保你能熟练使用快捷键切换视图、重命名变量、添加注释。接着重点攻克“伪代码分析”章节,这是 IDA 最强大的功能,学会如何修正错误的类型信息、如何让伪代码可读。最后,针对资料包中提供的多架构实例,分别练习在不同平台下识别常见反调试手段和加壳特征。这部分是检验你是否真掌握的关键。

学完能做什么?资料怎么用?

学完后,你应该能独立打开一个陌生的二进制文件,完成从入口点到核心算法的完整分析流程:快速梳理函数调用关系,解读关键逻辑,识别常见的安全机制(如校验、混淆),并能够编写简单的 IDAPython 脚本自动化重复性任务。具体到问题,你能回答“为什么这个函数被识别错了”、“如何通过交叉引用找到隐藏的代码路径”、“遇到 SP 偏移不一致时如何手动修复”等实战难题。

资料包里的实例是练习的核心,别只看不练。每个实例都对应一个真实场景,建议你先在本地用 IDA 打开,尝试自己分析一遍,再看课程讲解如何切入。重点关注课程中展示的“错误示范”和“修正过程”,这些比最终结果更有价值。如果遇到 IDA 版本差异导致操作不符,优先理解其背后的分析逻辑,而非死记快捷键。

课程介绍

IDA 特训营;基于多种架构实例讲解,系统化学习使用 IDA 进行逆向工程,快速掌握 IDA 重要操作

课程目录

KANXUE.png   2024-4-8 20:34 上传 课程介绍: IDA 特训营;基于多种架构实例讲解,系统化学习使用 IDA 进行逆向工程,快速掌握 IDA 重要操作 课程目录: 第一章 静态分析基础1 1.1 IDA的打开方式 1.2 IDA插件安装方式 1.3 IDA反汇编窗口 1.4 IDA伪代码窗口 1.5 IDA 字符串表 (shift + F12) 1.6 IDA 数据窗口 1.7 IDA 交叉引用 1.8 IDA 代码定位 1.9 IDA 重命名 第一章视频讲解(53:56) 第二章 静态分析基础2 2.1 IDA中不同类型的整数 2.2 多格式提取数据 (快速提取数据) 2.3 数据与代码的转换 2.4 IDA 函数调用图 (观察函数层次调用结构) 2.5 常数搜索 (搜索结构体偏移、OLLVM 混淆真实块 …) 2.6 指令文本搜索 (搜索反调试指令) 2.7 字节数据搜索(搜索特定指令序列) 2.8 IDA 代码提取 (提取IDA中的代码编译并使用) 2.9 IDA Patch (修改汇编代码,并生效) 2.10 符号还原 第二章视频讲解(01:06:52) 第三章 动态调试基础1 3.1 IDA 调试总览 3.2 Windows 本地调试 3.3 调试命令行参数 3.4 调试基本操作细节 3.5 Windows 远程调试 3.6 Linux 远程调试 3.7 动态链接库调试 (SO / DLL) 3.8 Android Native 库调试 3.9 路由器固件模拟调试 第三章视频讲解(48:36) 第四章 动态调试基础2 4.1 硬件断点 4.2 内存断点 4.3 API 断点 4.4 调试内存数据提取 4.5 调试内存数据修改 4.6 IDA 调试 Trace 4.7 Fork 双进程调试法 第四章视频讲解(01:25:55) 第五章 IDA疑难杂症 5.1 IDA Decompile as call 5.2 IDA 修复枚举值 5.3 IDA positive sp value 5.4 IDA too big stack frame 5.5 IDA 跳转表修复 5.6 函数大小限制处理 5.7 Golang 反编译失败处理 第五章视频讲解(38:20) 第六章 IDA脚本编程 6.1 IDA Python 脚本智能提示 6.2 寄存器接口 6.3 调试内存/本地内存接口 6.4 函数遍历/基本块遍历/指令遍历接口 6.5 交叉引用接口 6.6 交叉引用批量设置 o-llvm 断点 6.7 调试接口 6.8 条件断点脚本 6.9 Microcode 原理与例子 6.10 Hexrays Hooks 第六章视频讲解(54:57) 第七章 C++逆向 1、C++ 无符号逆向方法论 2、常见 STL 容器 3、std::string 逆向与解析脚本 4、std::stringstream 逆向与解析脚本 5、std::vector 逆向与解析脚本 6、std::list 逆向与解析脚本 7、std::deque 逆向与解析脚本 8、std::map 逆向与解析脚本 9、std::unordered_map 逆向与解析脚本 第七章视频讲解(17:58) 第八章 类型修复 1、基础数据类型修复 2、枚举值常量类型修复 3、IDA 结构体修复 4、IDA 虚表修复 第八章视频讲解(01:06:51) 第九章 综合实战 第九章视频讲解(32:58)