# 前言 很久没写技术文章了,感觉没必要,这次纯纯是为了记笔记。 这次接口挺有难度了,在部分接口做了ssl证书强绑定,但部分又不会,仍然信任系统证书。 检测抓包,检测wifi代理,走自己的阿里云和腾讯云dns。 --- ## 准备环境 1. 魔改版frida-因为软件会检测frida特征 2. 一台root了的手机和一台电脑 3. 将抓包证书放到系统目录 讲真,你费劲的把so检测frida解决,还不如直接找个魔改版。 --- ## 具体流程 懒得说,网上大多都是什么匹配特诊码,我这里直接用偏移量。 ```js function hookFlutter() { var m = Process.findModuleByName("libflutter.so"); if (m === null) { console.log("[-] 未找到 libflutter.so"); return; } // 直接使用 IDA 确定的偏移地址,不需要扫描 var targetOffset = 0x73EE88; var targetAddr = m.base.add(targetOffset); console.log("[+] libflutter.so 基址: " + m.base); console.log("[+] 目标函数地址: " + targetAddr); try { Interceptor.attach(targetAddr, { onEnter: function(args) { console.log("[!] 触发校验函数,正在篡改结果..."); // 强制篡改 W20 寄存器,将其置为 1 (成功) this.context.w20 = 1; }, onLeave: function(retval) { // 如果 W20 的修改在函数内部未生效,这里再补一刀 retval.replace(1); } }); console.log("[+] Hook 成功!"); } catch (e) { console.log("[-] Hook 失败: " + e); } } setImmediate(hookFlutter); ``` 然后就行了,偏移量不通用,打开ida pro 64位。 shift+f12查找字符串:ssl_client.  双击进去,然后键盘tab,用来转换成伪代码,之后x键找引用。  找到一个类似这样的函数传参,基本就可以确定了,在idapro的左下既是函数的偏移量。  然后复制过去,就ok了。 具体为什么这么做,是因为对某个大神文章的简化,而且他那个脚本会被360加固检测扫内存而被杀死,所以特意避免这种情况,而做的简化,但有用版本。 [一种基于frida和drony的针对flutter抓包的方法]([https://](https://bbs.kanxue.com/thread-261941-1.htm)) 接下来是魔改版frida和执行命令之类的,就不公开了,已经过了开源分享的年纪了,现在已经是个自私自利的老登了。 [login] ```sh # adb先放开14725端口,原因是frida魔改版需要避免端口特征 adb forward tcp:14725 tcp:14725 # 先查找进程 frida-ps -H 127.0.0.1:14725 | findstr /i c5game # 然后frida进入进程 frida -H 127.0.0.1:14725 -p 19936 ``` ```bash adb shell su cd /data/tools ./frida-server-16.3.3-android-arm64 -l 0.0.0.0:14725 ``` [frida魔改版](https://api.yuhenm.top/api/file/source?name=1c679a11-9f06-4e3b-8051-a803218b92b4.zip) [/login] Loading... # 前言 很久没写技术文章了,感觉没必要,这次纯纯是为了记笔记。 这次接口挺有难度了,在部分接口做了ssl证书强绑定,但部分又不会,仍然信任系统证书。 检测抓包,检测wifi代理,走自己的阿里云和腾讯云dns。 --- ## 准备环境 1. 魔改版frida-因为软件会检测frida特征 2. 一台root了的手机和一台电脑 3. 将抓包证书放到系统目录 讲真,你费劲的把so检测frida解决,还不如直接找个魔改版。 --- ## 具体流程 懒得说,网上大多都是什么匹配特诊码,我这里直接用偏移量。 ```js function hookFlutter() { var m = Process.findModuleByName("libflutter.so"); if (m === null) { console.log("[-] 未找到 libflutter.so"); return; } // 直接使用 IDA 确定的偏移地址,不需要扫描 var targetOffset = 0x73EE88; var targetAddr = m.base.add(targetOffset); console.log("[+] libflutter.so 基址: " + m.base); console.log("[+] 目标函数地址: " + targetAddr); try { Interceptor.attach(targetAddr, { onEnter: function(args) { console.log("[!] 触发校验函数,正在篡改结果..."); // 强制篡改 W20 寄存器,将其置为 1 (成功) this.context.w20 = 1; }, onLeave: function(retval) { // 如果 W20 的修改在函数内部未生效,这里再补一刀 retval.replace(1); } }); console.log("[+] Hook 成功!"); } catch (e) { console.log("[-] Hook 失败: " + e); } } setImmediate(hookFlutter); ``` 然后就行了,偏移量不通用,打开ida pro 64位。 shift+f12查找字符串:ssl_client.  双击进去,然后键盘tab,用来转换成伪代码,之后x键找引用。  找到一个类似这样的函数传参,基本就可以确定了,在idapro的左下既是函数的偏移量。  然后复制过去,就ok了。 具体为什么这么做,是因为对某个大神文章的简化,而且他那个脚本会被360加固检测扫内存而被杀死,所以特意避免这种情况,而做的简化,但有用版本。 [一种基于frida和drony的针对flutter抓包的方法]([https://](https://bbs.kanxue.com/thread-261941-1.htm)) 接下来是魔改版frida和执行命令之类的,就不公开了,已经过了开源分享的年纪了,现在已经是个自私自利的老登了。 <div class="hideContent">该部分仅登录用户可见</div> 最后修改:2026 年 06 月 14 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