在软件安全与逆向工程领域,掌握基础的IDA Pro操作和简单脱壳技术往往只是入门的敲门砖。当面对经过深度混淆、采用高级优化策略编译的商业软件或恶意样本时,许多从业者会发现以往的经验捉襟见肘。本课程《x86/x64软件逆向分析【提高篇】》正是为了解决这一痛点而设计,它不再局限于工具的使用,而是深入底层,从编译器行为、机器码本质以及现代CPU指令集的角度,重塑学员对逆向分析的认知体系。

课程开篇并未直接切入高深理论,而是花费前两节课时间,系统地梳理课前准备与工具链的配置。在逆向实战中,工欲善其事必先利其器,正确的环境搭建是后续所有分析工作的基石。通过详尽的配置指导,确保学员能够在稳定的环境中高效运行反汇编器、调试器及辅助脚本,为后续高强度的代码分析做好充分准备。

随后,课程进入了核心难点之一:机器码与汇编代码的转换。传统的逆向思维往往是从汇编到机器码,而本课反向剖析,讲解如何将原始的机器码准确地还原为可读的汇编指令。这部分内容对于理解指令编码规则、偏移量计算以及间接寻址机制至关重要,是打通二进制分析与逻辑理解之间任督二脉的关键环节。

更为独特且具有高阶价值的是,课程深入探讨了程序的优化编译与现代SIMD(单指令多数据流)指令。在实际逆向工作中,发布版本的软件通常开启了-O2或-O3优化,这会导致变量消失、函数内联、循环展开等现象,使得代码逻辑晦涩难懂。课程详细拆解了优化编译带来的典型特征,帮助学员识别并“还原”被编译器重构的逻辑。同时,针对x86/x64架构下广泛使用的AVX、SSE等SIMD指令,课程不仅讲解了其硬件原理,还重点剖析了编译器内置的SIMD指令支持机制。这对于分析高性能计算模块、多媒体处理以及部分利用SIMD指令进行混淆保护的恶意代码具有极高的实战意义。

总体而言,这是一门极具深度的进阶课程。它要求学员具备一定的逆向基础,能够耐心研读复杂的指令细节。通过学习,学员将不再畏惧优化后的二进制代码,能够透过SIMD指令的迷雾看清程序本质,从而具备应对更复杂、更高难度逆向任务的能力。无论是从事安全研究、 malware 分析还是软件保护评估的专业人士,都能从中获得宝贵的实战技巧与理论支撑。

课程目录

