安卓逆向这门手艺,学的人不少,但真正能把 APK 拆开、看懂、改掉、再装回去的人不多。多数人卡在同一个地方:工具会用,原理说不清。反编译出来的 Smali 像天书,看到 ELF 结构就划走,动态调试断点打上去却不知道停在哪。这门课要解决的就是这些具体的卡点——不是带你逛一圈工具菜单,而是逼你把底层的几块硬骨头啃下来。

先确认你是不是需要补这一块

如果你现在的状态是下面几种之一,这门课的内容对你就是刚需:

  • 能用 jadx 或 apktool 出结果,但 Smali 里跳转一多就理不清寄存器怎么传递。
  • 知道 adb 能装能卸,但遇到要抓 FD、看文件描述符、连 Charles 抓包就接不上。
  • 想做动态调试,却分不清 Dalvik 虚拟机层和 Native 层的断点各管什么。
  • 看到 so 文件就绕开,觉得 ARM 汇编跟自己没关系。

这些缺口不是靠多看几篇博客能补上的。它们属于同一个能力面:你得同时理解 Android 的运行机制和二进制文件本身的样子。课程从 Dalvik 虚拟机和 Smali 的关系切进去,再往 ELF 文件结构、ARM 汇编指令延伸,这条线是有意为之的——先让你看懂字节码,再让你看懂机器码。

Smali 和 Dalvik 这块,别只当语法背

课程里 Smali 的学习分了几讲,这说明它不是一次性丢给你一堆指令表。Dalvik 虚拟机那讲是前提:你要先明白 Android 为什么不用 JVM 那套、寄存器架构和栈架构差在哪,后面看 Smali 里的 .registers、move-result、invoke- 系列才不会靠死记。学完这部分,你应该能回答:一段 Smali 里方法调用的返回值到底被放进了哪个寄存器,以及为什么改一个判断分支有时候要连改好几行。

配套练习的方向也很直接:拿一个自己写的小 APK,反编译后找到某个按钮的点击逻辑,改掉它的跳转条件重新打包签名,让行为反过来。做得到,这关就算过了。

ELF 和 ARM 汇编,是分水岭

课程把 ELF 文件结构和 ARM 汇编指令放在靠后的位置,不是为了凑深度,而是因为这两块决定你能不能碰 Native 层。ELF 那部分讲的是文件本身的组织方式——段、节、符号表、程序头,这些名词你大概听过,但真正要问的是:一个 so 被加载时,哪些部分进了内存、哪些留在磁盘上。想清楚这个,后面看 IDA 里的地址才不会是孤立的数字。

ARM 汇编那讲是配套的。你不必写到能编译的程度,但至少要能读:函数序言怎么保存寄存器、参数从哪几个寄存器传、返回值放哪。看完这一节,你能回答的问题应该包括:为什么同一个函数在 ARM 和 Thumb 模式下反汇编结果不一样。

调试、抓包和 adb,是把手上的活干完

动态调试分讲展开,说明它有反复练的过程。断点打在哪、怎么跟寄存器、怎么观察调用栈,这些是纯手上功夫。FD 的介绍和 Charles 的安装放在一起,指向的是另一类场景:你想看一个 App 到底往外发了什么,光靠静态分析不够,得从文件描述符和网络流量两头对。adb 常用命令那讲是基础工具,别跳过——后面调试和抓包都会反复用到它。

看完你该能回答的问题

  • 一个 APK 从 dex 到 Smali,方法和字段是怎么对应上的?
  • ELF 里哪些节区在运行时才会被映射进内存?
  • 动态调试时,Dalvik 层断点和 Native 层断点分别适合解决什么问题?
  • 改了一处 Smali 之后,为什么有时候要重新签名才能装?
  • 抓包抓不到数据,可能跟 FD 或证书校验的哪一环有关?

如果这些问题你现在答不上来,那就按课程顺序走,别跳。缺什么补什么,这几块补完,安卓逆向才算真正入门。

安卓逆向系列课程、

深入安卓底层,掌握逆向技巧

编辑点评

系统讲解安卓逆向技术,从ELF文件结构到Smali代码,实战性强。

⭐ 编辑推荐

本课程深入浅出地讲解了安卓逆向技术,涵盖ELF文件结构、Smali代码、动态调试等多个方面,适合对安卓逆向感兴趣的初学者和进阶者。

课程亮点

• 系统讲解安卓逆向技术
• 实战性强
• 涵盖多个逆向技巧

课程目录

📁 27-第二十七课 ELF是什么 ELF的文件结构的介绍
    27-第二十七课 ELF是什么 ELF的文件结构的介绍.mp4  [245.0 MB]
