这堂课补的是安卓逆向的「下半身」

很多人学安卓安全,卡在一个尴尬位置:Java层反编译调一调、Frida hook 一下 startActivity,觉得自己会了。但真遇到加固应用、so 里藏逻辑、反调试和指令混淆,就完全使不上劲。这门《安卓应用安全 SO 进阶培训班》,补的正是这个缺口——从 ELF 文件格式、链接视图,到 hook、trace、加壳脱壳、dex VMP 的完整 native 层逆向能力。

它不是入门课。适合你至少满足:看得懂 ARM 汇编、写过 C 基础代码、会用 Frida 做 Java 层 hook、知道 ELF 文件有节和段这回事。如果你只是听说过「got 表」「inline hook」这些词但没动过手,建议先自己写一遍 dlsym 和最简单的 GOT hook 再来看,否则前几课就会吃力。

建议先啃这几块,别从头硬刷

课程按主题大致分五段:ELF 与链接格式、GOT/PLT 与 inline hook、汇编 trace 与指令修复、so 加载流程与加壳、dex VMP 与 dex2c。如果你基础还行,另一条更顺的路线是先看 ELF 部分,再按 hook 主线推进。

建议第一站看 ELF 的 linking view 和可执行文件生成过程。这两课回答的是「so 文件长什么样、链接器怎么看待它」,是高版本安卓函数地址索引、寻找 so 中符号地址的前提。不看明白这一段,后面 got hook 完全听天由命。第二站是 GOT/PLT hook 系列:从初识 gothook、进阶,到 plt hook 进阶,最后是 xhook 原理刨析。这里有番外课讲另类方法寻找 so 首地址和反调试绕过——一个主要依赖 gdb 调 so 的人,和会换基址定位 so 的人,在实战里是两种水平。

第三站是汇编 trace 与 inline hook。这套内容从入门到进阶,包括了基于 capstone 处理特殊指令、trace 中的指令修复。推荐至少把入门和指令修复看完,因为这是你以后写任何 trace 工具的基础。如果你主要目标是脱壳,第四站看 so 加载流程、装载完成、so 加壳(什么是壳、装载入门)、so 替换(上/下)和 static analysis 探壳。要是你对 dex VMP 更感兴趣,就别在 so 脱壳上恋战,直接看 dex 解析器、dex VMP 初尝试、寄存器模拟与参数获取、dex2c 基本原理。

学完能独立做什么,以及怎么练

学完这套,你应该能独立完成下面这些事:对着一个加固的 so,静态拆出它的 ELF 结构,定位关键函数符号;用 GOT/PLT hook 拦截目标调用;写基于 capstone 的汇编 trace 脚本,trace 一个加密或混淆过的函数,并在指令修复上处理边界情况;读懂 so 加载流程后,手工或辅助工具完成 so 替换,对抗常见加固;定制 r0Invoke 框架绕过反调试;面对一个 dex VMP 的样本,知道从解析 dex 入手拿到参数,逐步还原执行逻辑。

资料配合上,每一课都要动手。看 ELF 部分时,用 readelf 打开真实 so 文件对照着看;看 got/plt hook 时,自己写一个最小可运行的 hook 工程,别只在 frida 里 call 一下完事。选一门课判断自己学没学会的方法很简单:你能不能不看课件,自己完成一个「用两行文字描述但实际做出来很痛苦」的任务——比如手动完成一次 inline hook 的指令修复、在 trace 时修复因为 Thumb/ARM 切换导致的错误分支。这套课的难点恰好就是这些细节,每个让你卡住的点都值得停下来敲一敲。

练习的最终目标是:拿一个市面上常见的加固 app,给自己限定一个敏感函数(比如某个签名校验),完成从定位、hook、trace 到绕过加固拿结果的完整链路。走通一次,你的 SO 逆向才算是真的「进阶」了。

课程目录

课时26.定制r0invoke插件绕过反调试&&复杂函数trace.mp4 [443.1 MB]
课时11. 从got&plthook总结到xhook原理刨析.mp4 [364.1 MB]
课时46.dex vmp难点设计思路补充.mp4 [419.6 MB]
课时37.soinfo替换(下).mp4 [363.6 MB]
课时21.so加载流程分析.mp4 [367.0 MB]
课时3 elf linking view.mp4 [367.1 MB]
课时35.so替换(上).mp4 [413.1 MB]
课时2 dex解析器.mp4 [382.9 MB]
课时28.so加壳-什么是壳(1).mp4 [325.2 MB]
课时12.番外另类方法寻找so首地址.mp4 [337.4 MB]
课时34.参数链接修正.mp4 [415.6 MB]
课时16. inlinehook 中可能遇到的bug.mp4 [381.8 MB]
课时41.dex vmp 寄存器模拟与参数获取.mp4 [352.8 MB]
课时40.dex vmp 初尝试.mp4 [374.2 MB]
课时27.汇编trace 进阶.mp4 [348.0 MB]
课时18.基于capstone 处理特殊指令 (下).mp4 [349.1 MB]
课时09.got hook进阶&&初识plt hook.mp4 [399.2 MB]
课时31.so装载完成.mp4 [384.0 MB]
课时36.基于静态分析探索一个真实壳隐藏so手法.mp4 [716.5 MB]
课时4 elf可执行文件生成过程.mp4 [288.1 MB]
课时13.java hook原理.mp4 [349.2 MB]
课时1 读懂dex.mp4 [405.4 MB]
课时24.trace中的指令修复(1).mp4 [370.5 MB]
课时47.dex2c基本原理与实现思路.mp4 [346.4 MB]
课时25.trace中的指令修复(2).mp4 [396.7 MB]
课时6 寻找so中的符号地址.mp4 [455.0 MB]
课时45. 揭秘dexvmp实现中的疑难杂症.mp4 [495.3 MB]
课时23.汇编trace 入门.mp4 [374.8 MB]
课时20.通杀检测的新型框架 r0Invoke.mp4 [434.1 MB]
课时8:初识got hook.mp4 [332.4 MB]
课时29.so加壳-装载入门(2).mp4 [322.1 MB]
课时43.dexvmp 解析dex获取想要的参数(上).mp4 [378.7 MB]
课时42.dexvmp 部分指令解析执行.mp4 [385.9 MB]
课时5 高版本安卓函数地址索引彻底解决方案.mp4 [412.2 MB]
课时22.编译aosp 注入so.mp4 [371.1 MB]
课时33.函数链接修正.mp4 [430.5 MB]
课时10.plt hook进阶.mp4 [407.5 MB]
课时14.frida中java hook实现.mp4 [340.3 MB]
课时44.dexvmp解析dex得到想要的参数(下).mp4 [386.1 MB]
课时17 基于capstone 处理特殊指令(上).mp4 [429.8 MB]
课时7.从findExportByName源码分析到anti frida新思路.mp4 [398.5 MB]
课时30.通过so装载流程准确定位脱壳点.mp4 [255.9 MB]
课时19.inlinehook框架集成.mp4 [390.8 MB]
课时15.inlinehook 中用到的汇编指令.mp4 [351.5 MB]
课时32.什么是链接(1).mp4 [410.9 MB]