一、目标
Jadx : "我也很想进步,古法太繁琐了,现在的年轻人都玩不转。"
fenfei : "这个可以有。"
二、步骤
安装
mcp是什么咱们就不解释了,刚来的同学可以翻翻前情提要回顾一下 91fans.com.cn/post/idamcp...
今天我的新朋友是 jadx-ai-mcp
她的安装分两部分
- 去到 /Users/fenfei/Desktop/tool/jadx-1.5.3/bin 目录下面执行
bash
./jadx plugins --install "github:zinja-coder:jadx-ai-mcp"
- 下载 jadx-mcp-server 对接 AI 用
开工
找个软柿子捏一下
就用之前的 91fans.com.cn/post/txtrea... ,咱们换AI来搞 Jadx打开,然后 文件 -> 首选项 -> 插件

这说明插件部分安装OK
然后给 AI IDE 配置上 MCP Server
bash
{
"mcpServers": {
"jadx": {
"command": "/opt/miniconda3/envs/jadxmcp/bin/python",
"args": [
"/Users/fenfei/Desktop/tool/jadx-mcp-server/jadx_mcp_server.py"
],
"alwaysAllow": [
"get_android_manifest",
"search_classes_by_keyword",
"get_class_source",
"search_method_by_name"
]
}
}
}
细心的同学可能发现和之前IDA的MCP配置有很大的不一样。
AI这玩意还在迅猛发展,百家争鸣,所以MCP的协议有很多种,具体这两种协议哪种先进,可以问问 AI。
咱们是实用主义着,先不纠结原理了,连上了就行,在 AI IDE里呼唤神龙...
bash
连接jadx mcp, 定位 token=rOW60Ct5iGxgRX0Olulcz9IXtWiGmAO7cbL7Y%2FU0tOc%3D 这个 token计算的位置,然后写个Frida hook 脚本
然后就是默默的等待,想起了 Chrome的恐龙游戏,我感觉在等待 AI干活的过程中,应该来个 是男人就下500层 的小游戏。怪不得李老板喜欢玩扫雷,原来他把我当AI了,发布命令,然后边玩扫雷,边等我的结果。
有了AI 咱们也能过上李老板的日子了,越来越有盼头了。
AI 写完了, 我就不贴代码了, (小声告诉你,贴 知识星球 了)
bash
任务完成
已成功定位token计算位置并创建Frida hook脚本 token_hook.js
Token生成流程分析
根据反编译代码,token rOW60Ct5iGxgRX0Olulcz9IXtWiGmAO7cbL7Y%2FU0tOc%3D 的生成流程:
主要方法: Token.Companion.m() - getToken方法
输入: URI路径 + 参数Map
计算: hash_timestamp 格式的字符串
使用AES加密(密钥: 7A3II/M5Ja0S4gdf)
Hash计算: Token.Companion.k()
拼接: uri + 排序后的参数 + "mVjdXyqwjlEptwYY"
使用MurmurHash算法计算hash值
AES加密: AES.Companion.b()
算法: AES/CBC/PKCS5Padding
密钥: 7A3II/M5Ja0S4gdf
IV: 16-Bytes--String
输出: Base64编码
Hook脚本功能
脚本会拦截以下关键方法:
Token.getToken() - 捕获token生成
MurmurHash.d() - 捕获hash计算
AES.encodeAES() / AES.decodeAES() - 捕获加解密
SignatureUtil.sign() - 捕获签名生成
Token.getHash() - 捕获内部hash计算
Token.getUrlParamsByMap() - 捕获参数拼接
使用方法:
frida -U -f <包名> -l token_hook.js --no-pause
说的有模有样的,赶紧跑下代码试试。
我去,没效果
bash
不对 没有hook到
AI 又开始干活了,咱们继续扫雷。
过了几分钟,新的代码又搞完了,继续跑。 还是没有效果
bash
还是没有
AI 继续干活,咕嘟嘟,干了一通,扔给我了一个新的代码
bash
[+] TokenUtil.f() - Calculate Hash
Input1: /v1/category/female
Input2: channel=zxf2019_19206_001&os=Android&package=cn.ttkmfxs.novel&udid=01bb90d6de80f3cb01bb90d6de80f3cb&v=3.3.24.R
Hash: -1926105764
[+] TokenUtil.e() - AES Encrypt
Plain: -1926105764_1766754803859
[+] AES.b() - Encrypt
Value: -1926105764_1766754803859
Key: @cLjKxIl7hlto3tR
Encrypted: nADo5PoDE0nEwN6gKB9L8WF9OzAmwqviEgy/ljE1DI0=
Encrypted: nADo5PoDE0nEwN6gKB9L8WF9OzAmwqviEgy/ljE1DI0=
Generated Token (URL encoded): nADo5PoDE0nEwN6gKB9L8WF9OzAmwqviEgy%2FljE1DI0%3D
oh yeah,这次成功了。感觉和玩大转盘差不多,多玩几次,总会有惊喜。
💡 TIP
frida多准备几个版本,有时候v17不好使,我还能继续上v16.x
三、总结
有种赛博求签的感觉,心诚则灵。理解了有些人有事就扑通跪倒在佛像前面,感情佛祖也是AI的一种。
基本功还是得有的,不然被ai骗人都不知道咋回事。
天地无穷期,生命则有穷期,去一日,便少一日;富贵有定数,学问则无定数,求一分,便得一分。
💡 TIP
: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系。