模拟器安装
模拟器选择安装夜神模拟器,其他模拟器可能会有frida兼容问题,这里尽量减少变量。
注意模拟器安卓系统有32位和64位区别,这里要和后面frida的版本对应,这里选择32位的版本,后面部分脚本在32位才有作用。
修改模拟器代理,将模拟器的wifi代理设置为宿主机ip,端口设置为8888,后面charles抓包需要8888端口,修改代理参考 https://zhuanlan.zhihu.com/p/611867924
Charles安装
软件百度自行安装,这部分主要是安装证书,到宿主机和模拟器,否则https的包抓出来都是加密的
安装证书到本机
将证书 安装到模拟器,参考 https://zhuanlan.zhihu.com/p/611867924
frida框架
需要安装python环境,自行百度。
frida 安装
pip install frida-tools
pip install frida
frida-ps -U ## 验证安装
frida-ps -U 能列出进程就没问题
Charles抓包
使用frida+python不走spdy协议,淘宝系软件都会走spdy协议,导致charles会抓不到包,所以需要让app走http协议
运行下面python脚本,记得先启动app,否则会hook不到,该脚本让软件强制走http协议
该脚本只对32位的闲鱼有效,64位需要hook的方法可能变了,可以解包找到对应方法,替换该方法路径 Java.use("mtopsdk.mtop.global.SwitchConfig");
import frida, sys
def on_message(message, data):
print("[%s] => %s" % (message, data))
pid = 0
device = frida.get_usb_device(1000)
process = device.enumerate_processes()
for data in process:
print(data)
if data.name == "闲鱼":
pid = data.pid
break
session = device.attach(pid)
uuid = '''
Java.perform(
function(){
console.log("############################ Frida 开启 ############################");
var session = Java.use("mtopsdk.mtop.global.SwitchConfig");
if (session != undefined) {
console.log(`------>定位到类名: ${session}`);
session.A.implementation = function(){
console.log(`------>定位到函数: is_enableSpdy`);
return false;
}
};
}
)
'''
script = session.create_script(uuid)
script.on('message', on_message)
script.load()
sys.stdin.read()
打开charles,随便点app就可以看到抓到的http请求。
评论区