如果你对 CTF 的印象还停留在「拼手速抢 flag」,那这门课大概会让你换个看法。逆向工程在 CTF 里属于那种门槛高、回报也高的方向:题目给你一个二进制文件、一个 APK、一段打包过的脚本,没有源码,你得靠反汇编、动态调试、脱壳、hook 这些手段把逻辑还原出来,找到那段被藏起来的判断条件。这门课围绕的就是这套能力,而且它没有把自己限制在「解题技巧」上,而是花了大量篇幅去补底层功底,这对真正想把这门手艺用起来的人是好事。

需要先说清楚一个前提:逆向不是背几道题就能上手的方向。它需要你能读汇编、理解内存布局、熟悉操作系统加载流程,还要有耐心跟一个函数耗上几个小时。所以这门课适合的人其实很窄——有一定编程基础、愿意啃二进制、目标是参加 CTF 逆向方向或者做移动端安全分析的学习者。至于资料值不值得投入时间,下面分几块讲清楚。

它解决的是「拿到没有源码的东西怎么分析」这个问题

日常工作中,你遇到的典型场景是:手上只有一个可执行文件或一个安装包,需要判断它做了什么、有没有敏感行为、某个校验逻辑是怎么写的。这类问题的解法不是靠猜,而是靠一套完整的分析流程:先做静态分析看结构和字符串,再用调试器跟运行时行为,遇到壳就先脱壳,遇到反调试就先绕过。这门课的内容基本覆盖了这条链路,从 Android 的 Java 层一直往下走到 Native 层,再横向扩展到 Python、C#、Go 这几种常见语言的逆向思路。

资料里 Android 逆向占了相当大的比重,而且分成了基础、Java 层、Native 层、杂项四个部分。这个安排是有道理的:Java 层的 smali 分析和回编译相对容易入门,能让你先建立「改一个字节、重打包、看行为变化」的反馈循环;等到你熟悉了这套节奏,再进入 Native 层看 so 库里的汇编逻辑,配合动态调试和 hook 手段,难度是阶梯式上升的。如果你以前只看过 Java 层,Native 那一块大概率会卡住,而课里专门安排了常见代码隐藏技巧和反逆向对抗的内容,就是冲这些卡点去的。

基础要求:会一门语言,能看懂汇编最好

如果你完全没接触过汇编,也不用直接放弃,但要有心理准备——C 语言逆向那一块会明显吃力。资料里从 C 语言逆向的杂项开始,涉及等式问题、符号执行框架,还有反汇编引擎的使用,这些内容默认你能看懂基本的指令和寄存器操作。不会的话,建议在正式开始前先补一遍 x86 或 ARM 的汇编基础,至少把栈帧、调用约定、常见跳转指令搞清楚,否则后面看调试器里的反汇编窗口会像看天书。

语言方面,课里横向覆盖了 Python、C#、Go 三种。Python 部分讲字节码和打包工具的拆解,适合做过脚本但没研究过解释器内部的人;C# 部分涉及普通程序和 Unity 游戏,对做游戏分析或客户端安全的人有用;Go 部分从语言快速入门讲到实际示例程序的逆向,节奏偏紧凑。你不必全部吃透,但至少要挑一门自己工作中会遇到的深入跟完,其余作为扩展了解即可。

建议的学习顺序:先 Android 基础,再往 Native 和杂项走

资料包里的编号顺序其实隐含了一条推荐路径。Android 逆向的基础知识两讲应该最先看,它决定了你后面能不能顺利理解 smali 指令和静态分析的思路。接着是 Java 层的五讲,从常用指令到静态分析技巧再到 hook 和回编译,这一串是完整的动手闭环,看完你应该能独立处理一个纯 Java 层的加固应用。之后再进入 Native 层,先看动态调试,再看代码隐藏技巧,最后是 frida hook 的两讲,这个顺序能让你在遇到问题时知道该用哪种手段。

