【万字】一文读懂Android APP抓包和反编译&frida脱壳&APP单/双向认证&Root隐藏绕过技巧
字数 2526 2025-11-21 12:09:30

Android APP抓包与逆向分析完全指南

0x1 前言

移动安全测试已成为渗透测试工程师必备技能,本文详细讲解Android APP抓包、反编译、frida脱壳、单/双向认证绕过及Root隐藏等核心技术。

0x2 APP抓包基础

一、抓包工具概述

常用抓包工具:Burpsuite、mitmproxy、Fiddle、Reqable(小黄鸟)
抓包方式:系统代理、AP热点抓包、透明代理

二、Android版本差异

  • Android < 7:证书可直接导入"用户证书"
  • Android ≥ 7:只信任"系统证书"(格式为xxxx.0)

三、Move Certificate模块

作用:将用户证书移动到系统证书
支持版本:Android 7-15
GitHub地址:https://github.com/ys1231/MoveCertificate

安装步骤

  1. 下载MoveCertificate-v1.5.5.zip
  2. 通过adb推送到手机:adb push MoveCertificate-v1.5.5.zip /sdcard/Download/
  3. Magisk中本地安装模块
  4. 重启设备生效

四、Magisk面具安装

推荐测试机:Google Pixel 3-4、小米8-10(Android 10-13)
安装方法

  1. 下载Magisk APK:https://github.com/topjohnwu/Magisk
  2. adb安装:adb install Magisk.apk

替代方案:狐狸面具(功能相同)

五、证书生成与安装

Burpsuit证书处理

# 转换格式
openssl x509 -inform DER -in cacert.der -out cacert.pem
# 获取hash值
hash=$(openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -n 1)
# 重命名
mv cacert.pem "${hash}.0"
# 推送证书
adb push "${hash}.0" /system/etc/security/cacerts/

Yakit证书处理

openssl x509 -inform PEM -subject_hash_old -in yakit证书.crt.pem
# 重命名为hash.0格式

证书存放路径/data/local/tmp/cert

六、抓包测试配置

  1. Burpsuite设置监听(如192.168.x.x:9090)
  2. 模拟器网络设置手动代理
  3. 导入证书后即可抓包

0x3 真机抓包实战

一、Reqable(小黄鸟)配置

官网:https://reqable.com/zh-CN/

证书处理

openssl x509 -in reqable-ca.crt -out reqable-ca.pem
openssl x509 -inform PEM -subject_hash_old -in reqable-ca.pem
# 重命名为hash.0格式

替代方案:直接使用Magisk安装Reqable证书模块

二、抓包流程

  1. 电脑端设置监听IP和端口
  2. 手机端扫码连接
  3. 开启增强模式抓包
  4. 流量转发到Burpsuite(二级代理)

0x4 小众代理工具Brook

一、工具介绍

特点:支持多平台、Socks5代理、UDP转发
GitHub:https://github.com/txthinking/brook

二、配置使用

  1. 下载Android APK
  2. 添加Socks5代理服务
  3. 设置与抓包工具相同的IP和端口

0x5 APP反编译与脱壳

一、APK查壳工具

工具下载:包含多种查壳工具的集成包
使用方法:拖入APK文件自动识别壳类型

二、静态反编译

APK结构分析

  • assets/:原生资源文件
  • res/:编译后的资源文件
  • lib/:SO库文件
  • AndroidManifest.xml:应用配置信息
  • classes.dex:可执行文件
  • resources.arsc:资源索引表

反编译步骤

  1. APK重命名为ZIP解压
  2. 使用dex2jar处理classes.dex:
cd dex-tools-2.1
sh d2j-dex2jar.sh classes.dex
  1. 使用jadx-gui查看反编译代码

三、静态脱壳 - BlackDex

支持版本:Android 5.0-12
特点:无需依赖环境,快速脱壳
使用:安装APK后选择目标应用脱壳,输出dex文件

四、动态脱壳 - Frida

环境配置

# 安装指定版本(兼容性最佳)
pip install frida==16.1.0
pip install frida-tools==12.1.3
pip install hexdump

