针对启用SSL pinning与Safetynet的APP,是否仍可拦截其HTTPS流量?
可行配置方案
目前针对同时配置了Root检测、Safetynet、证书锁定、代理感知的高防护应用(如麦当劳官方APP),有3种经过验证的可行方案,均可以做到不触发应用异常:
方案1:LSPosed + 定制化Unpinning模块(优先推荐)
这个方案可以完全避开常规EdXposed模块的兼容性问题:
- 先完成基础环境配置:Root设备后安装Magisk,开启对应APP的Magisk Hide,刷入
Universal Safetynet Fix模块通过Safetynet校验,将mitmproxy/Charles的根证书移动到/system/etc/security/cacerts/目录下,配置iptables透明代理规则避免APP感知到代理。 - 不要使用通用的TrustmeAlready、旧版SSLUnpinning模块,改用针对目标APP单独生效的Unpinning方案:用
Objection先dump出目标APP的证书锁定逻辑位置,再用LSPosed的API写轻量级模块,只Hook目标APP的证书校验函数,不对全局系统做修改,不会触发APP的Xposed检测逻辑。 - 如果不想自己写模块,可以直接使用
SSLUnpinning 2.0模块,该模块支持针对单个应用开启Unpinning,默认不会注入系统进程,大部分高防护应用都不会检测到。
方案2:Frida + Magisk Hide 共存方案
常规Frida使用需要关闭Magisk Hide的问题可以通过修改Frida服务端配置解决:
- 下载Frida服务端后,不要直接运行,先对服务端二进制文件做重命名、字符串混淆处理,替换默认的
frida-server进程名、默认端口,避免APP扫描到Frida特征。 - 配置Magisk Hide的隐藏列表,除了目标APP外,额外把Frida进程、frida相关的文件路径加入隐藏名单,不需要关闭目标APP的Magisk Hide,就能直接运行通用SSL Unpinning脚本。
方案3:无Root虚拟机方案
如果不想Root物理设备,可以用虚拟机方案:
- 安装
VirtualXposed或VMOS Pro,在虚拟机内配置Root环境、对应的Magisk模块、代理证书,目标APP安装在虚拟机内运行,所有流量从虚拟机层走代理,不会影响物理机环境,也不会触发物理机层面的检测。
注意事项
- 不要使用系统全局代理配置,必须用透明代理模式,避免APP检测到系统代理设置。
- 所有模块只针对目标APP单独开启,不要全局启用,减少被检测到的概率。
内容的提问来源于stack exchange,提问作者Niya
相关产品推荐
相关产品推荐

