乐于分享
好东西不私藏

[App逆向]环境搭建上篇——抓取apk https包

[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手机模拟器)

如果真实手机的可以忽略此步骤。

1. 从官网下载并安装 Android Studio

官网地址:https://developer.android.google.cn/studio?hl=zh-cn

  1. 2. 安装Android手机镜像
  • • 打开 Android Studio → SDK Manager → SDK Platforms 标签页。
• 勾选需要安装的Android镜像,点击 Apply 下载镜像。

  1. 3. 通过模拟器创建Android手机
• 打开 Device Manager(设备管理器),点击 Create device。

• 选择一款Android系列设备(尽量选择较低版本的Android,如 Pixel 7),点击 Next。

  • • 在系统镜像列表中,选择刚刚下载的 Android 16 镜像(比如我这里是Android16),点击 Next。
• 根据需要配置 AVD 名称,Services选择Google APIs,然后点击 Finish。

拓展:Services 类型说明

    • • AOSP:纯开源系统,无 Google 服务,可 Root。
    • • Google APIs:包含 Google 服务框架,使用测试密钥,可 Root(推荐)。
    • • Google Play Store:包含完整 Google 服务和 Play 商店,使用生产密钥,默认无法 Root(需额外工具)。本教程后续步骤均基于 Google APIs 镜像。
4. 点击启动模拟器

PS:如果不习惯英文的,可通过下面方式将语言改为中文

    • • 主页面上划打开Setting
• 搜索Language,进入App Languages

• 点击System Languages

• 点击添加中文

效果:

2. 安装Charles(抓包神器)

1. 下载:从 官网 下载对应 macOS 版本的 Charles 安装包并安装。首次运行会提示试用,可继续使用(若需长期使用请购买正版)。

官方网址:https://www.charlesproxy.com/

  1. 2. 激活Charles可以免费试用一段时间,如果需要长期使用需要付费,可以使用下面的激活网址,有条件的也建议大家使用正版。

    激活网站地址:https://www.zzzmode.com/mytools/charles/

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

• 确保 HTTP Proxy 端口为 8888(默认),勾选 Enable transparent HTTP proxying。

  1. 4. 配置 Android 模拟器代理
• 在模拟器上,主页面下滑,打开网络设置

• 点击设置,然后点击右上方编辑按钮

  • • 选择高级选项,然后点击手动配置代理

  • • 输入Charles本地IP(其实就是自己本地电脑的IP)和监听的端口(默认8888)

    不知道自己Charles本地IP的,可以点击Charles-Help-Local IP Address查看

  1. 5. 验证效果首先Android手机通过Chrome浏览器访问:http://httpbin.org/get ,然后查看Charles是否有抓到对应包。

    不过此时我们只能抓取http的包,还无法抓取https的包,因为没有配置Charles 根证书。再后面开启Root权限后,会告诉大家如何配置https证书并将用户证书移动到系统证书下,让我们可以抓取https包。

二、开启Root权限(Magisk+补丁)

Android 高版本模拟器默认无 root,需要手动安装 Magisk 来获取 root,为后续实现系统证书的挂载做好准备。

1. 安装Magisk

  1. 1. 访问Github直接下载apk

    下载地址:https://github.com/topjohnwu/Magisk/releases无法科学上网的也可通过下面地址下载:https://magiskcn.com/magisk-download.html

  2. 2. 直接将apk拖动到Android模拟器中实现安装,安装后,打开,首次进入会提示需要修复环境,然后重启设备,点击确认即可

  3. 3. 重启后会发现Magisk下方的超级用户模块是未解锁状态,下面会演示打补丁方式获取Root权限

2. 镜像打补丁(获取永久Root)

再次进入Magisk之后,会Root模块未打开,需要对镜像打补丁或者手动通过命令临时开启Root。这里我们演示打补丁的方式。

补丁方式原理:将 Magisk 直接集成到系统镜像中。这是一种永久性 Root 方案,可以让模拟器每次启动时都自动获得 Magisk 支持,无需每次都通过命令行加 -writable-system -selinux permissive 参数启动。

  1. 1. 关闭运行中的Android模拟器
  2. 2. 从 Magisk 源码中获取 build.py 脚本。我们只提取这个脚本,无需下载完整源码。

脚本地址:https://github.com/topjohnwu/Magisk/blob/master/build.py

  1. 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/
  1. 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
  1. 5. 重启模拟器,再次进入可以看到超级用户模块已经解锁(已经Root成功)

三、Charles根证书配置

1. 电脑信任证书

  1. 1. 首先开启Charles https抓包:Proxy – SSL Proxying Settings,添加ssl 抓包规则 *:*

  2. 2. 然后保存Charles根证书

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

2. 手机安装证书

  1. 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. 1. 从 GitHub releases 下载 MoveCertificate-xxx.zip。
下载地址:https://github.com/ys1231/MoveCertificate/releases

  1. 2. 推送到Android模拟器
adb push ~/Downloads/MoveCertificate-v1.5.6.zip /sdcard/

3. Android模拟器打开 Magisk 应用,点击 右下角 模块 → 从本地安装,选择该 zip,安装后重启。

安装成功后,该模块会在每次启动时自动将用户证书复制到系统目录,无需手动操作

  1. 4. 验证效果:设置-证书管理应用-可信凭据-系统证书,观察是否存在Charles证书

  2. 5. 验证https抓包

注意:因为手机重启了,所以需要重新配置下代理。同时需要保证手机和电脑在同一wifi下。

PS:如果有时本地电脑上的包太多,只想抓取手机模拟器的包,取消勾选macOS Proxy即可。Windows大同小异

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

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » [App逆向]环境搭建上篇——抓取apk https包

猜你喜欢

  • 暂无文章