服务端部署

  1. 查询手机架构:getprop ro.product.cpu.abi
  2. 下载对应frida-server
  3. 推送并执行:
adb push frida-server /data/local/tmp/
adb shell
chmod 777 /data/local/tmp/frida-server
./frida-server

脱壳命令

# 方法一:包名脱壳
frida-dexdump -U -f com.package.name
# 方法二:PID脱壳
frida-dexdump -U -p PID

0x6 单向认证绕过

一、LSPosed框架安装

作用:基于Xposed的模块化框架,支持Android 8.0+
安装:通过Magisk模块安装,重启后安装Manager APK

二、绕过插件

常用插件

  • TrustMeAlready.apk
  • JustTrustMe.apk
  • JustMePlush.apk
  • JustTrustMePP(增强版)

配置方法

  1. 安装插件APK
  2. LSPosed中启用并勾选目标应用
  3. 重启应用测试

0x7 双向认证绕过

一、识别特征

响应中出现"400 No required SSL certificate was sent"表明存在双向证书校验

二、r0capture工具

项目地址:https://github.com/r0ysue/r0capture
特点:通杀各种证书校验、支持多协议、无视加固

使用前提

  • Frida 16.1.0版本
  • 应用开启存储权限

操作流程

  1. 启动frida-server
  2. 运行脱壳脚本:
python r0capture.py -U -f com.package.name -v
  1. 导出证书(位置:/sdcard/Download/包名.p12)
  2. 密码:r0ysue

三、证书配置

Burpsuite导入

  1. Proxy设置 - SSL证书导入
  2. 选择导出的P12文件
  3. 设置密码r0ysue

Reqable导入

  1. SSL证书设置 - 客户端证书
  2. 导入P12文件避免证书混乱

0x8 Root检测绕过

一、Root检测原理

  • 检查系统文件(/system/bin/su)
  • 目录权限检测
  • 命令执行检测
  • 属性验证
  • 签名校验

二、隐藏方法

Magisk自带功能

  1. 开启"遵守排除列表"
  2. 配置"排除列表"勾选目标应用
  3. 重启生效

Shamiko模块

  1. 关闭"遵守排除列表"
  2. 安装Shamiko模块
  3. 配置排除列表
  4. 重启设备

注意:模拟器隐藏效果可能不理想,真机测试更佳

0x9 实战技巧总结

一、环境准备

  1. 推荐使用真机(Pixel系列最佳)
  2. 保持工具版本兼容性
  3. 备份重要证书和配置

二、故障排除

  1. 抓包失败:检查证书安装、代理设置
  2. 脱壳失败:确认Frida版本、应用权限
  3. 模块不生效:重启设备、检查勾选状态

三、进阶技巧

  1. 多工具协同使用(Reqable + Burpsuite)
  2. 脚本自动化处理重复任务
  3. 及时更新工具和插件版本

本指南涵盖了Android APP安全测试的核心技术栈,通过系统化的学习和实践,可有效提升移动安全测试能力。

