安卓逆向是个门槛不算低的领域:工具链零散、环境配置容易卡住、市面上不少教程一上来就丢一堆 APK 让你自己啃。这套 2022 版的小肩膀安卓逆向安全教程,定位比较明确——它不教你从零写安卓 App,而是教你站在"拆解别人 App"的角度,把静态分析和动态调试的基本功练起来。如果你之前搜过安卓逆向相关内容,被 jadx、jeb、gda 这些工具名绕晕过,那这份资料的价值就比较直接了。
它解决的是什么问题
安卓逆向最劝退的地方往往不是逆向本身,而是前期环境。JDK 装哪个版本、环境变量怎么配、cmd 里命令为什么报错、Python 又要不要装——这些琐碎问题能消耗掉一半的学习热情。这套教程从 Windows 环境配置讲起,把 JDK 安装、环境变量、Python 安装这些基础环节单独拆开演示,然后才进入 jadx、gda、jeb 三款主流反编译工具的简单使用。也就是说,它先帮你把"能动手"这件事解决掉,再谈分析。后面的 Java 层逆向实战、server 配置、密码学相关算法(含 SHA 一类摘要算法)等内容,都是在这个基础上往下走的。
适合什么基础的人看
如果你完全没碰过 Java、也没写过一行安卓代码,直接上手会比较吃力,建议先补一点 Java 语法和安卓四大组件的基本概念,否则看到反编译出来的 smali 或 Java 伪代码会没有判断力。相对合适的读者是:有 Java 或安卓开发基础、想转做安全或渗透测试的开发者;做 App 加固、风控、爬虫对抗相关工作的工程人员;以及准备参加 CTF 移动安全方向、需要系统补一遍工具链的学生。纯零基础也能看,但要把节奏放慢,基础部分别跳。
建议的看课顺序和练习方式
不要按文件夹顺序无脑刷。建议先集中看安卓基础和工具使用这两块,重点是把 jadx、gda、jeb 三个工具各自擅长什么搞清楚——jadx 看 Java 层逻辑顺手,jeb 在交互和调试上更完整,gda 在 Windows 下轻量。工具熟悉之后,再进入 Java 层逆向实战,这部分是核心,最好跟着案例自己复现一遍,不要只看不动手。密码学和 SHA 算法相关内容偏理论,可以放在实战之后作为补充,理解 App 里常见的校验、签名、加密逻辑是怎么落地的。server 配置部分建议边看边搭一遍环境,光看容易忘。每看完一个实战案例,试着自己写一份分析笔记:入口在哪、关键判断在哪、怎么绕过或验证,这比重复看视频有用得多。学完之后,你应该能独立完成对一个未加固安卓 App 的基础静态分析,定位关键逻辑,并借助动态调试验证猜想——这是这套资料能带你到达的大致位置,再往深走(脱壳、so 层、反调试对抗)还需要另外补料。
课程介绍
[逆向]2022版小肩膀APP安卓逆向安全教程 是一份移动开发 / itjc8学习资料,内容围绕 移动开发 / itjc8 展开。
内容涵盖:安卓基础、Java层逆向实战、server的配置、密码学探秘、SHA算法、mp4 等主题。
适合对 移动开发 / itjc8 有需求、希望一次性拿到完整资料的同学。
下方为完整资料与目录,可先看目录判断是否符合需要。
├─01.安卓基础 │ 001.开课交流.mp4 │ 002.Windows环境配置.mp4 │ 003.cmd与环境变量.mp4 │ 004.jdk的安装.mp4 │ 005.jadx的简单使用.mp4 │ 006.gda的简单使用.mp4 │ 007.jeb的简单使用.mp4 │ 008.Windows注意事项_Python的安装.mp4 │ 009.第01天的答疑环节.mp4 │ 010.第01天的答题有奖环节.mp4 │ 011.AndroidStudio的安装与配置.mp4 │ 012.adb的工作原理与配置.mp4 │ 013.真机环境配置(刷机).mp4 │ 014.真机环境配置(root).mp4 │ 015.真机环境配置(其他).mp4 │ 016.第02天的答疑环节.mp4 │ 017.第02天的答题有奖环节.mp4 │ 018.adb常用命令.mp4 │ 019.logcat的使用.mp4 │ 020.Android扫盲.mp4 │ 021.Linux常用命令1.mp4 │ 022.Linux常用命令2.mp4 │ 023.Linux常用命令3.mp4 │ 024.Linux常用命令4.mp4 │ 025.第03天的答疑环节.mp4 │ 026.第03天的答题有奖环节.mp4 │ 027.Android常用目录.mp4 │ 028.Linux权限.mp4 │ 029.AndroidStudio的工程目录.mp4 │ 030.build.gradle与AndroidManifest.xml.mp4 │ 031.app执行入口.mp4 │ 032.基本控件的使用(button).mp4 │ 033.第04天的答疑环节.mp4 │ 034.第04天的答题有奖环节.mp4 │ 035.Toast的使用.mp4 │ 036.基本控件的使用(TextView).mp4 │ 037.通过硬编码定位字符串.mp4 │ 038.基本控件的使用(EditText).mp4 │ ├─02.Java层逆向实战 │ 039.抓包工具的分类.mp4 │ 040.基本抓包环境配置.mp4 │ 041.抓包工具证书的配置1.mp4 │ 042.抓包工具证书的配置2.mp4 │ 043.常见无法解密SSL的原因.mp4 │ 044.第05天的答疑环节.mp4 │ 045.第05天的答题有奖环节.mp4 │ 046.HttpCanary的安装配置与使用.mp4 │ 047.r0capture的配置与使用.mp4 │ 048.为什么Charles还要配合socksdroid来使用.mp4 │ 049.对称加密算法和RSA的介绍.mp4 │ 050.抓包原理详解.mp4 │ 051.数字签名算法与数字证书.mp4 │ 052.HTTP协议(URL).mp4 │ 053.HTTP协议(协议头).mp4 │ 054.第06天的答疑环节.mp4 │ 055.第06天的答题有奖环节.mp4 │ 056.app界面控件的查看.mp4 │ 057.通过控件定位绑定的事件代码.mp4 │ 058.人肉搜索字符串定位关键代码.mp4 │ 059.传统关键代码定位方法的弊端.mp4 │ 060.Hook可以用来做什么.mp4 │ 061.FridaHook环境搭建.mp4 │ 062.第07天的答疑环节.mp4 │ 063.第07天的答题有奖环节.mp4 │ 064.webstorm_nodejs_Frida代码提示配置.mp4 │ 065.frida-server的配置.mp4 │ 066.FridaHook普通方法和重载方法.mp4 │ 067.FridaHook获取参数值_Java.cast向下转型.mp4 │ 068.Frida辅助app协议逆向分析1.mp4 │ 069.Frida辅助app协议逆向分析2.mp4 │ 070.FridaHook构造函数.mp4 │ 071.第08天的小结.mp4 │ 072.第08天的答疑环节.mp4 │ 073.第08天的答题有奖环节.mp4 │ 074.Frida辅助app协议逆向分析补充.mp4 │ 075.算法复现1.mp4 │ 076.算法复现2.mp4 │ 077.协议复现1.mp4 │ 078.协议复现2.mp4 │ 079.Fiddler抓取PC应用数据包.mp4 │ 080.从逆向案例中发现自身存在的问题.mp4 │ 081.第09天的答题有奖环节.mp4 │ 082.关键代码快速定位1.mp4 │ 083.关键代码快速定位2.mp4 │ 084.关键代码快速定位3.mp4 │ 085.关键代码快速定位4.mp4 │ 086.关键代码快速定位5.mp4 │ 087.关键代码快速定位6.mp4 │ 088.其他关键代码定位思路.mp4 │ 089.安卓系统沙盒功能演示(打印函数调用关系).mp4 │ 090.安卓系统沙盒功能演示(打印每一行指令).mp4 │ 091.第10天的答疑环节.mp4 │ 092.关键代码快速定位7.mp4 │ 093.关键代码快速定位8.mp4 │ 094.关键代码快速定位9.mp4 │ 095.Hook字符串构造函数存在的问题.mp4 │ 096.系统源码中对于字符串构造函数的处理.mp4 │ 097.关键代码快速定位10.mp4 │ 098.关键代码快速定位11.mp4 │ 099.关键代码快速定位12.mp4 │ 100.关键代码快速定位13.mp4 │ 101.第11天的答疑环节.mp4 │ 102.第11天的答题有奖环节.mp4 │ 103.静态方法和实例方法的hook.mp4 │ 104.函数参数和返回值的修改.mp4 │ 105.构造方法的hook.mp4 │ 106.对象参数的构造与修改.mp4 │ 107.HashMap的打印.mp4 │ 108.重载方法的hook.mp4 │ 109.hook方法的所有重载.mp4 │ 110.主动调用.mp4 │ 111.获取和修改类的字段.mp4 │ 112.Hook内部类与匿名类.mp4 │ 113.jadx动态调试.mp4 │ 114.第12天的小结.mp4 │ 115.混淆函数的Hook方法.mp4 │ 116.枚举所有已加载的类.mp4 │ 117.枚举类的所有方法.mp4 │ 118.hook类的所有方法.mp4 │ 119.Java.registerClass.mp4 │ 120.Frida注入dex.mp4 │ 121.Frida写文件.mp4 │ 122.Java.cast.mp4 │ 123.第13天的答题有奖环节.mp4 │ 124.数组的构造.mp4 │ 125.可变参数的构造.mp4 │ 126.ArrayList的主动调用.mp4 │ 127.hook动态加载的dex.mp4 │ 128.让hook只在指定函数内生效.mp4 │ 129.某app实战(过vpn检测).mp4 │ 130.某app实战(去强制更新).mp4 │ 131.路漫漫其修远兮_吾将上下而求索.mp4 │ 132.第14天的答题有奖环节.mp4 │ 133.hook定位接口的实现类.mp4 │ 134.hook定位抽象类的实现类.mp4 │ 135.frida.exe的使用.mp4 │ 136.frida连接多个设备8.46.mp4 │ 137.脱离pc使用Frida.mp4 │ 138.objection的安装.mp4 │ 139.objection(有手就行的hook).mp4 │ 140.objection的其他常见操作.mp4 │ 141.objection不常使用的操作.mp4 │ 142.objection的插件(Wallbreaker).mp4 │ 143.第15天的答疑环节.mp4 │ 144.免root使用Frida.mp4 │ 145.安卓系统对应so平台的选择.mp4 │ 146.免root和脱离pc使用Frida.mp4 │ 147.Frida自吐算法演示.mp4 │ 148.某app逆向实战.mp4 │ 149.某app逆向实战.mp4 │ 150.某app逆向实战.mp4 │ 151.第16天的答疑环节.mp4 │ 152.某app逆向实战.mp4 │ 153.某app抓包分析.mp4 │ 154.某app关键代码定位.mp4 │ 155.某app算法逆向.mp4 │ 156.某app非标准算法还原.mp4 │ 157.Java代码翻译JS代码.mp4 │ 158.第17天的答疑环节.mp4 │ 125.zip │ ├─03.密码学探秘 │ 159.密码学介绍.mp4 │ 160.H5的app逆向.mp4 │ 161.Hex编码.mp4 │ 162.Base64编码.mp4 │ 163.Base64编码细节.mp4 │ 164.消息摘要算法.mp4 │ 165.MD5算法.mp4 │ 166.第18天-SHA算法.mp4 │ 167.算法通杀(工具函数的封装).mp4 │ 168.算法通杀(MD5).mp4 │ 169.算法通杀(SHA).mp4 │ 170.MAC算法.mp4 │ 171.算法通杀(MAC).mp4 │ 172.对称加密算法.mp4 │ 173.DES算法-1.mp4 │ 174.加密模式.mp4 │ 175.填充方式.mp4 │ 176.DES算法-2.mp4 │ 177.DESede算法.mp4 │ 178.第19天的答疑环节.mp4 │ 179.第19天的答题有奖环节.mp4 │ 180.AES算法.mp4 │ 181.DES算法通杀hook.mp4 │ 182.DESede算法通杀hook.mp4 │ 183.AES算法通杀hook.mp4 │ 184.非对称加密算法.mp4 │ 185.RSA密钥的解析.mp4 │ 186.RSA的加解密.mp4 │ 187.RSA的加密模式和填充方式.mp4 │ 188.RSA密钥的转换.mp4 │ 189.RSA算法的通杀hook.mp4 │ 190.第20天的答疑环节.mp4 │ 191.多种加密算法的常见结合套路.mp4 │ 192.数字签名算法.mp4 │ 193.数字签名算法的通杀hook.mp4 │ 194.CryptoJS(消息摘要算法).mp4 │ 195.CryptoJS(消息摘要算法的其他调用形式).mp4 │ 196.CryptoJS(字符串解析).mp4 │ 197.CryptoJS(对称加密算法-1).mp4 │ 198.CryptoJS(对称加密算法-2).mp4 │ 199.第21天答疑环节.mp4 │ 200.闲聊.mp4 │ 201.CryotoJS(其他算法).mp4 │ 202.jsencrypt库的改写和使用.mp4 │ 203.给jsencrypt库增加NOPadding填.mp4 │ 204.js数字签名库的使用.mp4 │ 205.某app逆向实战(so入门).mp4 │ ├─04.NDK开发 │ 206.so入门.mp4 │ 207.NDK介绍.mp4 │ 208.第22天的答疑环节.mp4 │ 209.NDK与Java工程的区别.mp4 │ 210.第一个NDK工程.mp4 │ 211.so中常用的Log输出.mp4 │ 212.NDK多线程简介.mp4 │ 213.JNI_OnLoad.mp4 │ 214.JavaVM.mp4 │ 215.JNIEnv.mp4 │ 216.so相关的几个概念.mp4 │ 217.第23天的小结.mp4 │ 218.之前的内容小结.mp4 │ 219.so函数注册.mp4 │ 220.多个cpp文件编译成一个so.mp4 │ 221.编译多个so.mp4 │ 222.so路径的动态获取.mp4 │ 223.so之间的相互调用1.mp4 │ 224.so之间的相互调用2.mp4 │ 225.第24天的小结.mp4 │ 226.通过jni创建java对象.mp4 │ 227.通过jni访问java属性.mp4 │ 228.通过jni访问java数组.mp4 │ 229.通过jni访问java方法1.mp4 │ 230.CallObjectMethodA的使用.mp4 │ 231.通过jni访问java方法2.mp4 │ 232.实战分析某so中的jni相关调用.mp4 │ 233.第25天的答疑环节.mp4 │ 234.通过jni访问Java父类方法.mp4 │ 235.内存管理(局部引用).mp4 │ 236.内存管理(全局引用).mp4 │ 237.子线程中获取Java类1.mp4 │ 238.子线程中获取Java类2.mp4 │ 239.init与initarray.mp4 │ 240.onCreateNative化.mp4 │ ├─05.密码学进阶 │ 01.学前须知.mp4 │ 02.C实现的MD5算法的使用.mp4 │ 03.MD5算法细节(明文的处理).mp4 │ 04.字节序.mp4 │ 05.MD5算法细节(M1-M16).mp4 │ 06.MD5算法细节(初始化常量).mp4 │ 07.MD5算法细节(MD5Transform).mp4 │ 08.MD5代码实现详解(明文的处理).mp4 │ 09.MD5代码实现详解(结果的计算).mp4 │ 10.MD5代码实现详解(MD5Transform).mp4 │ 11.IDA的基本使用.mp4 │ 12.IDA中的MD5(IDA中的数值转换).mp4 │ 13.IDA中的MD5(IDA中的数据类型).mp4 │ 14.IDA中的MD5(MD5算法的识别).mp4 │ 15.IDA的常用操作.mp4 │ 16.IDA算法识别插件.mp4 │ 17.IDA算法识别插件(findhash).mp4 │ 18.so层自吐算法.mp4 │ 19.IDA插件(trace_natives).mp4 │ 20.so层自吐算法升级版.mp4 │ 21.SHA1算法细节.mp4 │ 22.SHA1代码实现详解.mp4 │ 23.哈希算法的识别.mp4 │ 24.HmacMD5算法介绍.mp4 │ 25.HmacMD5算法细节.mp4 │ 26.HmacMD5算法实现详解.mp4 │ 27.DES算法细节(子密钥生成).mp4 │ 28.DES算法细节(明文的运算).mp4 │ 29.DES的实现源码分析1.mp4 │ 30.DES的实现源码分析2.mp4 │ 31.DES的魔改.mp4 │ 32.分组加密的填充.mp4 │ 33.分组加密的模式(ECB).mp4 │ 34.分组加密的模式(CBC).mp4 │ 35.分组加密的模式(其他).mp4 │ 36.3DES算法细节.mp4 │ 37.AES特点.mp4 │ 38.AES算法细节(明文的运算1).mp4 │ 39.AES算法细节(明文的运算2).mp4 │ 40.AES算法细节(密钥的编排).mp4 │ 41.AES的代码实现.mp4 │ 42.AES查表法详解.mp4 │ 43.openssl的aes实现.mp4 │ 44.openssl的EVP使用.mp4 │ 45.AES和DES的区别与联系.mp4 │ ├─06.so层逆向实战 │ 01.实战(so逆向分析).mp4 │ 02.枚举各种.mp4 │ 03.实战(sohook导出函数).mp4 │ 04.模块基址的几种获取方式.mp4 │ 05.函数地址的计算.mp4 │ 06.Hook任意函数.mp4 │ 07.有手就行的sohook.mp4 │ 08.实战(某app的so逆向).mp4 │ 09.实战(某app的so逆向).mp4 │ 10.实战(某app的so逆向).mp4 │ 11.实战(某app的so逆向).mp4 │ 12.实战(某app的so逆向).mp4 │ 13.实战(某app的so逆向).mp4 │ 14.实战(hook过root检测).mp4 │ 15.实战(某app的so逆向).mp4 │ 16.实战(二级指针的处理).mp4 │ 17.实战(jnitrace).mp4 │ 18.ollvm字符串解密.mp4 │ 19.sodump.mp4 │ 20.so修复.mp4 │ 21.修改函数数值参数和返回值.mp4 │ 22.修改函数字符串参数.mp4 │ 23.frida操作C语言结构体.mp4 │ 24.frida构建字符串以及需要注意的细节.mp4 │ 25.获取指针参数返回值.mp4 │ 26.hook_dlopen.mp4 │ 27.内存读写.mp4 │ 28.ARM汇编介绍.mp4 │ 29.frida修改so函数代码.mp4 │ 30.Memory.patchCode.mp4 │ 31.so层主动调用任意函数.mp4 │ 32.hooklibc读写文件.mp4 │ 33.jni函数的hook1.mp4 │ 34.jni函数的hook2.mp4 │ 35.主动调用jni函数.mp4 │ 36.so层打印函数栈.mp4 │ 37.二级指针的构造.mp4 │ 38.如何确认native函数在哪个so.mp4 │ 39.快速定位jni静态注册函数.mp4 │ 40.快速定位jni动态注册函数.mp4 │ 41.inlinehook.mp4 │ 42.源码分析(ART下的System.loadLibrary)1.mp4 │ 43.源码分析(ART下的System.loadLibrary)2.mp4 │ 44.hook_initarray.mp4 │ 45.hook_JNIOnload.mp4 │ 46.hook_pthread_create.mp4 │ 47.打印so层函数栈和DebugSymbol.mp4 │ 48.替换函数.mp4 │ 49.hexdump.mp4 │ 50.frida-trace.mp4 │ 51.内存读写监控.mp4 │ 52.常见Frida检测方法1.mp4 │ 53.常见Frida检测方法2.mp4 │ 54.Frida检测补充.mp4 │ 55.实战(某app的so逆向).mp4 │ 56.实战(某app的so逆向).mp4 │ 57.frida-gadget持久化介绍.mp4 │ 58.AndroidStudio导入AOSP源码.mp4 │ 59.配置开机时创建自定义目录.mp4 │ 60.创建文件类型SeLinux标签.mp4 │ 61.为自定义目录关联文件类型标签.mp4 │ 62.配置system_app访问标签文件的权限.mp4 │ 63.配置untrusted_app访问标签文件的权限.mp4 │ 64.frida-gadget集成到系统.mp4 │ 65.系统源码的修改1.mp4 │ 66.系统源码的修改2.mp4 │ 67.系统源码的修改3.mp4 │ 68.魔改系统的编译.mp4 │ 69.魔改系统的刷机.mp4 │ 70.frida-gadget管理app的开发.mp4 │ 71.frida-gadget持久化成品.mp4 │ ├─07.算法转发与unidbg │ 01.frida的Python库使用(包名附加).mp4 │ 02.frida的Python库使用(pid附加).mp4 │ 03.frida的Python库使用(spawn方式启动).mp4 │ 04.frida的Python库使用(连接非标准端口和多个设备).mp4 │ 05.frida与Python的交互(send).mp4 │ 06.frida与Python的交互(recv).mp4 │ 07.frida的rpc远程调用.mp4 │ 08.frida算法转发1.mp4 │ 09.frida算法转发2.mp4 │ 10.frida算法转发3.mp4 │ 11.外网服务部署.mp4 │ 12.fiddler数据转发.mp4 │ 13.补充.mp4 │ 14.unidbg介绍.mp4 │ 15.unidbg入门案例.mp4 │ 16.unidbg(通过符号寻找函数地址的过程).mp4 │ 17.unidbg(对传入的参数进行包装的过程).mp4 │ 18.unidbg入门案例.mp4 │ 19.unidbg入门案例.mp4 │ 20.处理so调用系统Java类.mp4 │ 21.处理so调用其他so.mp4 │ 22.unidbg入门案例.mp4 │ 23.通过符号调用函数1.mp4 │ 24.通过符号调用函数2.mp4 │ 25.通过偏移调用函数.mp4 │ 26.unidbg中的Hook.mp4 │ 27.hookzz.wrap.mp4 │ 28.hookzz.instrument.mp4 │ 29.参数的获取.mp4 │ 30.hookzz.replace.mp4 │ 31.原生UnicornHook.mp4 │ 32.打印调用栈.mp4 │ 33.unidbg中的动态调试.mp4 │ 34.监控内存读写.mp4 │ 35.unidbg trace1.mp4 │ 36.unidbg trace2.mp4 │ 37.处理so调用自写Java类1.mp4 │ 38.处理so调用自写Java类2.mp4 │ 39.处理so调用自写Java类3.mp4 │ 40.unidbg实际案例.mp4 │ 41.unidbg实际案例.mp4 │ 42.unibdg实际案例.mp4 │ 43.unibdg实际案例.mp4 │ 44.unidbg实际案例.mp4 │ 45.unidbg中的VirtualModule.mp4 │ 46.处理so与系统的交互(文件访问).mp4 │ 47.处理so与系统的交互(rootfs虚拟文件系统).mp4 │ 48.处理so与系统的交互(环境变量).mp4 │ 49.处理so与系统的交互(HookListener).mp4 │ 50.处理so与系统的交互.mp4 │ 51.Linux内核的Syscall.mp4 │ ├─08.抓包检测与Hook抓包 │ 01.抓包复习.mp4 │ 02.常见的抓包检测.mp4 │ 03.VPN检测1.mp4 │ 04.VPN检测2.mp4 │ 05.VPN检测3.mp4 │ 06.HttpsURLConnection的GET和POST请求.mp4 │ 07.HttpsURLConnection的自吐.mp4 │ 08.HttpsURLConnection的证书检测.mp4 │ 09.HttpsURLConnection证书检测的绕过.mp4 │ 10.okhttp3的GET和POST请求.mp4 │ 11.okhttp3的拦截器.mp4 │ 12.okhttp3的自吐及快速定位.mp4 │ 13.okhttp3的证书检测.mp4 │ 14.okhttp3的certificatePinner.mp4 │ 15.okhttp3证书检测的绕过1.mp4 │ 16.okhttp3证书检测的绕过2.mp4 │ 17.okhttp3混淆后的定位方法.mp4 │ 18.okhttp3源码分析.mp4 │ 19.Java层ssl系统源码分析与自吐.mp4 │ 20.JNI层ssl系统源码分析.mp4 │ 21.JNI层ssl自吐1.mp4 │ 22.JNI层ssl自吐2.mp4 │ 23.r0capture的使用.mp4 │ 24.某app抓包实战.mp4 │ 25.某app关键代码定位.mp4 │ 26.某app抓包实战(证书dump与双向验证).mp4 │ 27.某app抓包实战(服务端校验客户端).mp4 │ ├─09.脱壳 │ 01.Linux介绍.mp4 │ 02.VMware的安装.mp4 │ 03.Ubuntu系统的安装.mp4 │ 04.虚拟机快照.mp4 │ 05.Ubuntu系统的配置.mp4 │ 06.VMware的三种网络连接.mp4 │ 07.安卓系统编译(下载初始化包).mp4 │ 08.安卓系统编译(同步指定版本源码).mp4 │ 09.关于安卓源码下载的补充.mp4 │ 10.安卓系统编译(获取手机驱动).mp4 │ 11.安卓系统编译(源码编译).mp4 │ 12.刷机前置知识.mp4 │ 13.刷机详解.mp4 │ 14.加固与脱壳介绍.mp4 │ 15.整体加固介绍.mp4 │ 16.ART下的脱壳点.mp4 │ 17.InMemoryDexClassLoader源码分析1.mp4 │ 18.InMemoryDexClassLoader源码分析2(mCookie脱壳原理).mp4 │ 19.InMemoryDexClassLoader源码分析3(OpenDexFilesFromOat).mp4 │ 20.DexClassLoader源码分析1.mp4 │ 21.DexClassLoader源码分析2.mp4 │ 22.youpk脱壳原理.mp4 │ 23.其他脱壳方法原理.mp4 │ 24.AOSP源码导入到CLion.mp4 │ 25.FART源码分析.mp4 │ 26.FART移植到安卓10-1.mp4 │ 27.FART移植到安卓10-2.mp4 │ 28.整体加固脱壳成品测试.mp4 │ 29.抽取加固介绍.mp4 │ 30.类加载器.mp4 │ 31.双亲委派机制.mp4 │ 32.加固对类加载器的影响.mp4 │ 33.FART源码分析(遍历所有ClassLoader).mp4 │ 34.FART源码分析(遍历所有的类).mp4 │ 35.FART源码分析(遍历类中的所有函数).mp4 │ 36.类的加载和初始化流程.mp4 │ 37.方法调用流程.mp4 │ 38.FART源码分析(CodeItem的保存).mp4 │ 39.FART移植到安卓10-3.mp4 │ 40.FART移植到安卓10-4.mp4 │ 41.FART移植到安卓10-5.mp4 │ 42.抽取加固脱壳成品测试.mp4 │ 43.dex重构.mp4 │ 44.FART改进方案.mp4 │ 45.Frida增强FART脱壳功能.mp4 │ 46.其他加固形式.mp4 │ └─资料 ├─PPT │ 01.安卓逆向安全2022-第一部分.pptx │ 02.安卓逆向安全2022-第二部分.pptx │ 09.算法转发与unidbg.pptx │ 10.抓包检测与Hook抓包.pptx │ 11.脱壳.pptx ├─基础 │ ├─视频 │ │ ├─01.Java语言详解 │ │ │ ├─已阅 │ │ │ │ 001.课程介绍.mp4 │ │ │ │ 002.什么是安卓app逆向.mp4 │ │ │ │ 003.Windows(注意事项).mp4 │ │ │ │ 004.Windows(cmd).mp4 │ │ │ │ 005.Windows(环境变量).mp4 │ │ │ │ 006.Windows(Terminal).mp4 │ │ │ │ 007.Java(JDK的安装与配置).mp4 │ │ │ │ 008.Java(Java语言特点).mp4 │ │ │ │ 009.Java(第1个程序).mp4 │ │ │ │ 010.Java(语言的基础组成).mp4 │ │ │ │ 011.Java(注释).mp4 │ │ │ │ │ │ │ ├─012.Java(常用编码).mp4 │ │ │ ├─013.Java(cmd设置默认编码UTF-8).mp4 │ │ │ ├─014.Java(IDEA的安装).mp4 │ │ │ ├─015.Java(转义字符).mp4 │ │ │ ├─016.Java(变量).mp4 │ │ │ ├─017.Java(数据类型).mp4 │ │ │ ├─018.Java(整数类型).mp4 │ │ │ ├─019.Java(浮点类型).mp4 │ │ │ ├─020.Java(字符型).mp4 │ │ │ ├─021.Java(布尔型).mp4 │ │ │ ├─022.Java(自动类型转换).mp4 │ │ │ ├─023.Java(强制类型转换).mp4 │ │ │ ├─024.Java(关键字和保留字).mp4 │ │ │ ├─025.Java(标识符).mp4 │ │ │ ├─026.Java(常量).mp4 │ │ │ ├─027.Java(算术运算符1).mp4 │ │ │ ├─028Java(算术运算符2).mp4 │ │ │ ├─029.Java(算术运算符练习).mp4 │ │ │ ├─030.Java(赋值运算符).mp4 │ │ │ ├─031.Java(关系运算符).mp4 │ │ │ ├─032.Java(逻辑运算符).mp4 │ │ │ ├─033.Java(逻辑运算符练习).mp4 │ │ │ ├─034.Java(三元运算符).mp4 │ │ │ ├─035.Java(运算符优先级).mp4 │ │ │ ├─036.Java(进制与位运算符).mp4 │ │ │ ├─037.Java(进制转换).mp4 │ │ │ ├─038.Java(Hex编码).mp4 │ │ │ ├─039.Java(if语句).mp4 │ │ │ ├─040.Java(switch语句).mp4 │ │ │ ├─041.Java(while循环).mp4 │ │ │ ├─042.Java(for循环).mp4 │ │ │ ├─043.Java(break与continue).mp4 │ │ │ ├─044.Java(数组).mp4 │ │ │ ├─045.Java(数组遍历).mp4 │ │ │ ├─046.Java(值传递与引用传递).mp4 │ │ │ ├─047.Java(二维数组).mp4 │ │ │ ├─048.Java(数组练习).mp4 │ │ │ ├─049.Java(10进制转16进制代码实现).mp4 │ │ │ ├─050.Java(帮助文档的查阅).mp4 │ │ │ ├─051.Java(类和对象).mp4 │ │ │ ├─052.Java(对象创建过程).mp4 │ │ │ ├─053.Java(方法的定义和调用).mp4 │ │ │ ├─054.Java(方法的返回值和参数).mp4 │ │ │ ├─055.Java(方法传参机制).mp4 │ │ │ ├─056.Java(static).mp4 │ │ │ ├─057.Java(练习1).mp4 │ │ │ ├─058.Java(练习2).mp4 │ │ │ ├─059.Java(重载).mp4 │ │ │ ├─060.Java(可变参数).mp4 │ │ │ ├─061.Java(构造器).mp4 │ │ │ ├─062.Java(变量作用域).mp4 │ │ │ ├─063.Java(this).mp4 │ │ │ ├─064.Java(包).mp4 │ │ │ ├─065.Java(访问修饰符).mp4 │ │ │ ├─066.Java(封装).mp4 │ │ │ ├─067.Java(继承).mp4 │ │ │ ├─068.Java(父类构造器).mp4 │ │ │ ├─069.Java(super).mp4 │ │ │ ├─070.Java(继承练习).mp4 │ │ │ ├─071.Java(方法重写).mp4 │ │ │ ├─072.Java(代码块).mp4 │ │ │ ├─073.Java(多态1).mp4 │ │ │ ├─074.Java(多态2).mp4 │ │ │ ├─075.Java(动态绑定机制).mp4 │ │ │ ├─076.Java(equals).mp4 │ │ │ ├─077.Java(toString).mp4 │ │ │ ├─078.Java(final).mp4 │ │ │ ├─079.Java(抽象类).mp4 │ │ │ ├─080.Java(什么是接口).mp4 │ │ │ ├─081.Java(接口细节).mp4 │ │ │ ├─082.Java(IDEA的配置).mp4 │ │ │ ├─083.Java(IDEA的其他功能).mp4 │ │ │ ├─084.Java(IDEA的快捷键1).mp4 │ │ │ ├─085.Java(IDEA的快捷键2).mp4 │ │ │ ├─086.Java(IDEA的模板).mp4 │ │ │ ├─087.Java(IDEA中你不知道的断点).mp4 │ │ │ ├─088.Java(IDEA中你不知道的调试).mp4 │ │ │ ├─089.Java(成员内部类).mp4 │ │ │ ├─090.Java(静态内部类).mp4 │ │ │ ├─091.Java(局部内部类).mp4 │ │ │ ├─092.Java(匿名内部类).mp4 │ │ │ ├─093.Java(枚举类).mp4 │ │ │ ├─094.Java(枚举类相关方法).mp4 │ │ │ ├─095.Java(注解).mp4 │ │ │ ├─096.Java(try-catch).mp4 │ │ │ ├─097.Java(throws与throw).mp4 │ │ │ ├─098.Java(包装类).mp4 │ │ │ ├─099.Java(字符串).mp4 │ │ │ ├─100.Java(字符串方法).mp4 │ │ │ ├─101.Java(字符串编码).mp4 │ │ │ ├─102.Java(StringBuffer).mp4 │ │ │ ├─103.Java(Arrays.sort).mp4 │ │ │ ├─104.Java(Arrays和System).mp4 │ │ │ ├─105.Java(Biglnteger).mp4 │ │ │ ├─106.集合.mp4 │ │ │ ├─107.集合(Collection).mp4 │ │ │ ├─108.集合(List).mp4 │ │ │ ├─109.集合(List的遍历).mp4 │ │ │ ├─110.集合(ArrayList).mp4 │ │ │ ├─111.集合(Vector).mp4 │ │ │ ├─112.集合(双向链表).mp4 │ │ │ ├─113.集合(LinkedList源码分析).mp4 │ │ │ ├─114.集合(HashSet).mp4 │ │ │ ├─115.集合(数组链表).mp4 │ │ │ ├─116.集合(HashSet源码分析1).mp4 │ │ │ ├─117.集合(HashSet源码分析2).mp4 │ │ │ ├─118.集合(HashSet的输出顺序).mp4 │ │ │ ├─119.集合(HashSet扩容机制).mp4 │ │ │ ├─120.集合(HashSet练习).mp4 │ │ │ ├─121.集合(LinkedHashSet).mp4 │ │ │ ├─122.集合(Map接口的特点).mp4 │ │ │ ├─123.集合(Map接口常用方法).mp4 │ │ │ ├─124.集合(HashMap的遍历1).mp4 │ │ │ ├─125.集合(HashMap的遍历2).mp4 │ │ │ ├─126.集合(HashMap的遍历3).mp4 │ │ │ ├─127.集合(Hashtable).mp4 │ │ │ ├─128.集合(Properties).mp4 │ │ │ ├─129.集合(TreeSet).mp4 │ │ │ ├─130.集合(TreeMap).mp4 │ │ │ ├─131.集合(Collections工具类).mp4 │ │ │ ├─132.集合使用的选择.mp4 │ │ │ ├─133.泛型入门.mp4 │ │ │ ├─134.泛型细节.mp4 │ │ │ ├─135.自定义泛型类.mp4 │ │ │ ├─136.自定义泛型接口.mp4 │ │ │ ├─137.自定义泛型方法.mp4 │ │ │ ├─138.泛型通配符.mp4 │ │ │ ├─139.Properties读配置文件.mp4 │ │ │ ├─140.反射(快速入门).mp4 │ │ │ ├─141.反射(Class的获取方式).mp4 │ │ │ ├─142.反射(哪些有Class类对象).mp4 │ │ │ ├─143.反射创建对象.mp4 │ │ │ ├─144.反射操作属性.mp4 │ │ │ ├─145.反射操作方法.mp4 │ │ │ ├─146.反射(Class类对象的其他方法).mp4 │ │ │ └─147.反射(打印类的结构信息).mp4 │ │ │ │ │ └─02.C语言详解 │ │ 01.C与C++的关系.mp4 │ │ 02.CLion的安装与配置.mp4 │ │ 03.HelloWorld.mp4 │ │ 04.C语言基础组成(语言共性).mp4 │ │ 05.常量.mp4 │ │ 06.整型.mp4 │ │ 07.浮点型.mp4 │ │ 08.字符型.mp4 │ │ 09.有符号数和无符号数.mp4 │ │ 10.字符串.mp4 │ │ 11.sprintf.mp4 │ │ 12.布尔值.mp4 │ │ 13.Java类型与C语言类型.mp4 │ │ 14.数据输入.mp4 │ │ 15.数组.mp4 │ │ 16.函数.mp4 │ │ 17.指针入门.mp4 │ │ 18.两种重要的运算符.mp4 │ │ 19.指针常见错误.mp4 │ │ 20.指针大小.mp4 │ │ 21.指针与const.mp4 │ │ 22.指针应用.mp4 │ │ 23.数组指针.mp4 │ │ 24.指针运算.mp4 │ │ 25.函数参数的值传递.mp4 │ │ 26.函数参数的引用传递.mp4 │ │ 27.数组作为函数参数.mp4 │ │ 28.函数指针.mp4 │ │ 29.全局变量.mp4 │ │ 30.静态变量.mp4 │ │ 31.内存四区.mp4 │ │ 32.模拟加密后的数据转Hex编码.mp4 │ │ 33.char指针与char数组的区别.mp4 │ │ 34.内存操作.mp4 │ │ 35.指针使用注意事项.mp4 │ │ 36.多级指针.mp4 │ │ 37.多级指针的应用.mp4 │ │ 38.模拟加密字符串返回.mp4 │ │ 39.结构体.mp4 │ │ 40.结构体指针.mp4 │ │ 41.小结.mp4 │ │ │ │ │ └─课件 │ ├─01.Java语言详解 │ │ 002课件.zip │ │ 009课件.zip │ │ 011课件.zip │ │ 013课件.zip │ │ 020-021课件.zip │ │ 022课件.zip │ │ 023课件.zip │ │ 025课件.zip │ │ 026课件.zip │ │ 027-028课件.zip │ │ 029课件.zip │ │ 030-035课件.zip │ │ 036-038课件.zip │ │ 039课件.zip │ │ 040课件.zip │ │ 041课件.zip │ │ 042课件.zip │ │ 043课件.zip │ │ 044课件.zip │ │ 045课件.zip │ │ 046课件.zip │ │ 047课件.zip │ │ 048课件.zip │ │ 049课件.zip │ │ 051课件.zip │ │ 052课件.zip │ │ 053-054课件.zip │ │ 055课件.zip │ │ 056课件.zip │ │ 057课件.zip │ │ 058课件.zip │ │ 059课件.zip │ │ 060课件.zip │ │ 061课件.zip │ │ 062课件.zip │ │ 063课件.zip │ │ 064课件.zip │ │ 065课件.zip │ │ 066课件.zip │ │ 067课件.zip │ │ 068课件.zip │ │ 069课件.zip │ │ 070课件.zip │ │ 071课件.zip │ │ 072课件.zip │ │ 073课件.zip │ │ 074课件.zip │ │ 075课件.zip │ │ 076课件.zip │ │ 077课件.zip │ │ 078课件.zip │ │ 079课件.zip │ │ 080-081课件.zip │ │ 089课件.zip │ │ 090课件.zip │ │ 091课件.zip │ │ 092课件.zip │ │ 093-094课件.zip │ │ 096课件.zip │ │ 097课件.zip │ │ 098课件.zip │ │ 099课件.zip │ │ 101课件.zip │ │ 102课件.zip │ │ 103课件.zip │ │ 104课件.zip │ │ 105课件.zip │ │ 107课件.zip │ │ 108课件.zip │ │ 109课件.zip │ │ 110课件.zip │ │ 111课件.zip │ │ 112课件.zip │ │ 113课件.zip │ │ 114课件.zip │ │ 115课件.zip │ │ 116-117课件.zip │ │ 118课件.zip │ │ 120课件.zip │ │ 121课件.zip │ │ 122-126课件.zip │ │ 127-128课件.zip │ │ 129课件.zip │ │ 130课件.zip │ │ 131课件.zip │ │ 133-137课件.zip │ │ 138课件.zip │ │ 139-146课件.zip │ │ 147课件.zip │ 02.C语言详解 │ 01-15课件.zip │ 16课件.zip │ 17-22课件.zip │ 23-24课件.zip │ 25-27课件.zip │ 28课件.zip │ 29-30课件.zip │ 31课件.zip │ 32-34课件.zip │ 35课件.zip │ 36-37课件.zip │ 38课件.zip │ 39-40课件.zip │ 课件 ├─05.密码学进阶 │ 02课件.zip │ 03-10课件.zip │ 11-15课件.zip │ 16课件.zip │ 17-18课件.zip │ 19课件.zip │ 20课件.zip │ 21-22课件.zip │ 23课件.zip │ 24-26课件.zip │ 27-28课件.zip │ 29-30课件.zip │ 31课件.zip │ 37-41课件.zip │ 44课件.zip ├─06.so层逆向实战 │ 01-07课件.zip │ 08-09课件.zip │ 10-11课件.zip │ 12-13课件.zip │ 14课件.zip │ 15-16课件.zip │ 17课件.zip │ 18课件.zip │ 19课件.zip │ 20课件.zip │ 21课件.zip │ 22-24课件.zip │ 25课件.zip │ 26课件.zip │ 27-30课件.zip │ 31课件.zip │ 32课件.zip │ 33-34课件.zip │ 35课件.zip │ 36课件.zip │ 37课件.zip │ 38-40课件.zip │ 41课件.zip │ 44课件.zip │ 45-46课件.zip │ 47-48课件.zip │ 49课件.zip │ 50课件.zip │ 51课件.zip │ 52-53课件.zip │ 54课件.zip │ 55-56课件.zip │ 69-71课件.zip ├─07.算法转发与unidbg │ 01-07课件.zip │ 08-10课件.zip │ 12课件.zip │ 14.unidbg介绍.zip │ 18.unidbg入门案例.zip │ 19-20课件.zip │ 21课件.zip │ 23-24课件.zip │ 25课件.zip │ 26-28课件.zip │ 29课件.zip │ 30课件.zip │ 31课件.zip │ 32-33课件.zip │ 34课件.zip │ 35-36课件.zip │ 37-39课件.zip │ 40课件.zip │ 41课件.zip │ 42课件.zip │ 43课件.zip │ 44课件.zip │ 45课件.zip │ 46-49课件.zip │ 50课件.zip │ 51课件.zip 08.抓包检测与Hook抓包 │ 03-04课件.zip │ 05-09课件.zip │ 10-12课件.zip │ 13-14课件.zip │ 15-16课件.zip │ 17课件.zip │ 19课件.zip │ 21-22课件.zip │ 23课件.zip │ 24-25课件.zip │ 26课件.zip │ 27课件.zip ├─000-010课件.zip ├─027-034课件.zip ├─035-045课件.zip ├─046-055课件.zip ├─056-063课件.zip ├─064-073课件.zip ├─074-081课件.zip ├─082-091课件.zip ├─092-102课件.zip ├─103-114课件.zip ├─115-123课件.zip ├─124-132课件.zip ├─133-143课件.zip ├─144-151课件.zip ├─152-158课件.zip ├─159-166课件.zip ├─167-179课件.zip ├─180-190课件.zip ├─191-200课件.zip ├─201-208课件.zip ├─209-217课件.zip ├─218-225课件.zip ├─226-233课件.zip ├─234课件.zip ├─235-236课件.zip ├─237-238课件.zip ├─239课件.zip └─240课件.zip 下载地址: bli^*^2025