Charles破解
Charles是收费的,官方版本只有30天的试用期。那如何对其进行破解呢?
因为Charles是Java编写的,所以破解难度还是比较低的,我们只需要找到对应的jar文件,这个jar对应的是一个charles.jar,然后反编译charles.jar找到需要破解的位置,使用javassist修改对应字节码,得到一个新的charles.jar,使用新的charles.jar替换之前老的charles.jar就可以了。
所以说到底,破解Charles其实就是破解charles.jar,使用破解的charles.jar去替换原始的charles.jar就可以了。
关于如何破解charles.jar这里就不展开了,因为网上已经有人帮我们破解好了,我只需要拿到破解的charles.jar去替换我们Charles对应路径下的charles.jar就行。
1、进入官方网站,下载并安装新版的Charles
https://www.charlesproxy.com/download/
2、进入破解网站
https://www.zzzmode.com/mytools/charles/
(1)输入RegisterName(此名称随意,用于显示 Registered to xxx)
(2)选择第一步中安装的Charles的版本
(3)点击生成,就会得到一个破解的charles.jar,点击下载就可以下载一个破解好的charles.jar
3、替换本地charles.jar文件
进入第一步安装的Charles的安装目录,找到对应的charles.jar,将其替换成第二步下载的charles.jar
安装目录:
macOS: /Applications/Charles.app/Contents/Java/charles.jar
Windows: C:\Program Files\Charles\lib\charles.jar
Ubuntu: /usr/lib/Charles-proxy/charles.jar
Charles使用
下面针对Android手机抓包来进行演示使用过程。
确保手机和电脑在同一个局域网当中。
1、启动Charles
2、对于Windows系统,命令行中输入ipconfig,对应MacOS和Linux系统,命令行输入ifconfig,获取对应的局域网ip。
3、在手机中,选择【设置】-【WLAN】,长按手机当前连接的wifi网络,这时会有弹窗,选择修改网络,进入网络详情,勾选【高级选项】,【代理】选择手动,【代理服务器主机名】填写第一步中得到的电脑的局域网ip,【代理服务器端口】填写8888。这个时候Charles会有一个弹窗,选择ALLOW,这个时候Charles就会对手机的请求进行抓包。
4、对于Https的请求,你会发现手机总会提示证书的问题,这个时候需要在Charles中选择【Help】-【SSL Proxying】-【Save Charles Root Certificate...】将一个证书charles-ssl-proxying-certificate.pem下载到本地,然后将charles-ssl-proxying-certificate.pem放到手机SD卡的某一个位置,进入手机,【设置】-【安全】-【从SD卡安装】,然后选择前面放置在SD卡的charles-ssl-proxying-certificate.pem证书,将这个证书安装到手机。这样对应Https的请求就不会提示证书的问题了。
5、到第四步,我们基本就可以实现Charles抓取http和https的请求了,但是有的时候,我们发现还是有些包抓取不到或者显示为unknown,那就可能是APP使用了SSL强验证,也就是说APP对SSL证书进行了绑定,这个时候的解决版本就是使用Xposed+JustTrustMe关闭SSL证书验证,JustTrusMe是将APP中所用于校验的API进行HOOK从而达到绕过强验证的目的。对于Xposed+JustTrustMe的具体安装方法这里就不展开了。