Codex + MCP:我用这套组合做了一次全自动 JS 逆向尝试

大家好,前几天看了猿人学安佬的 AI 逆向直播,也想试试 AI 逆向的效果到底怎么样。之前一直听说有人在用 AI 做逆向,但自己一直没动手试过,今天就来亲自上手体验一下,看看 AI 到底能帮我们做到哪一步。

全程使用 Codex + MCP 来实现 AI 自动逆向,废话不多说,直接开整。

Codex 是什么

Codex 是 OpenAI 推出的一个代码智能体(Coding Agent),可以在终端里直接通过自然语言来操控它编写和运行代码,有点类似于 Cursor 的 Agent 模式,但是它是跑在命令行里的,对于逆向这种需要频繁执行代码的场景来说还是挺合适的。

环境介绍

本次测试的主机环境是 Debian + XFCE 桌面,之所以选这个组合主要是因为轻量,XFCE 占用资源很少,跑逆向这种需要同时开着浏览器和终端的场景还是挺合适的。

Node.js 安装

Codex 依赖 Node.js 环境,先把这个装上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 安装 curl
apt install curl -y

# 推荐使用 nvm 来管理 Nodejs 版本,命令来自 Nodejs 官网。
# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash

# in lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"

# Download and install Node.js:
nvm install 24

# Verify the Node.js version:
node -v # Should print "v24.14.0".

# Download and install pnpm:
corepack enable pnpm

# Verify pnpm version:
pnpm -v

image-20260315205013967

nvm 来管理 Node.js 版本,方便后续切换 Nodejs 的版本,这里就不展开了,同时也建议使用 pnpm 替换官方的 npm,更好用,大家可以自行安装尝试。

pnpm 刚刚安装完成后别忘了初始化,不然会报错:

1
2
3
4
$ pnpm install -g @openai/codex
 ERR_PNPM_NO_GLOBAL_BIN_DIR  Unable to find the global bin directory

Run "pnpm setup" to create it automatically, or set the global-bin-dir setting, or the PNPM_HOME env variable. The global bin directory should be in the PATH.

使用以下命令初始化:

1
pnpm setup

初始化完成后执行一下这行命令:

image-20260315210132400

Codex 安装

Codex 目前需要 Node.js 环境,先确保本地已经安装了 Node.js,然后执行以下命令安装:

1
pnpm install -g @openai/codex

看到这个就算是安装完成了:

image-20260315210242378

接下来启动 Codex,这里大家自行解决一下账号或者 Api key 的问题哈。可以直接使用 OAuth 的方式登录也可以输入 Api key。

image-20260315210512714

看到下图就是安装完成了。我是使用 OAuth 的方式登录的,选择第一个选项,然后会给一个链接,复制到浏览器打开,登录账号,正常来说会自动登录成功。

如果账号登录位置和终端不在一台电脑,那么需要复制登录成功以后的跳转链接到 Codex 安装的电脑的浏览器访问一下,因为要完成校验。

image-20260315210701473

MCP 安装配置

MCP(Model Context Protocol)简单理解就是给 AI 模型接上各种工具,让它不仅能写代码,还能直接操控浏览器、访问文件系统等等,大大扩展了 AI 的能力边界。

我这里使用安佬同款的 MCP 尝试复现一下,这里如果提示没有安装 Git 的就 apt 安装一下就好。

1
2
3
4
5
6
git clone https://github.com/NoOne-hub/JSReverser-MCP.git 
cd JSReverser-MCP/ # 进去项目目录
pnpm install # 安装依赖
pnpm add zod@3 # 安装缺失的依赖,pnpm 的校验比 npm 严格许多
pnpm add puppeteer-core@24.31.0 # 安装缺失的依赖
pnpm run build # 编译构建,顺序不能错

然后找到编译后的这个文件,用来启动 MCP 的,需要放到 Codex 的配置文件中,先找到它的路径:

1
2
js@js:~/Documents/project/JSReverser-MCP/build/src$ pwd
/home/js/Documents/project/JSReverser-MCP/build/src

接下来找到 Codex 的配置文件,配置文件默认在 home 目录中,添加以下内容:

1
2
3
4
js@js:~/.codex$ ls config.toml
config.toml
js@js:~/.codex$ pwd
/home/js/.codex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[mcp_servers.chrome-devtools]
command = "npx"
args = [
"-y",
"chrome-devtools-mcp@latest",
"--browser-url=http://127.0.0.1:9222"
]
startup_timeout_ms = 20000

[mcp_servers.js-reverse]
command = "node"
args = [
"/home/js/Documents/project/JSReverser-MCP/build/src/index.js",
"--browserUrl",
"http://127.0.0.1:9222"
]

