文章目录

  • 前言
  • 一、charles的配置和使用
  • 二、雷电模拟器4配置
  • 1.使用adb进行全局代理
  • 2.使用postren进行全局代理
  • 三、证书相关
  • 四、反编译工具的使用
  • 总结



前言

本章是以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 如下:

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_python 获取雷电模拟器的二层句柄


这个默认端口是8888,不过我们演示的用9888端口,用什么都可以,而下面的socks端口8889后面也可以用到,本章会讲解2种方法进行配置。

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_反编译_02

我这里设置的是打开charles时我自己开启代理,开启代理只需要点击 proxy -> windows proxy。

proxy -> ssl proxying settings 如下:

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_逆向_03

这里为了方便代理我们全部填写 *,代表所有。

基本上此时配置就完成了,不过有可能会出现电脑突然访问不了浏览器报错(您的连接不是私密链接)这种情况。

这种情况大部分是证书的问题,浏览器不信任charles代理,所以我们要下载charles的证书到我们电脑上。

help -> ssl proxying -> install charles root certificate 如下:

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_逆向_04


python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_python 获取雷电模拟器的二层句柄_05

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_python 获取雷电模拟器的二层句柄_06

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_反编译_07

此时证书安装完成后就可以正确进行代理了。

不过对于不抓电脑端的用户,可以完全不用管它,打开电脑设置->网络->自己关闭掉那个代理即可。

或者可以删除证书打开(win + r然后输入命令certmgr.msc)找到受信任的证书删除即可。

对于查看请求的请求头和内容和浏览器的抓包类似,点击api就可以查看到。

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_app抓包_08

二、雷电模拟器4配置

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

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

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

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_app抓包_09


这个点击安装后即可开启网络桥接模式。

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会出现一个弹窗

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_爬虫_10


注意!!!这个必须选择允许很多人就是因为选择第一个导致模拟器请求不到

允许后你将会看到charles已经抓到手机端的包了。

2.使用postren进行全局代理

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

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

添加代理服务器(如果你之前跟着上面的步骤走了的,记得用adb把全局代理删了,然后重启模拟器)

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_逆向_11

填写代理信息

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_爬虫_12

保存完成后点击配置规则

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_反编译_13

匹配所有地址后保存

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_app抓包_14


保存完毕后点击浏览器访问即可抓到包

三、证书相关

上述完成后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

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_app抓包_15


将获取到的名字拿到,将后缀改成.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

设置完成后我们可以查看是否存入成功

python 获取雷电模拟器的二层句柄 wpe雷电模拟器抓包教程_爬虫_16


那么自此证书就放入成功了,手机也可以抓https的包了。

四、反编译工具的使用

对于手机的抓包我们已经搞定了,那么如果想分析逆向的话,app端有时候很难分析出规则,这时候如果可以看到app的加密规则的源码,然后我们进行分析,这样的话会更加的方便。

所以我们需要用到反编译工具

因为我们现在反编译的apk文件是安卓的,众所周知安卓是java编写的,所以我们想反编译肯定是需要java环境的,这里我们就用jdax来进行一个反编译(反编译不代表所有源码,只是我们可以更好的分析加密规则)。

我们可以点开jadx-gui.bat后将apk文件托过来,也可以在lib目录用java命令实现

java -jar jadx-gui-1.4.5.jar

然后我们就可以进行分析了。