[App逆向]环境搭建上篇——抓取apk https包
[App逆向]环境搭建上篇——抓取apk https包
免责声明:本教程仅供学习和研究使用,请勿用于任何非法用途。对他人应用进行逆向分析时,应遵守相关法律法规,尊重开发者权益,未经授权不得进行恶意篡改或侵犯用户隐私。

Android逆向工程是指通过分析APK文件的代码、资源、网络通信等,理解其内部实现逻辑,甚至修改其行为的技术。常见的应用场景包括:协议分析、去广告、漏洞挖掘、竞品研究等。本教程将大家搭建App逆向环境,抓取手机apk的https包。
我本地环境是Mac M3芯片,没有合适的模拟器,所以这里我采用Android studio的模拟器,大家如果有条件的也可以通过真实手机,或者Windows也可以安装雷电、夜神等模拟器。
• 宿主机:macOS / Windows / Linux • 模拟器:Android Studio 自带 AVD(Android Virtual Device,模拟真实Android手机),以及adb( Android Debug Bridge,电脑调试手机) • 目标 Android 版本:Android 16 (API 36) arm64 • 抓包工具:Charles Proxy • 必要工具:
• Magisk 程序 • MoveCertificate Magisk模块 PS:逆向分析需要本地先安装有java、python环境,这些安装配置都很简单,网上很多教程,这里就不赘述。mac用户可通过brew直接安装。
一、环境搭建
1. 安装Android studio(AVD手机模拟器)
如果真实手机的可以忽略此步骤。
官网地址:https://developer.android.google.cn/studio?hl=zh-cn

-
2. 安装Android手机镜像
-
• 打开 Android Studio → SDK Manager → SDK Platforms 标签页。

-
3. 通过模拟器创建Android手机


-
• 在系统镜像列表中,选择刚刚下载的 Android 16 镜像(比如我这里是Android16),点击 Next。

拓展:Services 类型说明
-
• AOSP:纯开源系统,无 Google 服务,可 Root。 -
• Google APIs:包含 Google 服务框架,使用测试密钥,可 Root(推荐)。 -
• Google Play Store:包含完整 Google 服务和 Play 商店,使用生产密钥,默认无法 Root(需额外工具)。本教程后续步骤均基于 Google APIs 镜像。


PS:如果不习惯英文的,可通过下面方式将语言改为中文
-
• 主页面上划打开Setting




效果:

2. 安装Charles(抓包神器)
官方网址:https://www.charlesproxy.com/


-
2. 激活Charles可以免费试用一段时间,如果需要长期使用需要付费,可以使用下面的激活网址,有条件的也建议大家使用正版。 激活网站地址:https://www.zzzmode.com/mytools/charles/

-
• 打开安装好的Charles,菜单栏 Help->Register Charles 弹出注册的窗口 -
• 填入Registered Name和生成的license key,点击 Register,即可长期使用了
-
3. 配置http代理


-
4. 配置 Android 模拟器代理