# 想启用 JSReverser 的 AI 增强分析时,使用这一段,这部分内容来自安佬,大家可以自行启用尝试。
# [mcp_servers.js-reverse.env]
# DEFAULT_LLM_PROVIDER = "openai"
# OPENAI_API_KEY = "你的_OPENAI_API_KEY"
# OPENAI_MODEL = "gpt-4o"

别忘了改第二段内容中的路径,换成你自己电脑的路径。

Chrome 安装

当然了,如果是新安装的系统,可能这个时候还没有 Chrome 浏览器,可以参考下面的流程来安装:

1
2
3
4
5
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb # 下载这个 deb 包

sudo dpkg -i google-chrome-stable_current_amd64.deb # 然后安装

google-chrome --remote-debugging-port=9222 --user-data-dir="/tmp/chrome-mcp" # 然后使用这个命令启动浏览器,并且开启调试端口,后面的用户文件夹路径可以自行更改。

安装完成以后,访问 http://127.0.0.1:9222/json/version 可以返回信息就是成功了,如下图:

image-20260315214140001

到这里环境配置就全部完成了。

开始逆向

环境配好了,来试试效果如何。直接在终端启动 Codex:

1
codex

然后先检查一下 MCP 是否安装成功,使用命令 /mcp 来检查看看,出现两个 enabled 一般就没问题了。

image-20260315214343440

接下来输入安佬给的提示词:

1
https://match2023.yuanrenxue.cn/topic/3 网页中有一个参数为 token,请利用chrome-devtools-mcp 与 js-reverse-mcp的辅助,最终使用补环境的方式,在node.js上模拟这个参数,并且可以顺利访问https://match2023.yuanrenxue.cn/api/match2023/3 的第一页,获取第一页的数字。最终的结果我需要脱离浏览器,使用纯node.js执行。 

Codex 收到指令后会开始自动执行,整个过程大概分几个步骤:

  1. 打开网页 —— 通过 MCP 的 Playwright 工具自动打开目标网站
  2. 抓取请求 —— 分析 Network 中的加密参数
  3. 定位 JS 文件 —— 找到对应的加密函数
  4. 分析逻辑 —— 读取 JS 代码并尝试还原加密算法
  5. 生成代码 —— 输出可以在 Nodejs 中独立运行的代码

整个过程不需要手动干预,看着 AI 自己一步步操作还是挺有意思的哈哈。

过程中的一些截图:

image-20260315214554595

image-20260315214703060

image-20260315214703060

image-20260315230656968

image-20260315233006927

image-20260315233020979

其他的截图就不截了,整体过程并不是一次过的,中间遇到了浏览器页面崩溃和 MCP 工具断开的问题,暂时不知道是什么情况。

而且中途还断了几次,问我下面要如何做,总之没有做到一次过,可能是提示词太简单了,也可能是模型变了,还可能是环境问题,暂时先不管。

但是最终的结果是好的,还是使用纯算的方式逆出来了,历时 30 多分钟吧,系统刚刚装好,还缺少很多工具,中间还停下来安装了几次工具。

逆向效果

说说实际效果,先说好的地方:

  • 对于简单的加密(比如 MD5、SHA1、简单的字符串拼接)基本上一把过,速度非常快
  • 定位加密参数的能力还不错,能自动分析请求找到可疑的参数
  • 遇到简单的混淆也能大致分析出逻辑

然后说说不足的地方(毕竟要客观):

  • 遇到重度混淆(比如 OB 混淆、jsvmp)就有点力不从心了,分析出来的结果不太准确
  • 有时候会自信地输出错误代码,跑起来结果对不上,需要手动介入排查
  • 有的时候如果工具出现问题,需要人工接入排查

总体来说,AI 在逆向里更像是一个效率工具,用来处理一些重复性的工作、快速定位代码逻辑是没问题的,总的来说,就是工具可以做一些相对复杂的活,但是最终能做到什么程度,还是要看使用的人的经验和水平(我是初次使用,可能结论不准确)。

不过随着模型能力的提升,相信这块的表现会越来越好,还是值得持续关注的。

感兴趣的小伙伴可以自己试一下,不同目标的效果差异还是挺大的,具体情况具体分析。

总结

用 Codex + MCP 做 AI 逆向整体体验还是不错的,简单场景完全可以交给 AI 来处理,复杂场景可以用 AI 辅助自己快速定位问题。以后有时间的话会再多测试几个目标,看看 AI 逆向的天花板到底在哪里。感谢大家的阅读!

本文章首发于个人博客 LLLibra146’s blog

本文作者:LLLibra146

更多文章请关注公众号 (LLLibra146):LLLibra146

版权声明:本博客所有文章除特别声明外,均采用 © BY-NC-ND 许可协议。非商用转载请注明出处!严禁商业转载!

本文链接
https://blog.d77.xyz/archives/a4e50c1b.html