闲鱼App逆向1:模拟器和抓包环境搭建
模拟器安装 模拟器选择安装夜神模拟器,其他模拟器可能会有frida兼容问题,这里尽量减少变量。 注意模拟器安卓系统有32位和64位区别,这里要和后面frida的版本对应,这里选择32位的版本,后面部分脚本在32位才有作用。 修改模拟器代理,将模拟器的wifi代理设置为宿主机ip,端口设置为8888,后面charles抓包需要8888端口,修改代理参考 https://zhuanlan.zhihu.com/p/611867924 Charles安装 软件百度自行安装,这部分主要是安装证书,到宿主机和模拟器,否则https的包抓出来都是加密的 安装证书到本机 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请求。 ...