
【实战】我是如何利用 Gemini CLI 自动化 JS 逆向分析的
作者:Gemini & an7
摘要:JavaScript 逆向工程通常是一个繁琐且耗时的过程,充满了对混淆代码的分析和复杂逻辑的破解。本文将通过一个真实的登录加密分析案例,一步步展示如何利用 Google 的 Gemini CLI 这一强大的对话式 AI 工具,将逆向分析、代码编写、批量测试的流程自动化,极大地提升了工作效率。
前言:挑战与工具
在 Web 安全和开发中,我们经常遇到需要分析前端加密逻辑的场景。一个常见的例子就是登录请求,网站为了保护用户密码和数据,通常会对关键字段(如密码、手机号)进行加密。本次我们的目标是一个登录页面,其在发送短信验证码前,对手机号 accNbr
参数进行了加密。我们的任务就是彻底搞清楚它的加密原理,并能编写脚本模拟该过程。
传统的做法是手动在浏览器开发者工具中调试、格式化代码、设置断点、跟踪调用栈。而这次,我们有了新的助手——Gemini CLI。它能否帮助我们简化这个过程呢?
第一章:初步探索 - 发现加密入口
我们手头有两个关键的 JS 文件:login.js和 security.js。
我首先让 Gemini 分析 login.js,并提出了一个直接的问题:
我: @login.js 你能找到 accNbr 参数加密流程吗
Gemini 迅速扫描了文件,并给出了它的分析:
Gemini: 在 login.js 文件中,我找到了两处对 accNbr 进行加密的地方,分别在 sendCode 和 sendCodeyw 这两个函数中。加密流程如下:
1. 获取号码
2. 字符串反转
3. RSA 加密: 使用 RSAUtils.encryptedString 方法对反转后的字符串进行加密。
4. 赋值
5. 发送请求
仅仅通过一次提问,我们就定位到了关键的加密函数 RSAUtils.encryptedString 和一个非常重要的预处理步骤:字符串反转 。这是一个巨大的突破,为我们节省了大量手动阅读和调试代码的时间。
第二章:深入细节 - 定位 RSA 实现
RSAUtils 显然是解密的下一个关键。我猜测它的定义应该在 security.js 文件中,于是我向 Gemini 提出了新的指令:
我: @security.js 在这里找
Gemini 立刻分析了 security.js 的内容,并确认了这是一个完整的、用 JavaScript 实现的 RSA 加密库。它甚至详细解释了 RSAUtils.encryptedString 函数的核心工作流程:
果然在前端找到解密关键值
至此,加密算法的主体(RSA)和细节(字符串反转、Hex编码)都已清晰。
第三章:关键参数的“捉迷藏”
RSA 加密需要公钥,也就是 modulus (模数) 和 exponent (指数)。我最初以为它们是固定值,并提供给了 Gemini。基于这个前提,Gemini 很快为我生成了一个可以完美复现加密过程的 Python 脚本。
然而,一个意外的现象出现了:
我: 为什么我登陆的时候相同手机号抓包,accNbr的值不一样呢?
这是一个关键的转折点!如果加密结果对于相同输入是变化的,那么加密过程中一定存在一个随机变量。Gemini 立刻修正了之前的结论,并提出了新的、更准确的推测:
Gemini: 最有可能引入这个随机变量的地方是 RSA的公钥本身。一个更安全、更常见的做法是服务器为每个会话**动态生成一个新的 RSA 密钥对**。
为了验证这个推测,我检查了登录页的 HTML 源码,发现 modulus 确实是直接在 HTML 的一个 <script> 标签中输出的,并且每次刷新页面,这个值都会改变。这证实了 Gemini 的判断——公钥是通过服务器端渲染(SSR)动态下发的。
第四章:从分析到自动化脚本
整个逆向过程的高潮部分来了——将我们的分析成果转化为可执行的自动化工具。
我的需求不断演进:
1. 最初:一个能加密单个手机号的 Python 脚本。--验证加密是否正确
2. 接着:一个能批量读取 txt 文档并加密的脚本。--批量加密手机号进行测试
3. 最终:一个能模拟 Burp Suite “Turbo Intruder” 功能,用于高并发测试的脚本。
每一步,Gemini 都快速响应了我的需求。
最后,应我的要求,所有这些生成和修改的脚本,Gemini 都通过 write_file
和 replace
等工具,**直接保存到了我的本地工作目录**,免去了我手动复制粘贴的麻烦。
结论:AI 驱动的逆向新范式
这次实战经历完美展示了 Gemini CLI 作为开发和安全研究工具的巨大潜力。在整个流程中,Gemini 不仅仅是一个问答机器人,更像一个经验丰富的结对编程伙伴。
* 加速分析:它能快速阅读和理解代码,迅速定位关键逻辑,将数小时的工作缩短到几分钟。
* 代码生成:它能根据需求,迅速生成从简单功能到复杂并发逻辑的 Python 脚本。
* 迭代优化:它能根据我们不断变化的发现和需求,持续地修改和优化代码。
通过与 Gemini 的高效互动,我们完成了一次端到端的 JS 逆向分析和自动化工具链的构建。这无疑预示着,一个由 AI 辅助的、更高效、更智能的软件开发与安全研究新范式已经到来。