通过优化提示词,规范化agent的行为,从而得到一套高效率的java层反名称混淆方法在安卓逆向过程中,我们常遇到这样的混淆总结起来可以分几类:1、unicode小语种类,比如阿拉伯语,类名竟然能竖起来。(可以用插件转变为类似第三种)2、O0o、1lI、ILZ类3、短字符类,比如f0、a、ab对于只有名称混淆的,我们可以使用jadx-mcp配合ai根据语义快速且高效地批量进行恢复,从而把逆向工程周期极大地缩短。实测JEB-MCP占资源太大,而且过于卡,反编译一个类可能需要几分钟,对于我这种计算资源比较少的小牛马显然JEB还是过于笨重了。不过之前的提示词还是有效的,可以考虑把提示词迁移至jadx-mcp。于是找到了a59K9s2c8@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@1f1K6i4K6R3H3i4K6R3J5jadx-mcp实际上是两部分,分别是JADX-AI-MCP和JADX-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
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289776.htm
使用JADX-MCP高效反混淆
393 浏览
11 回复
感谢分享
感谢分享
感谢分享!
支持
真的那么好用吗
看看
牛逼,大佬
看看
学习
学习
感谢分享