xiao1star2025-07-28文章来源:SecHub网络安全社区
我的天,安装这个面具本人真的废了老鼻子劲了终于成功了
电雷模拟器下载:https://www.ldmnq.com/other/version-history-and-release-notes.html(本人起初使用的MUMU模拟器发现安装不了Magisk,本人使用的是9.1.40,如果怕翻车建议大家和我安装一样)
点击软件设置->显示->分辨率设置选择手机版(尺寸你们自己随便)
机型->手机型号(建议和本人选择一样的,因为不同型号可能导致安装失败,本人就是使用了这个机型才成功)
磁盘->系统盘设置选择可写入
其他->开启ROOT权限->保存设置,然后重启
给雷池模拟器安装面具
本人在网上找了好多安装教程,但是都已失败告终,这里是我安装成功的面具软件,成功后直接拖进模拟器中即可
通过网盘分享的文件:模拟器面具
链接: https://pan.baidu.com/s/1J7ifJTNPjtBIEL5Hx4HBtQ?pwd=vjex 提取码: vjex
--来自百度网盘超级会员v5的分享
下载完成之后直接拖入到模拟器中然后双击打开,选择永久记住,然后安装
选择允许
不选择安装到Recovery,下一步
来到这一步选择直接安装(直接修改/system),如果没有这个选项直接关闭虚拟机重新启动,然后点击开始
最后显示安装完成,这时关闭虚拟机重新启动,不要点击下面的重启
重新打开这个有一个异常状态不要管他
此时我们就安装成功啦
adb就是用于我们电脑与模拟器连接连接的,下载地址
Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Mac版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Linux版本:https://dl.google.com/android/repository/platform-tools-latest-linux.zip
接着就设置环境变量,将我们的路径添加到Path中
之后在命令框中输入adb
回显如下内容代表正确
下载完成之后直接拖入到模拟器中
打开我们的burp然后下载证书
命名为1.cer
打开MT管理器将这个路径复制一下,我们将证书导入到这个路径下
在证书的目录下打开cmd,输入
adb push 1.cer /storage/emulated/0/
可以看到证书成功导入到模拟器中
打开是模拟器中的设置->安全性和位置信息->加密与凭据->从SD卡安装
选择我们刚刚导入进来的证书
设置锁定方式即可
这样就导入了我们证书,然是目前出现的问题就是我们只能抓http的包,抓取https的包会有警告,所以我们还需如下操作
给面具模块导入系统抓包证书
模块地址:https://gitcode.com/open-source-toolkit/a6ccf/blob/main/Move_Certificates-v1.9.zip
下载成功后,还是老样子,把他导入到模拟器中某个目录下的1.zip中
adb push Move_Certificates-v1.9.zip /storage/emulated/0/1.zip
打开面具点击模块选择从本地安装
选择文件管理器,然后选择我们上传的1.zip
成功安装接着重启模拟器
这样的话我们的证书就导入到系统证书中了
现在有一些app抓包时可能会检测如下内容
现在我们就讲讲如何绕过代理的检测以及ROOT
1.绕过ROOT,打开软件设置关闭ROOT权限
2.绕过代理检测
代理检测就是检测我们是否手动配置了代理,想要绕过直接将其改为无即可
那么想要抓包的话,可以下载一个postern的应用
地址:https://github.com/postern-overwal/postern-stuff/blob/master/Postern-3.1.2.apk
接着将下载好的apk拖入到模拟器中
接着打开这个应用,添加代理服务器
设置为你自己的地址与端口,代理类型选择HTTPS\HTTP
的,用户名密码不用填,然后保存即可
接着配置规则,添加规则
按照如下内容来选择,接着保存
然后打开VPN,然后重启模拟器
然后打开postern,打开之后呢可以看到右上角有一个钥匙的标志
接着打开浏览器可以看到,可以看到成功抓包
frida是一款基于python + java 的hook框架,可运行在android、ios、linux、win、osx等各平台,主要使用动态二进制插桩技术。
首先在我们的本机上安装frida的客户端,frida的安装需要python3的环境
查看我们是否有安装frida
pip list
如若没有直接安装,命令如下
frida
pip install frida==16.2.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
fridatools
pip install frida-tools==12.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
接着将服务端安装在虚拟机上
首先查看一下我们的模拟器的系统版本,cmd命令框输入下入内容
adb shell //连接模拟器的终端 su //使用模拟器的root权限 getprop ro.product.cpu.abi //查看系统版本
可以看到是x86_64的版本
地址:https://github.com/frida/frida/releases?page=5
本人安装的是16.6.1,选择如下进行下载
接着进行解压,重命名为fsfs(因为解压缩后的文件名太长了),然后使用adb将其pull到虚拟机中
adb push fsfs /data/misc/fsfs
接着就是到当这个目录下给这个文件一个运行权限,然后运行这个fsfs
chmod 777 fsfs
./fsfs
接着重现打开一个命令框,之前那个不要关闭,接着将模拟器的端口27042转发到本机的27042端口上
adb forward tcp:27042 tcp:27042
利用frida查看模拟器上的进程
firda-ps -U
在模拟器上打开Postern工具
然后我们在这里抓取一个app的数据包
可以在这个注册页面有一个xmsign
的数据,这个是一个加密数据,我们我们可以看到这两个请求包前后两个只有xmsign是不同的,我们现在就逆向破译一下这个加密方式
直接apk包拖到jadx_gui
中,全局搜索xmsign
我们来到这个b方法中
**分析:**可以看到首先呢是将我们的参数str
调用了两次a方法,然后赋值给strA
,接着就对strA
进行非空判断,然后将xmsign
拼接到sb
参数中,接着再将strA
拼接到xmsign
后面,那么这个strA
就是加密的数据,那么我们就看看看a方法
来到内层的a方法,这个方法看上去就是对参数值的拆分然后put到map2中,并没有进行加密
接着我们就看看内层的a方法
分析:可以看到内层的a方法呢首先是查看这个map中的key值是否有xmsign、xdebug、debug
这其中的三个的任意一个如果没有就直接append上,最后调用方法s然后连上key一块进行加密
然后我们来到方法s中,发现方法s又调用了c方法
然后看到c方法可以看到最后又调用了a方法
接着就来到a方法,这段代码的作用是将字节数组中的每个字节转换为两位十六进制字符串,并将所有结果拼接在一起。这种转换在处理二进制数据
那么现在我们知道了c方法最后返回的是加密数据了,我们直接右键c方法,然后赋值frida片段
接着创建一个js文件
Java.perform(function(){
....//frida代码块
});
接着我们查看一下我们应用的包名,使用MT管理器查看,选择安装包提取
获得到我们的包名
接着在我们刚刚那个js的目录下打开cmd命令框输入如下命令,来实现我们方法c加密前以及加密后的数据,使用命令前将抓包工具以及我们要逆向的工具都关闭
frida -U -f "包名" -l 你的js脚本
若出现这个警告代码客户端的连接掉了重新连接一下即可
运行完上面那条指令会显示,模拟器会自动打开这个app,然后出现如下内容
接着我们就直接来到我们要测试的那个页面,查看其加密前后的数据
加密前的数据:
Utils3.c is called: str=p1=store&p10=9.4.1.11&p11=1080&p12=1920&p13=&p14=94111&p15=10007&p16=&p17=&p18=PandaBookAndroid5652&p19=0&p2=PandaBookAndroid5652&p20=30&p3=d9d5ab12722377c5b65e883769b00d3e&p4=SM-S9280&p5=Samsung&p6=SM-S9280&p7=android&p8=28&p9=wlan&type=smslogin&key=7926f2fe246d11e58830005056b243f1
加密后的数据:
Utils3.c result=e98b4c7e6c016b946badd2c2e8d86f3b
其实这就是一个md5的加密,我们将加密前的数据直接进行32位的md的加密可以看到和上面的是一样
我们首先是通过反编译得到的代码获取到加密函数,但是我们无法进行动态调试进而更好的知道加密原数据,我们使用frida来将加密的frida片段通过cmd命令框来显示出加密前后的数据,进而到我们知道加密源数据数据是什么,进而可以构造加密数据