杂项部分建议放在 Android 主线之后看,因为它讲的是加壳脱壳、反逆向对抗、以及 unidbg 这类模拟执行框架的使用。这些内容单独看会很抽象,只有在你已经能分析一个真实样本、并且真的被壳或反调试挡住过之后,才会理解它在解决什么。同样,C 语言逆向的杂项、符号执行和反汇编引擎那几讲,更适合作为工具补充——当你发现手动分析太慢、需要用脚本批量处理时,再回头补这一块,吸收效率会高很多。

学完之后你能独立做什么

最直接的结果是:面对一道 CTF 逆向题,你能判断它属于哪一类,知道该先做静态还是先跑动态,遇到壳知道从哪里下手脱,遇到反调试知道怎么绕。更实际一点说,给你一个 Android 应用,你能完成 Java 层的逻辑还原和 smali 修改回编译,也能在 Native 层用调试器和 hook 跟踪关键函数,把校验逻辑或者加密流程还原出来。如果题目涉及 Python 打包或 C# 程序,你也有对应的分析思路,不至于完全无从下手。

但要注意,课里给的是方法和套路,不是万能解法。真实样本的对抗强度往往比 CTF 题目高,壳会更新、混淆会加码,你需要在使用过程中不断积累自己的工具链和调试经验。所以别指望看完就能处理所有情况,把它当作一套系统性的起点更合理——先建立完整认知,再在实战里补细节。

资料怎么配合练习用

视频本身只是输入,逆向这门手艺必须靠动手才能转化。建议每看完一讲,立刻找一个同类样本自己复现一遍,不要只看不练。比如看完 smali 修改那讲,就自己找一个简单的应用改一处逻辑并重新签名安装,确认行为确实变了;看完 hook 那讲,就自己写一个脚本去拦截目标函数并打印参数。这种「看完就练」的节奏比连续刷十讲有效得多。

另外,工具链的熟练度会直接影响你的分析效率。资料里提到的调试器、反汇编引擎、符号执行框架、模拟执行工具,每一个都值得单独花时间摸熟常用命令和脚本接口。你不必一次全学,但至少要把自己主攻方向涉及的那几个练到不用查文档就能用。等到这些工具变成肌肉记忆,再回头看那些复杂的题目,你会发现真正难的不再是操作,而是理解程序在做什么——那时候这门课的价值才算真正兑现。

课程目录

📁 

15 Android逆向 072.杂项-unidbg进阶使用(2).mp4
 [204.3 MB] 071.杂项-unidbg进阶使用(1).mp4
 [182.8 MB] 070.杂项-unidbg入门.mp4
 [216.3 MB] 069.杂项-加壳原理与脱壳.mp4
 [217.3 MB] 068.杂项-对抗反逆向手段(2).mp4
 [197.8 MB] 067.杂项-对抗反逆向手段(1).mp4
 [180.1 MB] 066.Native层逆向-frida hook(2).mp4
 [156.5 MB] 065.Native层逆向-frida hook(1).mp4
 [120.6 MB] 064.Native层逆向-常见代码隐藏技巧.mp4
 [209.8 MB] 063.Native层逆向-动态调试.mp4
 [148.5 MB] 📁 

14 Android逆向 062.Java层逆向-frida hook(2).mp4
 [184.2 MB] 061.Java层逆向-frida hook(1).mp4
 [168.4 MB] 060.Java层逆向-静态分析技巧及操作.mp4
 [382.2 MB] 059.Java层逆向-smali修改及回编译.mp4
 [127.3 MB] 058.Java层逆向-常用smali指令.mp4
 [147.7 MB] 057.基础知识-2.mp4
 [193.8 MB] 056.基础知识-1.mp4
 [150.6 MB] 📁 

13 其他语言逆向-Golang 055.例题讲解与练习.mp4
 [464.4 MB] 054.逆向示例程序.mp4
 [182.0 MB] 053.Go语言快速入门.mp4
 [164.2 MB] 📁 

