首页
社区
课程
招聘
使用JADX-MCP高效反混淆
发表于: 1天前 1690

使用JADX-MCP高效反混淆

1天前
1690

通过优化提示词,规范化agent的行为,从而得到一套高效率的java层反名称混淆方法

在安卓逆向过程中,我们常遇到这样的混淆

去混淆前

总结起来可以分几类:

1、unicode小语种类,比如阿拉伯语,类名竟然能竖起来。(可以用插件转变为类似第三种)

2、O0o、1lI、ILZ类

3、短字符类,比如f0、a、ab

对于只有名称混淆的,我们可以使用jadx-mcp配合ai根据语义快速且高效地批量进行恢复,从而把逆向工程周期极大地缩短。

实测JEB-MCP占资源太大,而且过于卡,反编译一个类可能需要几分钟,对于我这种计算资源比较少的小牛马显然JEB还是过于笨重了。不过之前的提示词还是有效的,可以考虑把提示词迁移至jadx-mcp。于是找到了a7dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6*7K9h3&6B7j5g2)9J5k6r3y4G2k6r3g2J5i4K6u0r3K9X3q4V1P5q4)9J5k6r3q4A6i4K6u0V1L8h3y4H3i4@1f1^5i4@1u0r3i4K6V1&6i4@1f1@1i4@1t1^5i4@1q4m8i4@1f1&6i4@1p5I4i4@1t1&6i4@1f1%4i4K6W2n7i4@1q4q4i4@1f1K6i4K6R3H3i4K6R3J5

jadx-mcp实际上是两部分,分别是JADX-AI-MCPJADX-MCP-SERVER,前者是一个jar,是jadx插件,后者是标准的mcp服务器。

我的IDE是google的antigravity,官方没有提供安装方法,不过这个IDE一看就是vscode改过来的,所以可以参考roocode、cline这种进行配置。此处有一个坑点:我为antigravity配置了socks5代理,导致JADX-MCP-SERVER网络连通性测试出现异常。解决方案是下面配置中的env字段。注意timeout设大一点。

修改~\.gemini\antigravity\mcp_config.json,添加

连接好之后,在manage mcp servers界面,应该能出来可用的mcp函数列表,整理如下

之前flanker发布的JEB-MCP中的提示词如下:

经过测试我的智障AI+MCP无法达到演示的效果。此种情况,可以将大的长期目标(完成反混淆)拆分成多个小的短期目标(获取类的代码,分析功能,重命名包、类、字段、方法的名称等等)。我们将需求告诉贵的、聪明的AI,让AI来拆分任务、形成一个初步提示词。然后我们把需要改善的地方告诉他,让他来优化。最后我们拿这个优化好的提示词去让便宜的、笨的AI去大量地做,以节省token和提高速度。

优化后的提示词如下。

rename_templete.txt内容如下

1、强调“递归”,这样我们能让AI从我们更感兴趣的点或面入手,扩散至与他们相关的部分。这样能避免大量分析一些标准的、框架性质的、不是很感兴趣的功能。

2、为什么不用mcp的get_all_classes这个功能?因为这个返回的是整个apk的class,支持分页是每页显示多少条那种,而不是显示某个包下的所有class,测试app有200000个类,每次100条,就需要调2000次,这样上下文会很容易撑爆,触发上下文压缩,这样AI就有可能忘掉前面的但是重要的东西。但是可以用search_classes_by_keyword这个功能,搜索结果会比较精准。

也许可以先全量跑一次生成一棵树,然后根据节点序号去查找?后续可能考虑从这里下手优化。

3、为什么要设计一个rename_templete.txt?输出类的命令,如果是简单的说“完成后将xxx输出”,AI会每次设计一个新的格式输出,这样太乱,也不方便后续可能的其他自动化操作。另外,上述格式可以让AI每次都追加,而不是全量读取或输出一遍。以后遇到诸如内存爆了、jadx白屏了这种问题,在重启后可以直接让mcp“重新执行最后x条重命名操作”,快速恢复进度。

上面图片中的混淆示例,经过反混淆实际可以达到如下效果。

去混淆后

虽然还有一些错,但是基本上能看了。

1. 连接MCP jadx-mcp-server
2. 分析D:\xxx.apk应用的com.xxx.MainActivity类的功能
3. 根据功能重命名所有方法名小于3个字符的名称
4. 如果调用了其他类的方法,分析相应的类功能,并重命名方法名小于3个字符的名称
5. 输出分析过程。
1. 连接MCP jadx-mcp-server
2. 分析D:\xxx.apk应用的com.xxx.MainActivity类的功能
3. 根据功能重命名所有方法名小于3个字符的名称
4. 如果调用了其他类的方法,分析相应的类功能,并重命名方法名小于3个字符的名称
5. 输出分析过程。
# rename.txt 规范说明
# =====================
# 格式: [类型]|[包名/类名]|[原名]|[新名]|[功能说明]
# 类型: C=类, M=方法, F=字段
# 每行一条记录,便于追加和快速解析
# 新会话时只需读取最后N行即可恢复上下文
#
# 示例:
# C|com.xxxxx|O000O0O00OOO0OOO0O0|HijackDetectionManager|劫持检测管理器
# M|com.xxxxx.HijackDetectionManager|O000O0O00OO0O0OOO0O|handleActivityPaused|Activity暂停处理
# F|com.xxxxx.HijackDetectionManager|O000O0O00OO0O0OOO0O|sMainHandler|主线程Handler
 
=================================================================
                        XXX 包反混淆记录
=================================================================
 
# 类重命名
C|com.xxxxx|O000O0O00OO0O0OOO0O|SamplingMonitorRunnable|原生采样监控Runnable
C|com.xxxxx|O000O0O00OO0O0OOOO0|HijackActivityLifecycleCallback|劫持检测Activity生命周期回调
 
# 方法重命名
M|com.xxxxx.unexp.AttackResponseHandler|O000O0O00OO0O0OOO0O|handleAttackDetected|处理检测到的攻击
M|com.xxxxx.xxxxxx|O000O0O00OO0O0OOO0O|onHomeKeyPressed|Home键按下回调
M|com.xxxxx.xxxxxx|O000O0O00OO0O0OOOO0|getContext|获取Context
 
# 字段重命名
F|com.xxxxx.xxxxxx|O000O0O00OO0O0OOO0O|sContext|上下文
F|com.xxxxx.HijackDetectionManager|O000O0O00OO0O0OOO0O|sMainHandler|主线程Handler
F|com.xxxxx.HijackDetectionManager|f11565O000O0O00OO0O0OOOO0|sCurrentComponent|当前组件
# rename.txt 规范说明
# =====================

[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

最后于 1天前 被_0xA1pha编辑 ,原因: 修改
收藏
免费 42
支持
分享
最新回复 (13)
雪    币: 7
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
感谢分享
23小时前
0
雪    币: 6
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
感谢分享
23小时前
0
雪    币: 2
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
11
23小时前
0
雪    币: 99
活跃值: (1282)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
感谢分享!
22小时前
0
雪    币: 533
活跃值: (359)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
支持
22小时前
0
雪    币: 5703
活跃值: (9712)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
真的那么好用吗
21小时前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
8
666
20小时前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
9
666
20小时前
0
雪    币: 375
活跃值: (3306)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
看看
20小时前
0
雪    币: 872
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
11
牛逼,大佬
13小时前
0
雪    币: 5101
活跃值: (5204)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
666
4小时前
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
666
1小时前
0
雪    币: 3895
活跃值: (4275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
6
50分钟前
0
游客
登录 | 注册 方可回帖
返回