charles + 雷电模拟器4进行手机抓包

导读:本篇文章讲解 charles + 雷电模拟器4进行手机抓包,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com


前言

本章是以win10系统来使用charles抓包工具 + 雷电模拟器4进行app的抓包(安卓模拟器7.0以上)。

需要的工具和环境(记得加入到环境变量里):

  1. charles工具
  2. 雷电模拟器4(需要模拟器root权限)
  3. java环境
  4. 反编译工具jdax
  5. openssl
  6. adb(一般在下载的雷电模拟器根目录下)
  7. postern代理工具

这里就不带大家去下载了,大家可以自行下载

一、charles的配置和使用

安装好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配置

对于雷电模拟器4而言因为其使用的是全局代理,所以我们想让其能用charles给我们的代理,可以使用以下两种方法:

  • adb进行全局代理配置(通过代理实现)
  • 使用postren做全局代理(通过socket实现)

不过我们先要获取本机的ip地址,可以使用cmd中的ipconfig或者在charles中help->
local ip address
中查看。

在这里插入图片描述
这个点击安装后即可开启网络桥接模式。

1.使用adb进行全局代理

添加代理命令

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已经抓到手机端的包了。

2.使用postren进行全局代理

对于使用adb你会发现一点,如果我不想打开charles抓包了,只想用模拟器干点其他事情(比如拿模拟器玩游戏或者看电视),那么你需要用adb命令去删除掉之前的全局代理,然后以后想抓包了,又要再使用adb进行全局代理添加,这很麻烦啊!

所以我们可以使用代理工具postren(懂得都懂,类似vpn的东西)来帮我们进行代理操作。

添加代理服务器(如果你之前跟着上面的步骤走了的,记得用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代理的端口(无限循环获取,本人亲测)!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/66837.html

(1)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!