12 其他语言逆向-C# 052.Unity游戏-2.mp4
 [332.9 MB] 051.Unity游戏-1.mp4
 [204.3 MB] 050.普通C#程序.mp4
 [186.8 MB] 📁 

11 其他语言逆向-Python 049.pyinstaller打包拆解.mp4
 [401.9 MB] 048.pyc文件.mp4
 [189.5 MB] 047.字节码介绍.mp4
 [155.6 MB] 📁 

10 其他语言逆向-C++ 046.汇编层面分析实例代码.mp4
 [241.1 MB] 045.扩充语法及面向对象.mp4
 [120.9 MB] 📁 

09 C语言逆向-杂项 044.等式问题与z3的使用.mp4
 [378.4 MB] 043.capstone、keystone与unicorn-2.mp4
 [213.6 MB] 042.capstone、keystone与unicorn-1.mp4
 [152.9 MB] 041.符号执行框架angr-2.mp4
 [261.1 MB] 040.符号执行框架angr-1.mp4
 [144.4 MB] 📁 

08 C语言逆向-杂项 039.迷宫及数独问题-2.mp4
 [179.0 MB] 038.迷宫及数独问题-1.mp4
 [151.2 MB] 037.MFC图形化界面-2.mp4
 [223.4 MB] 036.MFC图形化界面-1.mp4
 [129.4 MB] 035.elf文件运行流程.mp4
 [237.8 MB] 034.IDAPython常用函数介绍.mp4
 [174.3 MB] 📁 

07 C语言逆向-对抗保护混淆 033.ollvm-2.mp4
 [151.4 MB] 032.ollvm-1.mp4
 [137.5 MB] 031.指令虚拟化-2.mp4
 [144.1 MB] 030.指令虚拟化-1.mp4
 [128.1 MB] 029.自修改代码-2.mp4
 [256.6 MB] 028.自修改代码-1.mp4
 [179.5 MB] 027.反调试.mp4
 [151.3 MB] 026.花指令.mp4
 [162.4 MB] 025.upx压缩壳及其变种.mp4
 [214.4 MB] 024.x64dbg工具使用.mp4
 [187.7 MB] 📁 

06 C语言逆向-常见算法识别 023.RSA与大数运算-2.mp4
 [155.8 MB] 022.RSA与大数运算-1.mp4
 [148.2 MB] 021.分组加密算法-2.mp4
 [187.6 MB] 020.分组加密算法-1.mp4
 [152.8 MB] 019.TEA系列加密算法-2.mp4
 [120.1 MB] 018.TEA系列加密算法-1.mp4
 [177.0 MB] 017.MD5摘要算法.mp4
 [153.5 MB] 016.RC4加密算法.mp4
 [157.0 MB] 015.base家族编码.mp4
 [135.0 MB] 014.hex编码.mp4
 [131.1 MB] 📁 

05 C语言逆向-小试牛刀 013.提升IDA操作熟练度.mp4
 [184.0 MB] 012.入门赛题带做.mp4
 [176.2 MB] 📁 

04 IDA使用 011.Linux虚拟机安装和Linux远程调试.mp4
 [198.6 MB] 010.静态分析技巧及操作.mp4
 [169.1 MB] 📁 03 x86架构 009.x86架构基础知识-4.mp4
 [151.3 MB] 008.x86架构基础知识-3.mp4
 [136.4 MB] 007.x86架构基础知识-2.mp4
 [149.4 MB] 006.x86架构基础知识-1.mp4
 [135.7 MB] 📁 

02 C语言 005.常用语法和编程练习.mp4
 [271.3 MB] 004.基本数据类型.mp4
 [154.8 MB] 003.开发环境搭建mp4 [127.0 MB].mp4
 📁 01开班第一课 002.快速入门-Python.mp4
 [189.6 MB] 001.开班第一课.mp4
 [112.9 MB]