Android抓包工具有很多,有轻量的如httpCanary直接安装在手机上通过代理进行抓包,有功能强大的WireShark PC
端的抓包工具(也要设置代理啦),还有老牌抓包工具Finder和Charles以及mitmproxy 。
手机上的抓包工具远离基本差不多,要么是设置Vpn要么就是通过代理,用在Android 逆向上,使用Finder和Charles的人要多一些,而我比较倾向于使用Charles,对于http和https的抓包来说支持的比较好,上手容易,缺点就是他是收费软件,当然了好软件通常是收费的,有条件我们要多多支持正版。
安装
首先去官网下载你需要的版本,Charles提供Mac,windows和Linux版本,下载的时候建议直接下载不要开代理(不要看他官网页面都是英文),因为开了代理可能还慢一些。
安装软件很简单,安装好之后,建议通过上面的"收费"链接注册一下,否则在使用时可能会遇到半个钟退一次的风险。软件打开后点开代理设置,设置端口号(一般用默认的8888即可):
连接
手机和电脑需要在同一个局域网,不然电脑无法代理到手机发过来的数据。
确保在同一个网段后,ipconfig
查看电脑ip(我这里是192.168.0.33):
然后转到手机,设置一下代理(这张图是抄的,我手机录制的是视频不太好放上来):
设置好之后,你在电脑上的Charles会收到一个弹窗,提示你是不是要处理这个代理请求,点击Allow为容许:
到这里就建立好连接了,下面我来说说怎么使用。
使用
使用的话也简单,第一个图标是清楚记录,第二个图表示开始记录,一般用的最多的就是这两个按钮,其他的暂时不需要关心。我这里说几点技巧。
- 在触发对应操作前点击记录
- 点击记录前最好使用扫把清一下记录
- 下面的filter是可以过滤请求的
- 左边的连接可能对应多个请求,点开才能看到实际的请求数据
- 一些网站抓包数据乱码可能是使用了长连接,需要通过hook关闭
Hook关闭长连接
在使用Charles抓包pdd的时候,发现抓到的数据是乱码:
通过代码分析发现他使用了长连接,因此我们需要阻止他使用长连接才能使用Charles抓包:
com.xunmeng.basiccomponent.titan.api.helper.ApiNetChannelSelector.getInstance().updateLongLinkEnableHosts(new java.util.concurrent.CopyOnWriteArrayList<String>());
然后编写frida代码,将上述逻辑注入到进程中:
frida -U -f 拼多多 -l pdd.js
好了,先到这里吧,后面再优化了。