1-1 [x86/x64软件逆向分析【提高篇】] 课前准备&工具安装与配置开始学习(1) (17:06)
1-2 [x86/x64软件逆向分析【提高篇】] 课前准备&工具安装与配置开始学习(2) (10:31)
1-3 [x86/x64软件逆向分析【提高篇】] 如何将机器码转成汇编代码(1) (12:50)
1-4 [x86/x64软件逆向分析【提高篇】] 如何将机器码转成汇编代码(2) (18:34)
1-5 [x86/x64软件逆向分析【提高篇】] 程序的优化编译与SIMD指令(1) (12:36)
1-6 [x86/x64软件逆向分析【提高篇】] 程序的优化编译与SIMD指令(2) (17:56)
1-7 [x86/x64软件逆向分析【提高篇】] 编译器内置的SIMD指令支持(1) (12:21)
1-8 [x86/x64软件逆向分析【提高篇】] 编译器内置的SIMD指令支持(2) (17:49)
1-9 [x86/x64软件逆向分析【提高篇】] X86X64平台中寄存器的使用(1) (13:34)
1-10 [x86/x64软件逆向分析【提高篇】] X86X64平台中寄存器的使用(2) (09:35)
1-11 [x86/x64软件逆向分析【提高篇】] X86X64平台中的浮点数计算(1) (11:42)
1-12 [x86/x64软件逆向分析【提高篇】] X86X64平台中的浮点数计算(2) (12:46)
1-13 [x86/x64软件逆向分析【提高篇】] 数字的存储与内容解析(1) (11:39)
1-14 [x86/x64软件逆向分析【提高篇】] 数字的存储与内容解析(2) (11:54)
1-15 [x86/x64软件逆向分析【提高篇】] 不可逆算法与哈希函数(1) (11:42)
1-16 [x86/x64软件逆向分析【提高篇】] 不可逆算法与哈希函数(2) (08:46)
1-17 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:“温度转换”(1) (10:44)
1-18 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:“温度转换”(2) (08:29)
1-19 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:“斐波那契数列” (09:17)
1-20 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:“循环冗余校验码” (12:43)
1-21 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:“循环冗余校验码”原理以及手算(1) (09:50)
1-22 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:“循环冗余校验码”原理以及手算(2) (11:28)
1-23 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:CRC-8软件编码 (17:58)
1-24 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:CRC-32MPEG-2软件编码 (16:42)
1-25 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:CRC-32软件编码 (16:02)
1-26 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:网络地址计算(1) (12:02)
1-27 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:网络地址计算(2) (14:32)
1-28 [x86/x64软件逆向分析【提高篇】] 循环与迭代器的优化 (12:07)
1-29 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:神奇的达夫装置 (17:18)
1-30 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:除法变乘法 (15:38)
1-31 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:字符串转数字 (21:14)
1-32 [x86/x64软件逆向分析【提高篇】] 内联函数VS反编译器(1) (17:50)
1-33 [x86/x64软件逆向分析【提高篇】] 内联函数VS反编译器(2) (09:53)
1-34 [x86/x64软件逆向分析【提高篇】] 受限指针的使用(1) (10:48)
1-35 [x86/x64软件逆向分析【提高篇】] 受限指针的使用(2) (14:22)
1-36 [x86/x64软件逆向分析【提高篇】] 变长参数函数实现机制(1) (16:04)
1-37 [x86/x64软件逆向分析【提高篇】] 变长参数函数实现机制(2) (11:22)
1-38 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:字符串修剪(1) (10:37)
1-39 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:字符串修剪(2) (09:43)
1-40 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:字符大小写转换(1) (09:43)
1-41 [x86/x64软件逆向分析【提高篇】] 经典程序剖析:字符大小写转换(2) (09:43)
1-42 [x86/x64软件逆向分析【提高篇】] 如何识别错误的反汇编代码 (07:17)
1-43 [x86/x64软件逆向分析【提高篇】] 代码混淆:字符串变换技术 (18:27)
1-44 [x86/x64软件逆向分析【提高篇】] 代码混淆:打乱汇编代码(1) (16:19)
1-45 [x86/x64软件逆向分析【提高篇】] 代码混淆:打乱汇编代码(2) (18:10)
1-46 [x86/x64软件逆向分析【提高篇】] C++类的结构(1) (12:21)
1-47 [x86/x64软件逆向分析【提高篇】] C++类的结构(2) (15:01)
1-48 [x86/x64软件逆向分析【提高篇】] C++类的结构(3) (06:57)
1-49 [x86/x64软件逆向分析【提高篇】] C++类实例的内存存储方式 (15:49)
1-50 [x86/x64软件逆向分析【提高篇】] C++类实例的反汇编(1) (13:30)
1-51 [x86/x64软件逆向分析【提高篇】] C++类实例的反汇编(2) (10:42)
1-52 [x86/x64软件逆向分析【提高篇】] C++类的继承(1) (16:03)
1-53 [x86/x64软件逆向分析【提高篇】] C++类的继承(2) (13:40)
1-54 [x86/x64软件逆向分析【提高篇】] C++类的多重继承 (14:22)
1-55 [x86/x64软件逆向分析【提高篇】] C++类的虚方法(1) (20:45)
1-56 [x86/x64软件逆向分析【提高篇】] C++类的虚方法(2) (07:32)
1-57 [x86/x64软件逆向分析【提高篇】] C++类虚方法的继承 (16:20)
1-58 [x86/x64软件逆向分析【提高篇】] C++类虚方法的多重继承(1) (16:41)
1-59 [x86/x64软件逆向分析【提高篇】] C++类虚方法的多重继承(2) (12:15)
1-60 [x86/x64软件逆向分析【提高篇】] C++虚函数的用途 (12:33)