App逆向初探
📚 本文将带你从「静态看 APK」到「动态改行为」,入门移动端安全分析与爬虫前置技能。
课程目标
花 3 分钟明确本次学习的可落地成果:
- 30 秒快速拆解 APK 核心组成
- 1 分钟选定场景,启动反编译工具
- 3 类 Frida Hook 脚本(SSL/Root/通用函数),复制粘贴即可用
- 加密 App 抓包 + 还原签名逻辑的完整 4 步流程
1. APK 解析基础
1.1 APK 核心结构「先拆再看」
很多新手以为 APK 是「特殊的二进制文件」,其实它就是加了签名的标准 ZIP 压缩包。直接用解压工具或 Python 原生库就能扫描:
解压后最常见到的 7 个核心目录 / 文件:
新手友好的「一键扫描脚本」(Python 原生)
无需安装额外工具,快速定位敏感文件:
1.2 反编译三剑客「按需选用」
选对工具能节省 90% 的时间。按推荐优先级排序:
jadx-gui 核心使用(超简单)
- 下载:jadx GitHub Release 页,选择对应系统的压缩包
- 运行:
- 搜索技巧:顶部搜索栏选择「Method Name」「Class Name」「Text」,输入
sign/encrypt/OkHttpClient快速定位
2. Hook 技术之神:Frida
Frida 是无需重打包、无需 Root(可选)、跨平台的「动态行为注入工具」——简单说就是在 App 运行时,把一段 JS 代码塞进去,修改它的函数逻辑。
2.1 5 分钟快速搭建环境
PC 端(已装好 Python3+)
设备端(以 Android 真机为例,Root/非 Root 都行,新手推荐 Root 机)
- 查看设备 ABI:终端执行
adb shell getprop ro.product.cpu.abi - 下载对应版本的 frida-server:frida GitHub Release 页(文件名格式:
frida-server-版本号-android-ABI) - 推送并启动:
- 验证连接:
2.2 复制粘贴即可用的 3 类 Frida Hook 脚本
脚本 1:通用 Java 方法 Hook(打印入参/返回值/调用栈)
快速定位加密函数的输入输出和调用来源,新手必备。
运行方式:
脚本 2:SSL Pinning 绕过(通用版,覆盖 90%+ 场景)
抓包前的第一道坎。这份脚本覆盖了 OkHttp3、Android 7+ 系统证书、WebView 的 Pinning:
脚本 3:Root 检测绕过(通用基础版)
抓包 + Hook 前的第二道坎。这份脚本覆盖了常见的文件检查、系统属性检查、Build 字段检查:
3. 实践思路:4 步快速分析加密 App
假设目标 App 有 sign 签名参数和 SSL Pinning,结合上面的工具和脚本,完整流程如下:
- 静态定位:用 jadx-gui 打开 APK,搜索
sign/encrypt/OkHttpClient,定位SignUtils.getSign()和网络请求逻辑 - 环境准备:配置 Burp Suite 代理,将 CA 证书安装到设备用户证书目录
- 动态启动:从 Frida 启动 App 并同时注入双脚本:
- 还原逻辑:操作 App 触发请求,Burp 抓包查看 sign 的实际值,Frida 打印
getSign的入参,最后手动编写 Python 脚本还原签名逻辑
4. 合法使用声明
本文内容仅用于合法的安全研究、自有 App 的漏洞排查、教学演示,不得用于未经授权的 App 逆向、数据窃取、商业盈利等非法用途。违反者需自行承担所有法律责任。
本章总结
- 静态分析:APK 是 ZIP 压缩包,jadx-gui 是快速查看 Java 代码的首选
- 动态分析:Frida 无需重打包,通用脚本覆盖 90%+ 入门场景
- 入门实践:先抓包(绕过 SSL),再 Hook(查看入参与返回值),最后还原签名逻辑
后续可以深入学习:smali 语法修改、so 层 Hook(Frida Interceptor)、Frida 高级隐藏(对抗反调试)。