Android APP抓包与逆向分析完全指南 0x1 前言 移动安全测试已成为渗透测试工程师必备技能,本文详细讲解Android APP抓包、反编译、frida脱壳、单/双向认证绕过及Root隐藏等核心技术。 0x2 APP抓包基础 一、抓包工具概述 常用抓包工具:Burpsuite、mitmproxy、Fiddle、Reqable(小黄鸟) 抓包方式:系统代理、AP热点抓包、透明代理 二、Android版本差异 Android < 7 :证书可直接导入"用户证书" Android ≥ 7 :只信任"系统证书"(格式为xxxx.0) 三、Move Certificate模块 作用 :将用户证书移动到系统证书 支持版本 :Android 7-15 GitHub地址 :https://github.com/ys1231/MoveCertificate 安装步骤 : 下载MoveCertificate-v1.5.5.zip 通过adb推送到手机: adb push MoveCertificate-v1.5.5.zip /sdcard/Download/ Magisk中本地安装模块 重启设备生效 四、Magisk面具安装 推荐测试机 :Google Pixel 3-4、小米8-10(Android 10-13) 安装方法 : 下载Magisk APK:https://github.com/topjohnwu/Magisk adb安装: adb install Magisk.apk 替代方案 :狐狸面具(功能相同) 五、证书生成与安装 Burpsuit证书处理 : Yakit证书处理 : 证书存放路径 : /data/local/tmp/cert 六、抓包测试配置 Burpsuite设置监听(如192.168.x.x:9090) 模拟器网络设置手动代理 导入证书后即可抓包 0x3 真机抓包实战 一、Reqable(小黄鸟)配置 官网 :https://reqable.com/zh-CN/ 证书处理 : 替代方案 :直接使用Magisk安装Reqable证书模块 二、抓包流程 电脑端设置监听IP和端口 手机端扫码连接 开启增强模式抓包 流量转发到Burpsuite(二级代理) 0x4 小众代理工具Brook 一、工具介绍 特点 :支持多平台、Socks5代理、UDP转发 GitHub :https://github.com/txthinking/brook 二、配置使用 下载Android APK 添加Socks5代理服务 设置与抓包工具相同的IP和端口 0x5 APP反编译与脱壳 一、APK查壳工具 工具下载 :包含多种查壳工具的集成包 使用方法 :拖入APK文件自动识别壳类型 二、静态反编译 APK结构分析 : assets/:原生资源文件 res/:编译后的资源文件 lib/:SO库文件 AndroidManifest.xml:应用配置信息 classes.dex:可执行文件 resources.arsc:资源索引表 反编译步骤 : APK重命名为ZIP解压 使用dex2jar处理classes.dex: 使用jadx-gui查看反编译代码 三、静态脱壳 - BlackDex 支持版本 :Android 5.0-12 特点 :无需依赖环境,快速脱壳 使用 :安装APK后选择目标应用脱壳,输出dex文件 四、动态脱壳 - Frida 环境配置 : 服务端部署 : 查询手机架构: getprop ro.product.cpu.abi 下载对应frida-server 推送并执行: 脱壳命令 : 0x6 单向认证绕过 一、LSPosed框架安装 作用 :基于Xposed的模块化框架,支持Android 8.0+ 安装 :通过Magisk模块安装,重启后安装Manager APK 二、绕过插件 常用插件 : TrustMeAlready.apk JustTrustMe.apk JustMePlush.apk JustTrustMePP(增强版) 配置方法 : 安装插件APK LSPosed中启用并勾选目标应用 重启应用测试 0x7 双向认证绕过 一、识别特征 响应中出现"400 No required SSL certificate was sent"表明存在双向证书校验 二、r0capture工具 项目地址 :https://github.com/r0ysue/r0capture 特点 :通杀各种证书校验、支持多协议、无视加固 使用前提 : Frida 16.1.0版本 应用开启存储权限 操作流程 : 启动frida-server 运行脱壳脚本: 导出证书(位置:/sdcard/Download/包名.p12) 密码:r0ysue 三、证书配置 Burpsuite导入 : Proxy设置 - SSL证书导入 选择导出的P12文件 设置密码r0ysue Reqable导入 : SSL证书设置 - 客户端证书 导入P12文件避免证书混乱 0x8 Root检测绕过 一、Root检测原理 检查系统文件(/system/bin/su) 目录权限检测 命令执行检测 属性验证 签名校验 二、隐藏方法 Magisk自带功能 : 开启"遵守排除列表" 配置"排除列表"勾选目标应用 重启生效 Shamiko模块 : 关闭"遵守排除列表" 安装Shamiko模块 配置排除列表 重启设备 注意 :模拟器隐藏效果可能不理想,真机测试更佳 0x9 实战技巧总结 一、环境准备 推荐使用真机(Pixel系列最佳) 保持工具版本兼容性 备份重要证书和配置 二、故障排除 抓包失败:检查证书安装、代理设置 脱壳失败:确认Frida版本、应用权限 模块不生效:重启设备、检查勾选状态 三、进阶技巧 多工具协同使用(Reqable + Burpsuite) 脚本自动化处理重复任务 及时更新工具和插件版本 本指南涵盖了Android APP安全测试的核心技术栈,通过系统化的学习和实践,可有效提升移动安全测试能力。