本章是以win10系统来使用charles抓包工具 + 雷电模拟器4进行app的抓包(安卓模拟器7.0以上
)。
需要的工具和环境(记得加入到环境变量里
):
需要模拟器root权限
)一般在下载的雷电模拟器根目录下
)这里就不带大家去下载了,大家可以自行下载
安装好charles后我们开始进行配置
proxy->proxy-settings 如下:
这个默认端口是8888,不过我们演示的用9888端口,用什么都可以,而下面的socks端口8889后面也可以用到,本章会讲解2种方法进行配置。
我这里设置的是打开charles时我自己开启代理,开启代理只需要点击 proxy -> windows proxy。
proxy -> ssl proxying settings 如下:
这里为了方便代理我们全部填写 *
,代表所有。
基本上此时配置就完成了,不过有可能会出现电脑突然访问不了浏览器报错(您的连接不是私密链接
)这种情况。
这种情况大部分是证书的问题,浏览器不信任charles代理,所以我们要下载charles的证书到我们电脑上。
help -> ssl proxying -> install charles root certificate 如下:
此时证书安装完成后就可以正确进行代理了。
不过对于不抓电脑端的用户,可以完全不用管它,打开电脑设置->网络->自己关闭掉那个代理即可。
或者可以删除证书打开(win + r
然后输入命令certmgr.msc
)找到受信任的证书删除即可。
对于查看请求的请求头和内容和浏览器的抓包类似,点击api就可以查看到。
对于雷电模拟器4而言因为其使用的是全局代理,所以我们想让其能用charles给我们的代理,可以使用以下两种方法:
通过代理实现
)通过socket实现
)不过我们先要获取本机的ip地址,可以使用cmd中的ipconfig
或者在charles中help->
中查看。
local ip address
添加代理命令
adb shell settings put global http_proxy 本机ip:端口
删除代理命令
adb shell settings delete global http_proxy&adb shell settings delete global global_http_proxy_host&adb shell settings delete global global_http_proxy_port
此时我们重启模拟器后打开浏览器。
这时候charles会出现一个弹窗
注意!!!这个必须选择允许很多人就是因为选择第一个导致模拟器请求不到
允许后你将会看到charles已经抓到手机端的包了。
对于使用adb你会发现一点,如果我不想打开charles抓包了,只想用模拟器干点其他事情(比如拿模拟器玩游戏或者看电视),那么你需要用adb命令去删除掉之前的全局代理,然后以后想抓包了,又要再使用adb进行全局代理添加,这很麻烦啊!
所以我们可以使用代理工具postren(懂得都懂,类似的东西
)来帮我们进行代理操作。
添加代理服务器(如果你之前跟着上面的步骤走了的,记得用adb把全局代理删了,然后重启模拟器
)
填写代理信息
保存完成后点击配置规则
匹配所有地址后保存
上述完成后charles就可以抓到模拟器的包了,但是只能抓到http的包,因为对于手机端而言,charles代理属于不安全的,必须要有相关的证书才可以抓https的包。
为了能抓到https的请求,我们必须要使用charles给我们的证书,模拟器必须有root权限后将证书放入到/system/etc/security/cacerts
文件夹下才可以。
help -> ssl proxying -> save charles root certificate 进行保存(charles保存的证书默认是.pem后缀
)
如果是fiddler的证书
应该是.cer后缀的(保存到桌面
),我们可以使用openssl工具转成.pem后缀如下:
openssl x509 -inform DER -in C:\Users\Administrator\Desktop\FiddlerRoot.cer -out C:\Users\Administrator\Desktop\FiddlerRoot.pem
然后我们需要将获取到的.pem后缀文件的hash值,作为名字
openssl x509 -inform PEM -subject_hash_old -in C:\Users\Administrator\Desktop\charlesRoot.pem
将获取到的名字拿到,将后缀改成.0
,比如我现在获取到的hash值是26cab76e
,那么文件就是26cab76e.0
,然后把拿到的文件通过adb进行导入。
adb shell mount -o remount,rw /system
adb push C:\Users\Administrator\Desktop\26cab76e.0 /system/etc/security/cacerts/
adb shell chmod 777 /system/etc/security/cacerts/26cab76e.0
设置完成后我们可以查看是否存入成功
那么自此证书就放入成功了,手机也可以抓https的包了。
对于手机的抓包我们已经搞定了,那么如果想分析逆向的话,app端有时候很难分析出规则,这时候如果可以看到app的加密规则的源码,然后我们进行分析,这样的话会更加的方便。
所以我们需要用到反编译工具
因为我们现在反编译的apk文件是安卓的,众所周知安卓是java编写的,所以我们想反编译肯定是需要java环境的,这里我们就用jdax来进行一个反编译(反编译不代表所有源码,只是我们可以更好的分析加密规则
)。
我们可以点开jadx-gui.bat后将apk文件托过来,也可以在lib目录用java命令实现
java -jar jadx-gui-1.4.5.jar
然后我们就可以进行分析了。
本文章只是讲解了app是怎么进行抓包的,如何进行反编译,对于以后真正开始手机抓包的时候,需要学习非常的多,所以大家要努力学习,最后给大家一个忠告,不要试图去访问charles代理的端口(无限循环获取,本人亲测
)!!!