实现工具:python3.7+frida 12.7.5+ frida-server x86 +win10+模拟器安卓+Fiddler
frida 版本:这里采用12.7.5
模拟器:这里选用mumu模拟器,必须开启root权限
首先本机安装python3的frida模块和frida-tools工具
pip3 install frida==12.7.5
pip3 install frida-tools
安装这里比较坑,会出现“Building wheel for frida”,卡半天最后还报错。因为国内访问国外的 Frida 网速很慢,这里可以切换国内镜像下载重试,
pip3 install frida -i https://pypi.mirrors.ustc.edu.cn/simple/
pip3 install frida-tools -i https://pypi.mirrors.ustc.edu.cn/simple/
如果切换镜像后还是出现问题,那只好选择手动安装了:
在镜像站https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/frida/选择对应的版本下载
将下载好的“frida-12.7.5-py3.7-win-amd64.egg“文件放在“Python37\Lib\site-packages”目录下,再执行“pip3 install frida”即可安装。
确认frida、python3环境搭建好后就可进行以下面步骤了↓
打开mumu模拟器,在cmd窗口输入以下指令使连接到模拟器():
adb connect 127.0.0.1:7555
接着进入虚拟机查看下模拟器cpu类型,在cmd输入:
adb shell
getprop ro.product.cpu.abi
可以看到,我是x86的,所以这里选择下载x86的frida-server安装包。
frida-server下载地址:https://github.com/frida/frida/releases?after=12.7.5
下载后,把文件解压push到模拟器上:
adb push frida-server-12.7.5-android-x86 /data/local/tmp/frida-server
通过命令转发模拟器tcp端口:
adb forward tcp:27043 tcp:27043
adb forward tcp:27042 tcp:27042
然后adb shell进入虚拟机:
cd /data/local/tmp/ //进入frida-server所在目录
chmod 777 frida-server //赋予权限
./frida-server //启动运行
运行启动后,不要关闭cmd窗口,让他一直运行就好了。
重新打开一个cmd窗口,本机执行 frida-ps -U 应该能看到模拟器上启动的包名。
接着用模拟器打开app,将代码中替换淘宝包名“com.taobao.taobao”,执行以下python hook 代码:
import frida, sys
jscode = """
Java.perform(function () {
var SwitchConfig = Java.use('mtopsdk.mtop.global.SwitchConfig');
SwitchConfig.isGlobalSpdySwitchOpen.overload().implementation = function(){
var ret = this.isGlobalSpdySwitchOpen.apply(this, arguments);
console.log("isGlobalSpdySwitchOpenl "+ret)
return false
}
})
"""
def on_message(message, data):
if message['type'] == 'send':
print("[*] {0}".format(message['payload']))
else:
print(message)
process = frida.get_usb_device().attach('APP包名')
script = process.create_script(jscode)
script.on('message', on_message)
script.load()
sys.stdin.read()
若执行脚本时,出现pid占用报错:
这时需要进入虚拟机,输入命令 kill -s 9 占用端口号,杀死占用端口后再执行。
最后,打开fiddler,配置https,模拟器安装fiddler证书,配置好代理,关于fiddler如何使用本文不再赘述,摆渡一下就知道。
此时此刻已经可以完美抓包了,一些抓不到的请求也浮出水面鸟~
这里以淘宝APP示例: