小猿口算全功能实现方案
项目地址: https://github.com/nkxingxh/YuanShenPK
YuanShenPK
小猿口算 PoC。纯抓包,无需Frida、无需Hook,全功能实现。
警告: 该项目仅作为 PoC (概念验证),现已停止维护。请勿将其用于任何非学习目的,使用该项目所产生的一切后果由用户自行承担。
如果你只是想找个脚本直接改 0s 秒杀其他用户,那可以不用继续往下看了。
环境要求
安卓设备
需要 Root 后的安卓设备,用于抓包。具体怎么让 APP 流量过代理自行想办法解决。
不挑版本: 实测小猿口算最新 3.94.0 也支持。
抓包机
实测可用环境:
- Windows 10
- Python: 3.12.4
- Mitmproxy: 11.0.0
自动答题还需要 (二选一):
- pywin32: 控制鼠标直接操作模拟器
- adb: 使用 adb 操作安卓设备
前言
自 v2 接口响应加密以来,大家都开始想办法解密。上什么 Frida 啊,Hook 这个函数那个函数的,实在是不够优雅,而且这玩意还挑版本。
通过先前的研究,我们了解这个口算 PK 其实本质还是一个 H5 页面。已经有人想办法可以打开 WebView 调试,来看到更多详细的信息。也有人提出方案,修改 JS 脚本。
我看了其他修改 JS 的方案,也是装这个装那个的,其实一个 mitmproxy 就搞定了哪来这么麻烦。
思路
注入 JS 中的 dataDecrypt
, 使其在解密后把数据提交给我们处理,然后使用我们的返回内容替换其值,再执行剩余内容。这样就轻松实现了修改答案的功能。修改提交的作答数据也是同理,不过就是注入 dataEncrypt
相关逻辑而已。
由于我们本身就是中间人,无论向哪个 URL 发送请求,我们都可以捕获。所以都不需要想办法搭建 Web 服务器,使用 mitmproxy 即可完成。
功能
这个 PoC 在 v2 响应加密的次日就实现了基本功能,随后两天逐步完善。现在热度差不多也过去了,所以将其发布。
目前直接使用该 PoC 可以实现:
- 获取答案 (包括 PK 与 练习)
- 修改答案 (仅限 PK, 只保留一题)
- 自动答题 (仅限比较题)
这个项目只用于概念验证与学习,其他功能我扣掉了,你可以自行实现。
运行
mitmdump -s poc.py
随后在安卓设备上配置好 APP 代理,然后启动小猿口算即可。
自动答题默认为 adb
方式,请确保设备正常连接。你也可以修改 operation_mode
与答题位置。
许可
该项目基于 AGPL-3.0 许可证进行开源。详细信息请参阅 LICENSE