📁 08-第八课 Smali代码的学习(一)
    08-Smali代码的学习(一).mp4  [80.0 MB]
📁 19-第十九课 动态调试代码方法(一)
    19-第十九课 动态调试代码方法(一).mp4  [202.6 MB]
📁 10-第十课 Smali代码的学习(三)
    10-第十课 Smali代码的学习(三).mp4  [94.1 MB]
📁 28-第二十八课 ARM汇编指令的认识
    28-第二十八课 ARM汇编指令的认识.mp4  [311.0 MB]
📁 24-第二十四课 FD的介绍与使用与Charles的安装
    24-第二十四课 FD的介绍与使用与Charles的安装.mp4  [194.0 MB]
📁 12-第十二课 adb一些常用命令的介绍使用
    12-第十二课 adb一些常用命令的介绍使用.mp4  [133.7 MB]
📁 07-第七课 认识Dalvik虚拟机与Smali代码
    07-第七课 认识Dalvik虚拟机与Smali代码.mp4  [69.7 MB]
📁 29-第二十九课 ARM汇编指令速成学习
    29-第二十九课 ARM汇编指令速成学习.mp4  [144.0 MB]
📁 13-第十三课 JAVA反编译工具的了解介绍
    13-第十三课 JAVA反编译工具的了解介绍.mp4  [249.1 MB]
📁 06-第六课 DEX文件的了解
    06-第六课 DEX文件的了解.mp4  [225.9 MB]
📁 26-第二十六课 app自定义算法分析用易语言实现算法实战
    26-第二十六课 app自定义算法分析用易语言实现算法实战.mp4  [209.2 MB]
📁 03-第三课 工具的介绍与简单使用
    03-第三课 工具的介绍与简单使用.mp4  [191.5 MB]
📁 04-第四课 APK的结构介绍与解析
    04-4.APK的结构介绍与解析.mp4  [77.2 MB]
📁 11-第十一课 Smali代码的学习(四)
    11-第十一课 Smali代码的学习(四).mp4  [139.4 MB]
📁 25-第二十五课 从FD抓APP程序的数据到算法分析实战
    25-第二十五课 从FD抓APP程序的数据到算法分析实战.mp4  [247.8 MB]
📁 21-第二十一课 实例讲解动态调试定位查找关键点
    21-第二十一课 实例讲解动态调试定位查找关键点.mp4  [117.0 MB]
📁 23-第二十三课 游戏内购实战(二)
    23-第二十三课 游戏内购实战(二).mp4  [291.0 MB]
📁 05-第五课 简单初试一个APK的修改
    05-第五课 简单初试一个APK的修改.mp4  [121.8 MB]
📁 22-第二十二课 游戏内购实战(一)
    22-第二十二课 游戏内购实战(一).mp4  [387.9 MB]
📁 16-第十六课 实战APP程序的Smali代码修改(二)
    16-第十六课 实战APP程序的Smali代码修改(二).mp4  [458.5 MB]
📁 09-第九课 Smali代码的学习(二)
    09-第九课 Smali代码的学习(二).mp4  [152.8 MB]
📁 18-第十八课 初探APP签名验证并尝试SO层的修改
    18-第十八课 初探APP签名验证并尝试SO层的修改.mp4  [241.0 MB]
📁 17-第十七课 实战APP程序的Smali代码修改(三)
    17-第十七课 实战APP程序的Smali代码修改(三).mp4  [283.7 MB]
📁 01-第一课 JAVA环境搭建与系统变量配置
    01-我要说的一些话.mp4  [91.1 MB]
    01-1.JAVA环境搭建与系统环境变量配置.mp4  [64.0 MB]
📁 02-第二课 SDK与一些工具的安装与配置
    02-第二课 SDK与一些工具的安装与配置.mp4  [119.6 MB]
📁 14-第十四课 尝试修改程序逻辑达到破解目的
    14-第十四课 尝试修改程序逻辑达到破解目的.mp4  [235.9 MB]
📁 15-第十五课 实战APP程序的Smali代码修改(一)
    15-第十五课 实战APP程序的Smali代码修改(一).mp4  [207.5 MB]
📁 20-第二十课 动态调试代码方法(二)
    20-第二十课 动态调试代码方法(二).mp4  [153.4 MB]
00-夸克网盘免费领1T空间教程(新、老用户均可).pdf  [446.2 KB]

适合人群

  • 安卓开发爱好者
  • 逆向工程师
  • 安全研究人员

学习收获

掌握安卓逆向技术
学会Smali代码分析
提升安全防护能力

祝您学习愉快!

学有所成,前程似锦!