AI 辅助分析高德地图逆向实战
前言
为什么要分析高德地图呢?这个是因为本人在网页中进行搜索的时候,在不登录的情况下时不时会弹出登录页面,出于好奇就决定分析一手。
高德地图是典型的阿里体系安全防护机制,其中包含 高度混淆、多层嵌套 VM、严格的设备指纹检测、JSVMP 技术 等,如果想要成功分析出它的话,还是很考验操作者的逆向能力的,而且需要花费的时间是巨大的。
目前有了 AI 的存在,这些复杂的工作可以使用 AI 来辅助完成,你可以把自己想象成一个设计者,只要规定好最终的目标,并在适当的时候给予正确的指导即可。
话不多说,让我们一起分析一下,开干!
一、挑战:高德地图
1.1 设备指纹检测
设备指纹检测是 通过收集浏览器、操作系统、硬件等多维度信息,生成唯一 ID 来识别设备的风控技术。它旨在识别虚假设备(模拟器、Root/越狱),实现反欺诈、金融安全及风控。主要通过 SDK、JavaScript 采集特征,利用 AI 算法锁定设备并识别风险。
1.2 JSVMP
JSVMP(JavaScript Virtual Machine Protection,JS 代码虚拟化保护)是 一种企业级的 JavaScript 代码高强度加密混淆技术。
它通过 将原始 JS 代码转换为一种特定的、自定义的字节码,并在浏览器或 Node.js 中运行私有的解析器,使代码反编译和逆向分析极度困难,常用于保护 Web 应用的关键算法。
1.3 高度混淆
将代码中具有意义的变量名、函数名修改为无意义的符号(如 a、_0x4a2b)或动态生成变量值。
目的:使反编译后的代码难以理解,保护知识产权,防止恶意修改。
二、AI 辅助分析
2.1 接口信息
1 | |
2.2 请求头参数

其中最核心的参数是 bx-ua,参数 x-dc 测试不携带虽然也能成功,但是这个参数也是必要的,因为服务端也会验 x-dc 参数,只不过你少量请求不封你而已。这里面有一点要特别说明:高德地图需要登录,不登录请求几次就会弹出登录界面,而且不登录情况下接口的 curl 请求可能重发一次就失效了。
bx-ua 参数是以 231! 开头的,这个特征明显是采用了阿里的安全防护机制。
2.3 JS SDK 加载链路
浏览器中的加载顺序:

关键调用链(main.js 中):

2.4 bx-ua 生成分析
1 | |
2.5 bx-dc 生成分析
1 | |
补环境方案:

mapTracker VM 循环执行顺序:
1 | |
x-dc 加密流程:
1 | |
2.6 效果展示

2.7 AI + 补环境方案
主要用到的技术就是 Chrome DevTools MCP + 补环境技术完成整个的逆向过程。需要特殊说明的是 高德地图收集了很多的设备指纹,所以在补环境的过程中需要让 AI 分析都收集了哪些环境并进行补充,而且最好账号登录后再分析,因为未登录的话逆向出来的参数也有可能请求失败,登录也可以排除账号因素,验证逆向参数是否正确。
三、总结
3.1 AI 辅助的优势
- 处理复杂 VM 逻辑:对于上述过程中提到的 VM 中有大量的循环以及 case 分支,分析起来这个工作量是十分巨大的,但是 AI 恰好最擅长这个方面
- 加快分析周期:AI 可以加快整个分析的周期,原来可能要一两个月搞定的,在 AI 的辅助下可能能缩减一半的时间
- 代码生成:AI 可以根据你的需要生成你需要的代码语言及形式
3.2 AI 的局限性
AI 也会偷懒:当它分析大的 VM 流程的时候,它会感觉过于复杂,从而投机取巧想要使用 Playwright 方案 + 无头浏览器解决,这种可能并不是我们想要的方案。所以也 不要什么都不看,一味的让 AI 向下执行,当它做的事情不符合你的预期时,及时阻止它,并引导它去做你想要的方案。
AI 也不是万能的:AI 在分析 VM 的时候,它默认采取的方式是猜测代码本地调试,但是对于那种代码中存在大量 case 分支的情况,走不同的分支会有不同的结果,这个时候不要让 AI 去猜测,这样得到的结论往往是荒唐的。正确的做法是:给 AI 足够的上下文信息,让它在有足够信息情况下去分析,比如说代码中检测了设备指纹,那么就让 AI 结合浏览器的正常运行环境进行分析,之后再进行本地实现。
四、展望
AI 确实很强大,但是不要做无脑使用 AI 的人,学会使用 AI,正确支配 AI 做事,不要成为被 AI 支配的人。
Harness Engineering 为 AI 提供了好的运行环境,AI 的性能得到了质的提升。我们要做的就是成为 AI 的大脑,指挥它在正确的时机做正确的事情。