-
• 选择高级选项,然后点击手动配置代理 
-
• 输入Charles本地IP(其实就是自己本地电脑的IP)和监听的端口(默认8888) 
不知道自己Charles本地IP的,可以点击Charles-Help-Local IP Address查看 
-
5. 验证效果首先Android手机通过Chrome浏览器访问:http://httpbin.org/get ,然后查看Charles是否有抓到对应包。 
不过此时我们只能抓取http的包,还无法抓取https的包,因为没有配置Charles 根证书。再后面开启Root权限后,会告诉大家如何配置https证书并将用户证书移动到系统证书下,让我们可以抓取https包。 
二、开启Root权限(Magisk+补丁)
Android 高版本模拟器默认无 root,需要手动安装 Magisk 来获取 root,为后续实现系统证书的挂载做好准备。
1. 安装Magisk
-
1. 访问Github直接下载apk 下载地址:https://github.com/topjohnwu/Magisk/releases无法科学上网的也可通过下面地址下载:https://magiskcn.com/magisk-download.html 
-
2. 直接将apk拖动到Android模拟器中实现安装,安装后,打开,首次进入会提示需要修复环境,然后重启设备,点击确认即可 
-
3. 重启后会发现Magisk下方的超级用户模块是未解锁状态,下面会演示打补丁方式获取Root权限
2. 镜像打补丁(获取永久Root)
再次进入Magisk之后,会Root模块未打开,需要对镜像打补丁或者手动通过命令临时开启Root。这里我们演示打补丁的方式。
补丁方式原理:将 Magisk 直接集成到系统镜像中。这是一种永久性 Root 方案,可以让模拟器每次启动时都自动获得 Magisk 支持,无需每次都通过命令行加 -writable-system -selinux permissive 参数启动。
-
1. 关闭运行中的Android模拟器 -
2. 从 Magisk 源码中获取 build.py 脚本。我们只提取这个脚本,无需下载完整源码。
脚本地址:https://github.com/topjohnwu/Magisk/blob/master/build.py
-
3. 定位镜像目录
Android SDK 系统镜像通常位于:
我们需要的文件是 ramdisk.img,就在这个目录下。
-
• macOS:~/Library/Android/sdk/system-images/android-36/google_apis/arm64-v8a/ -
• Windows:C:\Users\用户名\AppData\Local\Android\sdk\system-images\android-36\google_apis\arm64-v8a\ -
• Linux:~/Android/Sdk/system-images/android-36/google_apis/arm64-v8a/ -
4. 终端执行补丁命令: 注意自己的Android模拟器的镜像名:android-36/google_apis/arm64-v8a 
# 对镜像打补丁./build.py avd_patch --apk ../Downloads/Magisk-v30.7.apk /Users/ziyi/Library/Android/sdk/system-images/android-36/google_apis/arm64-v8a/ramdisk.img ramdisk_patched.img# 备份原文件(以防后续需要原来的镜像文件)cp ramdisk.img ramdisk.img.backup# 拷贝覆盖之前的老镜像cp ramdisk_patched.img /Users/ziyi/Library/Android/sdk/system-images/android-36/google_apis/arm64-v8a/ramdisk.img
-
5. 重启模拟器,再次进入可以看到超级用户模块已经解锁(已经Root成功) 
三、Charles根证书配置
1. 电脑信任证书
-
1. 首先开启Charles https抓包:Proxy – SSL Proxying Settings,添加ssl 抓包规则 *:*
-
2. 然后保存Charles根证书 

-
3. 双击证书点击安装,点击信任此证书 

2. 手机安装证书
-
1. 将Charles证书推动到Android手机目录下
# 1. 查看adb是否识别到Android手机adb devices# 执行结果:List of devices attachedemulator-5554 device# 2. 将Charles根证书推送到模拟器## Charles根证书位置:~/Desktop/charles-ssl-proxying-certificate.pem## 推送Android手机目标位置:/sdcardadb push ~/Desktop/charles-ssl-proxying-certificate.pem /sdcard

2. 安装证书:设置-搜索框输入:证书 – CA证书

3. 点击CA证书,选择仍然安装,然后找到自己上传到手机上的证书,点击证书进行安装



4. 看到页面提示”已安装CA证书”后,在设置页面找到”证书管理应用”,点击可信凭据,找到用户模块,即可看到哦我们开始安装的Charles证书


3. 提升为系统证书
不过有安装为用户证书依然无法抓取https包,我们需要将用户证书提升为系统证书。
这里通常有两种方案:我们这里采用方式二方式一:计算好签名,手动移动到/system/etc/security/cacerts/目录下方式二:使用 MoveCertificate Magisk 模块(自动移动,推荐)
-
1. 从 GitHub releases 下载 MoveCertificate-xxx.zip。
下载地址:https://github.com/ys1231/MoveCertificate/releases
-
2. 推送到Android模拟器
adb push ~/Downloads/MoveCertificate-v1.5.6.zip /sdcard/

3. Android模拟器打开 Magisk 应用,点击 右下角 模块 → 从本地安装,选择该 zip,安装后重启。
安装成功后,该模块会在每次启动时自动将用户证书复制到系统目录,无需手动操作

-
4. 验证效果:设置-证书管理应用-可信凭据-系统证书,观察是否存在Charles证书 
-
5. 验证https抓包
注意:因为手机重启了,所以需要重新配置下代理。同时需要保证手机和电脑在同一wifi下。
PS:如果有时本地电脑上的包太多,只想抓取手机模拟器的包,取消勾选macOS Proxy即可。Windows大同小异

6. 验证对某书apk抓取https包

夜雨聆风

