1. 项目概述为什么我们需要在移动端抓包并绕过SSL锁定在移动应用开发、安全测试或是日常的逆向分析工作中抓包是一个绕不开的核心技能。无论是想分析某个App的网络请求逻辑、调试自己开发的API接口还是排查线上用户反馈的“网络错误”抓包工具都能让你清晰地看到设备与服务器之间到底在“聊”些什么。Fiddler作为一款经典的HTTP/HTTPS调试代理工具因其强大的功能、直观的界面和免费的特性成为了众多开发者和测试人员的首选。然而随着移动应用安全意识的提升SSL证书锁定SSL Pinning技术被广泛应用。简单来说这项技术就像给你的App和服务器之间的通信上了一把“私锁”。App内置了服务器的“真钥匙”证书或公钥在建立HTTPS连接时它会比对Fiddler这类中间人代理提供的“钥匙”。一旦发现钥匙不对即证书不匹配就会立刻中断连接让你抓包失败。这层保护使得直接使用Fiddler抓取现代App的HTTPS流量变得异常困难尤其是在安卓高版本和iOS系统上。因此一个完整的“Fiddler抓包绕过SSL证书锁定”方案就成为了移动端网络分析工作流中的关键一环。它不仅仅是安装一个软件、配置一个代理那么简单更是一场与系统安全机制和App防护策略的“博弈”。接下来我将基于多年的实战经验为你拆解从环境搭建、证书安装到绕过锁定的完整流程涵盖安卓与iOS两大平台并分享那些官方文档里不会写的“踩坑”心得。2. 核心思路与准备工作搭建可靠的中间人代理环境在开始具体操作前我们必须理解整个过程的底层逻辑中间人攻击Man-in-the-Middle, MITM。Fiddler在这里扮演的就是“中间人”的角色。你的手机将所有网络流量发送给FiddlerFiddler解密、查看或修改后再转发给真正的目标服务器反之亦然。要实现这一点需要三个核心条件网络可达手机和运行Fiddler的电脑必须在同一局域网下并能相互通信。信任代理手机需要信任Fiddler颁发的“假”证书否则会提示连接不安全。突破锁定对于启用了SSL Pinning的App需要设法让它接受Fiddler的证书或者让它无法校验证书。2.1 环境准备清单工欲善其事必先利其器。以下是开始前你需要准备好的PC端运行Fiddler操作系统WindowsFiddler Classic原生支持或 macOS/Linux可通过Wine或虚拟机运行或考虑使用Fiddler Everywhere。Fiddler Classic从官网或可靠渠道下载安装。本文以Windows下的Fiddler Classic v5.0为例。网络确保电脑的防火墙允许Fiddler监听端口默认为8888。移动端被抓包设备安卓设备推荐使用真机。如果需要模拟器夜神模拟器、雷电模拟器的兼容性较好且通常自带Root权限方便后续操作。不推荐使用Android Studio自带的AVD进行抓包网络桥接配置复杂且性能一般。iOS设备iPhone或iPad。需要一台已越狱的设备或者使用一些仅在特定条件下有效的方法后文会详述。网络环境将电脑和手机连接到同一个Wi-Fi网络。这是最简单稳定的方式。记录下电脑在当前Wi-Fi下的局域网IP地址如192.168.1.105。在Windows命令提示符中输入ipconfig查看“无线局域网适配器 WLAN”下的IPv4地址。2.2 Fiddler基础配置开启HTTPS解密与远程连接安装好Fiddler后第一次运行需要进行关键配置否则只能抓到HTTP流量对HTTPS束手无策。启用HTTPS解密打开Fiddler点击菜单栏的Tools - Options。切换到HTTPS选项卡。勾选最上方的“Decrypt HTTPS traffic”。这时会弹出几个警告窗口大致意思是Fiddler要安装自己的根证书到系统以便解密流量一律点击“是”或“确定”。在“Actions”按钮下点击“Trust Root Certificate”将Fiddler的根证书安装到电脑的“受信任的根证书颁发机构”存储区。这一步至关重要否则浏览器也会报证书错误。建议同时勾选“Ignore server certificate errors”避免一些服务器证书配置问题导致抓包中断。允许远程计算机连接仍在Tools - Options中切换到Connections选项卡。勾选“Allow remote computers to connect”。记住Fiddler listens on port后面的端口号默认是8888。如果该端口被占用可以修改为其他未被使用的端口如8889。配置完成后务必重启Fiddler以使设置生效。注意完成此步骤后你的电脑已经成为了一个“可信的”中间人代理。Fiddler会自动生成一个唯一的根证书FiddlerRoot所有后续手机端需要安装的正是这个证书的派生证书。3. 安卓平台抓包与绕过SSL锁定全流程安卓平台的情况相对复杂不同系统版本尤其是Android 7.0为分水岭和手机厂商的定制化带来了诸多挑战。3.1 基础代理设置与证书安装针对未启用SSL Pinning的App对于大多数普通App或未严格实施证书锁定的App以下步骤足以完成抓包。手机连接代理在手机上进入当前Wi-Fi网络的详细设置。将代理设置为“手动”。主机名填写你电脑的局域网IP如192.168.1.105。端口填写Fiddler的监听端口如8888。保存设置。安装Fiddler证书到手机在手机浏览器中访问http://你的电脑IP:8888例如http://192.168.1.105:8888。你会看到Fiddler的欢迎页面点击页面中的“FiddlerRoot certificate”链接下载证书文件。对于Android 7.0以下版本下载后直接安装系统会提示你为证书命名如“FiddlerRoot”然后完成安装。你可以在“设置 - 安全 - 受信任的凭据 - 用户”中看到它。对于Android 7.0及以上版本这是第一个大坑。由于系统安全策略变更用户安装的证书默认不再被App信任。你需要将证书安装到系统证书区。这通常需要Root权限。有Root权限的手机下载的证书文件是.cer格式。你需要将其转换为.pem或.crt格式并重命名为特定的哈希名然后放入/system/etc/security/cacerts/目录并设置权限为644。这个过程较为繁琐建议使用Magisk模块如“Move Certificates”来一键完成。无Root权限的手机可以尝试将证书安装为用户证书然后针对目标App在其网络安全配置中声明信任用户证书。但这需要App的源码或能修改其安装包对大多数情况不适用。此时你应该已经可以在Fiddler中看到手机产生的HTTP和部分HTTPS流量了。如果HTTPS流量显示为“Tunnel to”或者App报网络错误那很可能就是遇到了SSL证书锁定。3.2 绕过SSL证书锁定的实战方案当基础方法失效时我们就需要祭出“绕过大法”。这里介绍几种主流且经过验证的方法。方案一使用Xposed/EdXposed模块经典有效需Root这是曾经最主流、最通用的方案其原理是通过Hook系统或App的证书验证相关API使其总是返回“验证成功”。适用环境已Root的安卓手机并安装了Xposed框架或它的衍生版本EdXposed、LSPosed。推荐模块TrustMeAlready名气最大效果很好。它主要Hook了安卓的TrustManager和CertificatePinnerOkHttp库的锁定机制。SSLUnpinning功能类似也是一个经典选择。操作步骤在Xposed管理器如EdXposed Manager中下载安装对应模块。启用模块并勾选需要绕过证书锁定的目标App。重启手机或目标App。理论上此时再打开Fiddler就能抓到该App的HTTPS明文流量了。实操心得这种方法对大多数使用系统API或流行网络库如OkHttp的App有效。但对于一些使用自定义SSL验证、或将证书公钥硬编码在Native层C/C代码的App可能仍然无效。在Android 11及以上版本由于系统对Hook框架的检测和限制更严格可能需要更复杂的隐藏Root和Xposed的措施。方案二使用Frida脚本进行动态Hook灵活强大需一定技术基础Frida是一个动态代码插桩工具功能比Xposed更底层、更灵活。你可以编写或使用现成的脚本来在内存中修改App的证书验证逻辑。适用环境手机端安装frida-server电脑端使用Python frida工具包。手机最好有Root权限。操作流程在电脑上安装Python和fridapip install frida-tools。根据手机CPU架构从Frida官网下载对应的frida-server推送到手机并运行。编写或寻找针对证书验证函数的Frida脚本。网上有大量开源脚本例如针对java.security.cert.X509Certificate.verify或OkHttp的CertificatePinner.check方法的Hook脚本。在电脑上运行命令frida -U -f com.target.app -l bypass_ssl_pinning.js即可在App启动时注入脚本。注意事项Frida功能强大但学习成本稍高。一些加固的App会检测Frida的运行导致注入失败或App闪退需要进行反调试对抗。这是一种动态方案每次分析都需要连接电脑执行脚本。方案三修改App安装包一劳永逸但操作复杂直接修改APK文件移除或修改其证书锁定相关的代码或配置然后重新签名安装。常用工具Apktool反编译/回编译、dex2jar/jadx查看Java代码、Keytool/Jarsigner签名。常见修改点网络安全配置文件查找res/xml/network_security_config.xml文件修改其中的pin-set或将domain-config的cleartextTrafficPermitted设置为true仅对HTTP有效对HTTPS Pinning无效需删除pin。反编译Smali代码搜索CertificatePinner、TrustManager、X509TrustManager等关键词找到验证逻辑将其修改为直接return或跳过验证。Native层修改如果验证在so库中则需要使用IDA Pro等工具分析修改so文件难度极大。核心痛点操作繁琐需要对安卓逆向有一定了解。很多商业App都进行了加固直接反编译会失败需要先脱壳。修改后需要重新签名而很多App有签名校验修改后无法运行又需要先绕过签名校验。这变成了“套娃”问题。方案四使用虚拟环境/沙箱免Root新思路这是近年来比较流行的免Root方案代表工具有VirtualXposed、太极等。它们创建一个虚拟的安卓环境在这个环境中可以安装Xposed模块而无需真实Root系统。优点不需要解锁Bootloader、刷机获取Root避免了银行类App检测Root导致无法运行的问题。缺点并非所有App都能完美运行在虚拟环境中可能存在兼容性问题。性能可能有一定损耗。操作步骤比直接Root手机安装Xposed要多几步。个人经验总结对于安卓抓包我通常会准备一台专门用于测试的、已Root且安装了EdXposed和Magisk的旧手机。Magisk本身可以隐藏Root配合Shamiko等模块可以更好地隐藏Magisk自身和Xposed以绕过一些App的强力检测。在这台手机上安装TrustMeAlready模块能解决90%以上App的抓包问题。对于剩下的“硬骨头”再考虑结合Frida进行动态分析。这是目前兼顾效率和成功率的组合方案。4. iOS平台抓包与绕过SSL锁定全流程iOS系统以其封闭性和统一性著称这给抓包带来了不同的挑战和相对统一的解决方案。核心前提是设备必须越狱。虽然存在一些针对特定版本的非越狱方法如使用描述文件安装自签名证书并信任但对于启用了SSL Pinning的App在非越狱环境下绕过几乎是不可能的。4.1 基础代理设置与证书安装iOS连接代理与安卓类似进入iPhone的“设置 - 无线局域网”点击当前连接的Wi-Fi右侧的“i”图标滑到最下面选择“配置代理 - 手动”填入电脑IP和Fiddler端口。安装证书用iPhone的Safari浏览器访问http://电脑IP:8888下载Fiddler证书。下载完成后进入“设置 - 通用 - VPN与设备管理”或“描述文件”找到下载的证书点击安装。安装后还需要进入“设置 - 通用 - 关于本机 - 证书信任设置”找到刚刚安装的Fiddler根证书并完全信任它。这一步必不可少否则HTTPS流量无法解密。完成以上步骤后Safari浏览器的流量、以及一些未启用SSL Pinning的App的流量应该就能在Fiddler中看到了。4.2 绕过iOS的SSL证书锁定在越狱的iOS设备上我们拥有系统级权限可以安装各种强大的越狱插件Tweaks来全局或针对性地绕过证书锁定。方案一使用Cydia Substrate或libhooker插件最主流越狱后默认会安装包管理工具Cydia或Sileo。我们可以从中搜索安装以下插件SSL Kill Switch 2这是iOS平台上最著名的SSL Pinning禁用工具。它通过Hook iOS系统的安全传输层SecureTransport等底层的证书验证函数来全局禁用证书锁定。安装后在设置中启用即可对大多数App效果显著。AppStore这个插件主要用于降级安装App但有时旧版本App的证书锁定可能更弱或没有间接解决问题。Flex 3一个强大的补丁制作工具。你可以在Flex的云仓库中搜索目标App看是否有其他用户分享了已制作好的、用于禁用SSL Pinning的补丁Patch。你也可以自己分析App找到验证函数并制作补丁。方案二使用Frida跨平台统一与安卓类似Frida同样可以在越狱的iOS设备上大显身手。由于iOS系统统一针对系统API的Frida脚本通用性更强。在Cydia中添加Frida源https://build.frida.re然后安装Frida。在电脑上同样使用frida-tools。运行命令连接越狱设备注入SSL绕过脚本。网上有成熟的针对iOS的通用脚本如ios-ssl-bypass。方案三手动导入系统证书一劳永逸这是比“完全信任”用户证书更彻底的方法。越狱后我们可以通过Filza等文件管理器将Fiddler的根证书需要转换为.pem格式直接放入iOS的系统证书目录/etc/ssl/certs/或/var/Keychains/中并设置正确的权限。这样系统会将其视为真正的受信任根证书几乎所有App都会买账。但操作涉及系统文件风险较高建议操作前备份。iOS抓包心得对于iOS我的首选方案永远是“越狱 SSL Kill Switch 2”。这个组合简单粗暴有效性极高。在越狱环境下整个系统的控制权在你手中很多问题都有统一的解决方案。如果SSL Kill Switch 2对某个特定App无效我会接着使用Frida进行更精细化的Hook。需要提醒的是iOS越狱随着系统更新其工具和兼容性一直在变化在进行越狱前务必确认你的设备型号和iOS版本是否有成熟的、稳定的越狱方案。5. 高阶技巧与深度问题排查实录即使按照上述流程操作在实际抓包过程中你仍可能遇到各种“诡异”的问题。下面分享一些高阶技巧和常见问题的排查思路。5.1 Fiddler过滤与会话处理技巧当所有流量都经过Fiddler时会话列表可能会非常杂乱快速定位目标请求是关键。使用Filters过滤器在Fiddler右侧的“Filters”标签页勾选“Use Filters”。可以按进程Process、主机Host、请求头/内容等条件过滤。例如只想看某个域名的请求就在“Hosts”区域选择“Show only the following Hosts”并填入域名如*.example.com。关注状态码与图标200成功。304未修改缓存。404未找到。500服务器内部错误。Tunnel to...这是一个HTTPS隧道说明Fiddler只建立了连接但未能解密内容。这通常是证书问题或SSL Pinning导致的。使用“Any Process”拖拽工具Fiddler左上角有一个“Any Process”的瞄准镜图标将其拖拽到电脑上任意窗口如浏览器、某个桌面应用可以立即过滤出只属于该进程的流量这个功能极其好用。5.2 抓不到包或全是TUNNEL的深度排查这是最常见的问题可以按照以下清单逐步排查检查代理设置确认手机Wi-Fi代理的IP和端口绝对正确。电脑IP是否变更可以尝试在手机浏览器访问http://电脑IP:8888看是否能打开Fiddler页面。检查防火墙临时关闭电脑的Windows Defender防火墙和任何第三方安全软件测试是否是防火墙阻止了8888端口的入站连接。确认证书已安装且受信安卓进入“设置-安全-加密与凭据-受信任的凭据-用户”查看是否存在Fiddler的证书。对于高版本安卓确认是否已通过Root手段安装到系统区。iOS务必在“证书信任设置”中启用完全信任。重启大法重启Fiddler重启手机有时能解决一些玄学问题。检查App特性是否使用了HTTP/3 (QUIC)Fiddler Classic对QUIC支持有限可能导致抓不到包。可以尝试在Fiddler脚本Rules - Customize Rules中禁用QUIC或使用Wireshark等底层抓包工具。是否使用了证书双向验证mTLS除了客户端验证服务器证书服务器也要求验证客户端证书。这种情况非常罕见但一旦出现Fiddler作为中间人无法提供有效的客户端证书连接会失败。这需要拿到App内置的客户端证书和私钥并导入Fiddler难度极高。是否在Native层实现的网络请求有些游戏或高性能App使用C直接进行Socket通信不走系统的HTTP/HTTPS代理设置。这时需要抓取整个网卡的数据包使用Wireshark是更合适的选择。尝试其他抓包工具如果Fiddler始终不行可以换用Charles或mitmproxy试试。它们的原理相同但实现细节有差异有时Charles能抓到Fiddler抓不到的包反之亦然。5.3 针对特定顽固App的对抗思路有些App采用了组合拳进行防护例如SSL Pinning Root/越狱检测 代理检测 模拟器检测。你需要层层突破环境伪装使用Magisk安卓或相关的越狱隐藏插件如Liberty Lite、Shadow隐藏Root/越狱状态。对于代理检测有些App会检查系统是否设置了全局代理你可以尝试使用ProxyDroid安卓这类工具实现透明代理或者使用VPN模式的抓包工具如Packet Capture安卓App让流量先经过一个本地VPN再转发给Fiddler。动态Hook对抗检测使用Frida编写脚本Hook App中用于检测Root、代理、模拟器的函数使其永远返回“安全”的结果。使用物理真机很多检测在模拟器上尤为严格换用一台不常用的真机进行测试可能就能绕过检测。降级安装旧版本旧版本App的安全措施往往较弱。如果业务允许可以尝试寻找并安装旧版本的APK或IPA。6. 安全、合规与伦理边界最后也是最重要的一部分我们必须严肃讨论使用这些技术的边界。仅用于合法授权范围抓包和逆向技术只能用于你自己拥有或有权测试的应用程序、或明确属于安全研究范畴的公开应用。绝对禁止用于窃取他人数据、干扰他人服务、进行商业间谍活动或任何形式的非法入侵。尊重用户协议与法律法规很多App的用户协议明确禁止逆向工程。在进行任何测试前请务必阅读相关协议并确保你的行为符合所在地的法律法规。用于正向目的这些技术真正的价值在于开发调试前端开发人员调试API接口后端开发人员排查问题。安全测试作为白帽子或安全工程师发现并报告应用中的安全漏洞帮助厂商提升产品安全性。学习研究分析优秀应用的网络架构设计学习其协议实现提升个人技术水平。我个人的体会是掌握抓包和绕过SSL锁定的技术就像拥有了一把打开网络世界黑箱的钥匙。它让你从被动的“用户”变成了能主动观察和理解的“研究者”。这个过程充满挑战但每一次成功抓取到目标流量、分析出协议逻辑时带来的成就感是无与伦比的。技术本身是中立的关键在于使用它的人。希望这份详尽的指南能帮助你在合法合规的范围内更高效地完成你的开发、测试或学习工作。记住遇到问题多搜索、多尝试、多思考每一个坑踩过去都是宝贵的经验积累。
Fiddler抓包与SSL锁定绕过:安卓/iOS全平台实战指南
1. 项目概述为什么我们需要在移动端抓包并绕过SSL锁定在移动应用开发、安全测试或是日常的逆向分析工作中抓包是一个绕不开的核心技能。无论是想分析某个App的网络请求逻辑、调试自己开发的API接口还是排查线上用户反馈的“网络错误”抓包工具都能让你清晰地看到设备与服务器之间到底在“聊”些什么。Fiddler作为一款经典的HTTP/HTTPS调试代理工具因其强大的功能、直观的界面和免费的特性成为了众多开发者和测试人员的首选。然而随着移动应用安全意识的提升SSL证书锁定SSL Pinning技术被广泛应用。简单来说这项技术就像给你的App和服务器之间的通信上了一把“私锁”。App内置了服务器的“真钥匙”证书或公钥在建立HTTPS连接时它会比对Fiddler这类中间人代理提供的“钥匙”。一旦发现钥匙不对即证书不匹配就会立刻中断连接让你抓包失败。这层保护使得直接使用Fiddler抓取现代App的HTTPS流量变得异常困难尤其是在安卓高版本和iOS系统上。因此一个完整的“Fiddler抓包绕过SSL证书锁定”方案就成为了移动端网络分析工作流中的关键一环。它不仅仅是安装一个软件、配置一个代理那么简单更是一场与系统安全机制和App防护策略的“博弈”。接下来我将基于多年的实战经验为你拆解从环境搭建、证书安装到绕过锁定的完整流程涵盖安卓与iOS两大平台并分享那些官方文档里不会写的“踩坑”心得。2. 核心思路与准备工作搭建可靠的中间人代理环境在开始具体操作前我们必须理解整个过程的底层逻辑中间人攻击Man-in-the-Middle, MITM。Fiddler在这里扮演的就是“中间人”的角色。你的手机将所有网络流量发送给FiddlerFiddler解密、查看或修改后再转发给真正的目标服务器反之亦然。要实现这一点需要三个核心条件网络可达手机和运行Fiddler的电脑必须在同一局域网下并能相互通信。信任代理手机需要信任Fiddler颁发的“假”证书否则会提示连接不安全。突破锁定对于启用了SSL Pinning的App需要设法让它接受Fiddler的证书或者让它无法校验证书。2.1 环境准备清单工欲善其事必先利其器。以下是开始前你需要准备好的PC端运行Fiddler操作系统WindowsFiddler Classic原生支持或 macOS/Linux可通过Wine或虚拟机运行或考虑使用Fiddler Everywhere。Fiddler Classic从官网或可靠渠道下载安装。本文以Windows下的Fiddler Classic v5.0为例。网络确保电脑的防火墙允许Fiddler监听端口默认为8888。移动端被抓包设备安卓设备推荐使用真机。如果需要模拟器夜神模拟器、雷电模拟器的兼容性较好且通常自带Root权限方便后续操作。不推荐使用Android Studio自带的AVD进行抓包网络桥接配置复杂且性能一般。iOS设备iPhone或iPad。需要一台已越狱的设备或者使用一些仅在特定条件下有效的方法后文会详述。网络环境将电脑和手机连接到同一个Wi-Fi网络。这是最简单稳定的方式。记录下电脑在当前Wi-Fi下的局域网IP地址如192.168.1.105。在Windows命令提示符中输入ipconfig查看“无线局域网适配器 WLAN”下的IPv4地址。2.2 Fiddler基础配置开启HTTPS解密与远程连接安装好Fiddler后第一次运行需要进行关键配置否则只能抓到HTTP流量对HTTPS束手无策。启用HTTPS解密打开Fiddler点击菜单栏的Tools - Options。切换到HTTPS选项卡。勾选最上方的“Decrypt HTTPS traffic”。这时会弹出几个警告窗口大致意思是Fiddler要安装自己的根证书到系统以便解密流量一律点击“是”或“确定”。在“Actions”按钮下点击“Trust Root Certificate”将Fiddler的根证书安装到电脑的“受信任的根证书颁发机构”存储区。这一步至关重要否则浏览器也会报证书错误。建议同时勾选“Ignore server certificate errors”避免一些服务器证书配置问题导致抓包中断。允许远程计算机连接仍在Tools - Options中切换到Connections选项卡。勾选“Allow remote computers to connect”。记住Fiddler listens on port后面的端口号默认是8888。如果该端口被占用可以修改为其他未被使用的端口如8889。配置完成后务必重启Fiddler以使设置生效。注意完成此步骤后你的电脑已经成为了一个“可信的”中间人代理。Fiddler会自动生成一个唯一的根证书FiddlerRoot所有后续手机端需要安装的正是这个证书的派生证书。3. 安卓平台抓包与绕过SSL锁定全流程安卓平台的情况相对复杂不同系统版本尤其是Android 7.0为分水岭和手机厂商的定制化带来了诸多挑战。3.1 基础代理设置与证书安装针对未启用SSL Pinning的App对于大多数普通App或未严格实施证书锁定的App以下步骤足以完成抓包。手机连接代理在手机上进入当前Wi-Fi网络的详细设置。将代理设置为“手动”。主机名填写你电脑的局域网IP如192.168.1.105。端口填写Fiddler的监听端口如8888。保存设置。安装Fiddler证书到手机在手机浏览器中访问http://你的电脑IP:8888例如http://192.168.1.105:8888。你会看到Fiddler的欢迎页面点击页面中的“FiddlerRoot certificate”链接下载证书文件。对于Android 7.0以下版本下载后直接安装系统会提示你为证书命名如“FiddlerRoot”然后完成安装。你可以在“设置 - 安全 - 受信任的凭据 - 用户”中看到它。对于Android 7.0及以上版本这是第一个大坑。由于系统安全策略变更用户安装的证书默认不再被App信任。你需要将证书安装到系统证书区。这通常需要Root权限。有Root权限的手机下载的证书文件是.cer格式。你需要将其转换为.pem或.crt格式并重命名为特定的哈希名然后放入/system/etc/security/cacerts/目录并设置权限为644。这个过程较为繁琐建议使用Magisk模块如“Move Certificates”来一键完成。无Root权限的手机可以尝试将证书安装为用户证书然后针对目标App在其网络安全配置中声明信任用户证书。但这需要App的源码或能修改其安装包对大多数情况不适用。此时你应该已经可以在Fiddler中看到手机产生的HTTP和部分HTTPS流量了。如果HTTPS流量显示为“Tunnel to”或者App报网络错误那很可能就是遇到了SSL证书锁定。3.2 绕过SSL证书锁定的实战方案当基础方法失效时我们就需要祭出“绕过大法”。这里介绍几种主流且经过验证的方法。方案一使用Xposed/EdXposed模块经典有效需Root这是曾经最主流、最通用的方案其原理是通过Hook系统或App的证书验证相关API使其总是返回“验证成功”。适用环境已Root的安卓手机并安装了Xposed框架或它的衍生版本EdXposed、LSPosed。推荐模块TrustMeAlready名气最大效果很好。它主要Hook了安卓的TrustManager和CertificatePinnerOkHttp库的锁定机制。SSLUnpinning功能类似也是一个经典选择。操作步骤在Xposed管理器如EdXposed Manager中下载安装对应模块。启用模块并勾选需要绕过证书锁定的目标App。重启手机或目标App。理论上此时再打开Fiddler就能抓到该App的HTTPS明文流量了。实操心得这种方法对大多数使用系统API或流行网络库如OkHttp的App有效。但对于一些使用自定义SSL验证、或将证书公钥硬编码在Native层C/C代码的App可能仍然无效。在Android 11及以上版本由于系统对Hook框架的检测和限制更严格可能需要更复杂的隐藏Root和Xposed的措施。方案二使用Frida脚本进行动态Hook灵活强大需一定技术基础Frida是一个动态代码插桩工具功能比Xposed更底层、更灵活。你可以编写或使用现成的脚本来在内存中修改App的证书验证逻辑。适用环境手机端安装frida-server电脑端使用Python frida工具包。手机最好有Root权限。操作流程在电脑上安装Python和fridapip install frida-tools。根据手机CPU架构从Frida官网下载对应的frida-server推送到手机并运行。编写或寻找针对证书验证函数的Frida脚本。网上有大量开源脚本例如针对java.security.cert.X509Certificate.verify或OkHttp的CertificatePinner.check方法的Hook脚本。在电脑上运行命令frida -U -f com.target.app -l bypass_ssl_pinning.js即可在App启动时注入脚本。注意事项Frida功能强大但学习成本稍高。一些加固的App会检测Frida的运行导致注入失败或App闪退需要进行反调试对抗。这是一种动态方案每次分析都需要连接电脑执行脚本。方案三修改App安装包一劳永逸但操作复杂直接修改APK文件移除或修改其证书锁定相关的代码或配置然后重新签名安装。常用工具Apktool反编译/回编译、dex2jar/jadx查看Java代码、Keytool/Jarsigner签名。常见修改点网络安全配置文件查找res/xml/network_security_config.xml文件修改其中的pin-set或将domain-config的cleartextTrafficPermitted设置为true仅对HTTP有效对HTTPS Pinning无效需删除pin。反编译Smali代码搜索CertificatePinner、TrustManager、X509TrustManager等关键词找到验证逻辑将其修改为直接return或跳过验证。Native层修改如果验证在so库中则需要使用IDA Pro等工具分析修改so文件难度极大。核心痛点操作繁琐需要对安卓逆向有一定了解。很多商业App都进行了加固直接反编译会失败需要先脱壳。修改后需要重新签名而很多App有签名校验修改后无法运行又需要先绕过签名校验。这变成了“套娃”问题。方案四使用虚拟环境/沙箱免Root新思路这是近年来比较流行的免Root方案代表工具有VirtualXposed、太极等。它们创建一个虚拟的安卓环境在这个环境中可以安装Xposed模块而无需真实Root系统。优点不需要解锁Bootloader、刷机获取Root避免了银行类App检测Root导致无法运行的问题。缺点并非所有App都能完美运行在虚拟环境中可能存在兼容性问题。性能可能有一定损耗。操作步骤比直接Root手机安装Xposed要多几步。个人经验总结对于安卓抓包我通常会准备一台专门用于测试的、已Root且安装了EdXposed和Magisk的旧手机。Magisk本身可以隐藏Root配合Shamiko等模块可以更好地隐藏Magisk自身和Xposed以绕过一些App的强力检测。在这台手机上安装TrustMeAlready模块能解决90%以上App的抓包问题。对于剩下的“硬骨头”再考虑结合Frida进行动态分析。这是目前兼顾效率和成功率的组合方案。4. iOS平台抓包与绕过SSL锁定全流程iOS系统以其封闭性和统一性著称这给抓包带来了不同的挑战和相对统一的解决方案。核心前提是设备必须越狱。虽然存在一些针对特定版本的非越狱方法如使用描述文件安装自签名证书并信任但对于启用了SSL Pinning的App在非越狱环境下绕过几乎是不可能的。4.1 基础代理设置与证书安装iOS连接代理与安卓类似进入iPhone的“设置 - 无线局域网”点击当前连接的Wi-Fi右侧的“i”图标滑到最下面选择“配置代理 - 手动”填入电脑IP和Fiddler端口。安装证书用iPhone的Safari浏览器访问http://电脑IP:8888下载Fiddler证书。下载完成后进入“设置 - 通用 - VPN与设备管理”或“描述文件”找到下载的证书点击安装。安装后还需要进入“设置 - 通用 - 关于本机 - 证书信任设置”找到刚刚安装的Fiddler根证书并完全信任它。这一步必不可少否则HTTPS流量无法解密。完成以上步骤后Safari浏览器的流量、以及一些未启用SSL Pinning的App的流量应该就能在Fiddler中看到了。4.2 绕过iOS的SSL证书锁定在越狱的iOS设备上我们拥有系统级权限可以安装各种强大的越狱插件Tweaks来全局或针对性地绕过证书锁定。方案一使用Cydia Substrate或libhooker插件最主流越狱后默认会安装包管理工具Cydia或Sileo。我们可以从中搜索安装以下插件SSL Kill Switch 2这是iOS平台上最著名的SSL Pinning禁用工具。它通过Hook iOS系统的安全传输层SecureTransport等底层的证书验证函数来全局禁用证书锁定。安装后在设置中启用即可对大多数App效果显著。AppStore这个插件主要用于降级安装App但有时旧版本App的证书锁定可能更弱或没有间接解决问题。Flex 3一个强大的补丁制作工具。你可以在Flex的云仓库中搜索目标App看是否有其他用户分享了已制作好的、用于禁用SSL Pinning的补丁Patch。你也可以自己分析App找到验证函数并制作补丁。方案二使用Frida跨平台统一与安卓类似Frida同样可以在越狱的iOS设备上大显身手。由于iOS系统统一针对系统API的Frida脚本通用性更强。在Cydia中添加Frida源https://build.frida.re然后安装Frida。在电脑上同样使用frida-tools。运行命令连接越狱设备注入SSL绕过脚本。网上有成熟的针对iOS的通用脚本如ios-ssl-bypass。方案三手动导入系统证书一劳永逸这是比“完全信任”用户证书更彻底的方法。越狱后我们可以通过Filza等文件管理器将Fiddler的根证书需要转换为.pem格式直接放入iOS的系统证书目录/etc/ssl/certs/或/var/Keychains/中并设置正确的权限。这样系统会将其视为真正的受信任根证书几乎所有App都会买账。但操作涉及系统文件风险较高建议操作前备份。iOS抓包心得对于iOS我的首选方案永远是“越狱 SSL Kill Switch 2”。这个组合简单粗暴有效性极高。在越狱环境下整个系统的控制权在你手中很多问题都有统一的解决方案。如果SSL Kill Switch 2对某个特定App无效我会接着使用Frida进行更精细化的Hook。需要提醒的是iOS越狱随着系统更新其工具和兼容性一直在变化在进行越狱前务必确认你的设备型号和iOS版本是否有成熟的、稳定的越狱方案。5. 高阶技巧与深度问题排查实录即使按照上述流程操作在实际抓包过程中你仍可能遇到各种“诡异”的问题。下面分享一些高阶技巧和常见问题的排查思路。5.1 Fiddler过滤与会话处理技巧当所有流量都经过Fiddler时会话列表可能会非常杂乱快速定位目标请求是关键。使用Filters过滤器在Fiddler右侧的“Filters”标签页勾选“Use Filters”。可以按进程Process、主机Host、请求头/内容等条件过滤。例如只想看某个域名的请求就在“Hosts”区域选择“Show only the following Hosts”并填入域名如*.example.com。关注状态码与图标200成功。304未修改缓存。404未找到。500服务器内部错误。Tunnel to...这是一个HTTPS隧道说明Fiddler只建立了连接但未能解密内容。这通常是证书问题或SSL Pinning导致的。使用“Any Process”拖拽工具Fiddler左上角有一个“Any Process”的瞄准镜图标将其拖拽到电脑上任意窗口如浏览器、某个桌面应用可以立即过滤出只属于该进程的流量这个功能极其好用。5.2 抓不到包或全是TUNNEL的深度排查这是最常见的问题可以按照以下清单逐步排查检查代理设置确认手机Wi-Fi代理的IP和端口绝对正确。电脑IP是否变更可以尝试在手机浏览器访问http://电脑IP:8888看是否能打开Fiddler页面。检查防火墙临时关闭电脑的Windows Defender防火墙和任何第三方安全软件测试是否是防火墙阻止了8888端口的入站连接。确认证书已安装且受信安卓进入“设置-安全-加密与凭据-受信任的凭据-用户”查看是否存在Fiddler的证书。对于高版本安卓确认是否已通过Root手段安装到系统区。iOS务必在“证书信任设置”中启用完全信任。重启大法重启Fiddler重启手机有时能解决一些玄学问题。检查App特性是否使用了HTTP/3 (QUIC)Fiddler Classic对QUIC支持有限可能导致抓不到包。可以尝试在Fiddler脚本Rules - Customize Rules中禁用QUIC或使用Wireshark等底层抓包工具。是否使用了证书双向验证mTLS除了客户端验证服务器证书服务器也要求验证客户端证书。这种情况非常罕见但一旦出现Fiddler作为中间人无法提供有效的客户端证书连接会失败。这需要拿到App内置的客户端证书和私钥并导入Fiddler难度极高。是否在Native层实现的网络请求有些游戏或高性能App使用C直接进行Socket通信不走系统的HTTP/HTTPS代理设置。这时需要抓取整个网卡的数据包使用Wireshark是更合适的选择。尝试其他抓包工具如果Fiddler始终不行可以换用Charles或mitmproxy试试。它们的原理相同但实现细节有差异有时Charles能抓到Fiddler抓不到的包反之亦然。5.3 针对特定顽固App的对抗思路有些App采用了组合拳进行防护例如SSL Pinning Root/越狱检测 代理检测 模拟器检测。你需要层层突破环境伪装使用Magisk安卓或相关的越狱隐藏插件如Liberty Lite、Shadow隐藏Root/越狱状态。对于代理检测有些App会检查系统是否设置了全局代理你可以尝试使用ProxyDroid安卓这类工具实现透明代理或者使用VPN模式的抓包工具如Packet Capture安卓App让流量先经过一个本地VPN再转发给Fiddler。动态Hook对抗检测使用Frida编写脚本Hook App中用于检测Root、代理、模拟器的函数使其永远返回“安全”的结果。使用物理真机很多检测在模拟器上尤为严格换用一台不常用的真机进行测试可能就能绕过检测。降级安装旧版本旧版本App的安全措施往往较弱。如果业务允许可以尝试寻找并安装旧版本的APK或IPA。6. 安全、合规与伦理边界最后也是最重要的一部分我们必须严肃讨论使用这些技术的边界。仅用于合法授权范围抓包和逆向技术只能用于你自己拥有或有权测试的应用程序、或明确属于安全研究范畴的公开应用。绝对禁止用于窃取他人数据、干扰他人服务、进行商业间谍活动或任何形式的非法入侵。尊重用户协议与法律法规很多App的用户协议明确禁止逆向工程。在进行任何测试前请务必阅读相关协议并确保你的行为符合所在地的法律法规。用于正向目的这些技术真正的价值在于开发调试前端开发人员调试API接口后端开发人员排查问题。安全测试作为白帽子或安全工程师发现并报告应用中的安全漏洞帮助厂商提升产品安全性。学习研究分析优秀应用的网络架构设计学习其协议实现提升个人技术水平。我个人的体会是掌握抓包和绕过SSL锁定的技术就像拥有了一把打开网络世界黑箱的钥匙。它让你从被动的“用户”变成了能主动观察和理解的“研究者”。这个过程充满挑战但每一次成功抓取到目标流量、分析出协议逻辑时带来的成就感是无与伦比的。技术本身是中立的关键在于使用它的人。希望这份详尽的指南能帮助你在合法合规的范围内更高效地完成你的开发、测试或学习工作。记住遇到问题多搜索、多尝试、多思考每一个坑踩过去都是宝贵的经验积累。