移动端抓包分析入门:从 Charles 配置到反抓包绕过
做逆向分析,绕不开抓包。很多 App 的核心逻辑都藏在网络请求里——接口地址、参数加密、返回数据格式,抓包一拿就清楚了。一、工具选择
[*]Charles:Mac/Windows 都有,界面友好,适合新手
[*]Fiddler Classic:Windows 老牌工具,功能全面
[*]mitmproxy:命令行工具,适合自动化和脚本化场景
新手建议从 Charles 开始,安装即用,配置简单。
二、配置 HTTPS 抓包
现在大部分 App 都走 HTTPS,不装证书只能看到加密流量。
[*]电脑装 Charles 根证书:Help → SSL Proxying → Install Charles Root Certificate
[*]手机设代理:WiFi 设置里填电脑 IP 和端口(默认 8888)
[*]手机装证书:手机浏览器访问 chls.pro/ssl,下载安装
[*]Charles 开启 SSL Proxying:Proxy → SSL Proxying Settings → 勾选 Enable,加 *:*
三、抓包实操
[*]打开目标 App,操作一遍要分析的功能
[*]Charles 左栏找到对应域名,点开看请求详情
[*]关注 Request 的 Headers 和 Body — 看参数怎么加密的
[*]关注 Response — 看返回数据结构,定位关键字段
四、常见反抓包手段及应对
[*]证书固定(SSL Pinning):App 只信任内置证书,不认系统证书。用 Frida 绕过:hook TrustManager 让它信任所有证书
[*]代理检测:App 发现设了代理就不发请求。用 VPN 模式抓包工具(如 Reqable)或 Frida 绕过检测
[*]数据加密:抓到包但参数是加密的。需要配合逆向找到加密逻辑,用 Frida hook 打印明文
五、进阶:用 Frida 直接 hook 网络层
如果 App 做了很强的反抓包,与其硬刚不如换思路:
Java.perform(function() {
var URL = Java.use("java.net.URL");
URL.$init.overload('java.lang.String').implementation = function(url) {
console.log("URL: " + url);
return this.$init(url);
};
});
直接 hook 底层网络类,不管 App 怎么防,请求最终都要走系统 API,在这里截获最可靠。
https://www.metk.cn/img/posts/reverse_packet.jpg
抓包是逆向分析的"上帝视角"。一次成功的抓包,往往比读半天源码更能快速定位核心逻辑。先从 Charles 走通基础流程,再逐步学 Frida hook 网络层,基本上大部分 App 的接口都能摸清。 实战出来的经验和文档里写的完全是两码事,楼主这个很真实。 楼主的排版可以再优化下,代码块用起来会更清楚。 感谢分享,之前一直卡在这个点,看完豁然开朗。 楼主有没有遇到过反调试?我这边一挂调试器就直接退出。 这个方法我用过,确实可行,不过新一点的版本已经加了检测。 我这边环境是Mac,有些步骤要调整,回头补个差异说明。 感谢,正需要这个,之前找的资料都太老了。 看完最大的感受是基础知识还是要扎实,不然工具报错都不知道怎么查。 试了下你说的第二种方法,成功率更高,推荐。