【AI赋能】MCP+Skill能力下的前端JS逆向自动化落地(附工具)

【AI赋能】MCP+Skill能力下的前端JS逆向自动化落地(附工具)

项目地址

https://github.com/Fausto-404/js-reverse-automation--skill

js-reverse-automation--skill

结合chrome-devtools-mcp的能力并加上Skill的规范,实现JSRPC+Flask+autoDecoder方案的前端JS逆向自动化分析,提升JS逆向的效率

适用场景

  • 需要快速落地前端签名/加密参数逆向
  • 需要将js逆向逻辑封装为可复用的代码
  • 需要与 Burp 配合进行抓包、改包

流程设计思路

针对js逆向中常用的远程调用法进行js逆向(如JSRPC+Mitmproxy、JSRPC+Flask等)中,初始配置阶段中面对的定位加密函数、编写注册代码、编写python代码等繁琐操作,通过引入AI的MCP和Skill技术进行赋能,让AI自动完成函数发现与注册代码生成,最终实现从“半自动”到“高自动”的跨越,人员全程只需下方指令,并最终配置一下burp即可完成JS逆向的全流程。

核心能力

  • 基于 MCP 连接真实浏览器,触发并跟踪js加密/签名链路
  • 自动定位 sign / enc / token 等关键参数生成入口
  • 自动生成 JSRPC 注入与注册代码
  • 自动生成 Python Flask 代理代码
  • 输出 Burp autoDecoder 对接说明,支持端到端联调
  • 支持AntiDebug_Breaker的11项反调试能力

项目结构

js-reverse-automation--skill/ ├── README.md # 项目说明、使用方式、更新说明和结构说明。 ├── SKILL.md # Skill 主控文件。只负责定义任务如何被触发、必须输入什么、流程怎么分阶段、输出和验收怎么要求。 ├── agents/ │ └── openai.yaml # Skill 的 agent 入口配置。负责定义默认提示词、默认输入格式和执行约束。 ├── artifacts/ # 运行期目录,用来承接流程中间产物和最终校验报告。预期会出现的文件如下: │ ├── artifacts/phase0_input.json # 规范化后的输入 │ ├── artifacts/phase1_trace.json # 浏览器链路复现结果 │ ├── artifacts/phase2_entrypoints.json # 参数入口识别结果 │ ├── artifacts/phase3_dependencies.json # 依赖、上下文和调用方式提取结果 │ └── artifacts/validation_report.json # 最终校验报告 ├── references/ │ ├── references/workflow-recon.md # 阶段流程说明书。 │ ├── references/output-contract.md # 输入输出契约说明书。 │ ├── references/failure-recovery.md # 失败恢复和诊断格式说明书。 │ ├── references/validation-checklist.md # 验收标准说明书。 │ └── references/antidebug/ │ ├── references/antidebug/debugger-loop.md # 处理无限 debugger、eval、Function 类问题。 │ ├── references/antidebug/console-detect.md # 处理控制台检测、日志篡改、清屏等问题。 │ ├── references/antidebug/timer-check.md # 处理时间差、性能计时、Promise 时序检测。 │ ├── references/antidebug/env-detect.md # 处理窗口大小、webdriver、UA、DevTools 检测等环境识别问题。 │ ├── references/antidebug/proxy-guard.md # 处理跳转、关闭页面、history、代理拦截等链路阻断问题。 │ └── references/antidebug/dynamic-alias.md # 处理动态别名、wrapper、resolver 型入口和不稳定路径。 └── scripts/ ├── scripts/check_inputs.py # 输入校验器。 ├── scripts/emit_analysis_result.py # 统一分析产物生成器。 ├── scripts/emit_jsrpc_stub.py # JSRPC 代码生成器。 ├── scripts/emit_flask_proxy.py # Flask 代理生成器。 ├── scripts/emit_burp_doc.py # Burp autoDecoder 文档生成器。 └── scripts/validate_artifacts.py # 全链路校验器。

使用示意

这边演示使用的是codex5.3(其他平台同理)

1、下载skills放置在codex的skills目录中,mac端的路径为/Users/用户名/.codex/skills/

2、将chrome-devtools-mcp服务写进 Codex 的配置

codex mcp add chrome-devtools -- npx -y chrome-devtools-mcp@latest

3、修改 Codex 的配置文件MAC的在~/.codex/config.toml,添加如下字段

[mcp_servers.chrome-devtools] command = "npx" args = ["-y", "chrome-devtools-mcp@latest"]

4、检测是否生效

5、启动mcp服务,当看到打开浏览器后MCP服务就配置好了。

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --remote-debugging-port=9222 \ --remote-debugging-address=0.0.0.0

6、在codex客户端中使用该skills

7、输入所需要的信息

1、目标网址(完整 URL): 2、需要分析的加密参数名(如 sign / enc / token): 3、可复现请求示例(优先给 fetch/抓包原始请求): 4、环境限制(浏览器版本、是否需要代理/插件、是否允许注入):

8、等待程序运行完成即可

效果检验

1、启动JSRPC

2、在浏览器开发者工具的Console中,执行JSRpc项目中的 JsEnv_Dev.js文件内容。

3、在控制台注入AI生成的jsrpc_inject_hr_ncu_password.js。

4、测试jsrpc调用函数是否正常,可以看到是没问题的。

http://127.0.0.1:12080/go?group=fausto&action=generate_password_md5&param=111111

5、运行flask_proxy_hr_ncu.py

6、测试Flask是否可以正常加密,可以看到也是没问题的。

curl -X POST http://127.0.0.1:8888/encode \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "dataBody=username=111111&password=111111&code=1234&role=000002"

7、最后根据Burp autoDecoder 配置说明配置burp的autoDecoder插件,也成功加密了参数,整体成功运行完成

引用工具

首发地址

【AI赋能】MCP+Skill能力下的前端JS逆向自动化落地

作者:Fausto

https://xz.aliyun.com/news/91527

文章转载自 先知社区

Read more

开源一套正在建设的现代 C++ 教程!

开源一套正在建设的现代 C++ 教程!

🚀开源一套正在建设的现代 C++ 教程! 笔者吐槽:靠有点像卖课的,但真不是,笔者纯出于兴趣维护的。笔者想了想,有时候光看各种各样的文章。显得太零碎。亮出来代码示例吧,显得太冗余。那为什么不专门维护一个仓库好好做这个事情呢? 所以笔者决定,试试看利用Github仓库托管一下。 TL;DR 好的教程都有TL;DR,一句话——这边请: GitHub Pages: 点击访问,获得更好更加流畅的阅读体验(嘶,Github静态网页有可能访问速度比较慢,如果有朋友有需求,可以尝试看看下面的仓库克隆下来本地预览) 啥,想看看原仓库,在这里: 👉:Awesome-Embedded-Learning-Studio/Tutorial_AwesomeModernCPP: 现代 C++ 嵌入式(MCU/Linux)开发完整教程,深入讲解 C++11–C++23、零开销抽象、RAII 与性能优化! 现在正在想办法看看支持模拟机和真机实战确保代码可靠。

By Ne0inhk
计算机基础知识总结(八股文总结----计算机网络、操作系统、数据库、c++、数据结构与算法)

计算机基础知识总结(八股文总结----计算机网络、操作系统、数据库、c++、数据结构与算法)

一、操作系统 0.内存管理 01.什么是虚拟内存?为什么需要虚拟内存? 虚拟内存为程序提供比实际物理内存更大的内存空间,同时提高内存管理的灵活性和系统的多任务处理能力。虚拟地址空间就是进程所能看到的内存空间,这段空间是连续的、独立的,实际地址空间则是内存上的空间,这段是所有进程共享的、有限的空间。虚拟内存就是把实际地址空间映射到虚拟地址空间的技术,这样就实现了内存隔离、内存扩展、物理内存管理、页面交换等技术。内存隔离就是每个进程都有自己的虚拟地址空间,因此一个进程无法访问另一个进程的内存。内存扩展就是虚拟内存让每个进程拥有比实际大的内存空间地址,可以处理更多的数据、更大的进程。物理内存管理,内存空间不足时把不常用的数据转移到硬盘上,释放内存,以助于更多进程使用。页面交换,进程可能会造成外部内存碎片,可能会导致内存空间不足,这时把不常用的数据交换到硬盘上,再交换回来,就能消除内存碎片,之前技术是内存分段,现在都是内存分页,一页或几页的内存交换就能解决内存不足的问题,而且效率高,内存分段的大数据在硬盘上读取速度慢。 02.什么是内存分段和分页?作用是什么? 内存分段是将一个程序

By Ne0inhk
深入理解 Java 虚拟机-04 垃圾收集器

深入理解 Java 虚拟机-04 垃圾收集器

深入理解 Java 虚拟机-04 垃圾收集器 收集算法是内存回收的方法论,而垃圾收集器是内存回收的实践者。 JDK 9 之后,(Serial,CMS) 以及(ParNew,Serial Old)的组合已经被废弃了,默认收集器也变成了 G1。 垃圾回收就像打扫房间一样,当你在打扫房间的时候同时又在制造垃圾,那么房间很难打扫干净,因此 Java 垃圾回收一个被人所诟病的点就是 Stow The World(stw),直译就是停止这个世界,即 Java 垃圾回收会导致某段时间内进程完全无响应,在当前越来越追求低时延的环境下,这是很多系统不愿意接受的。 除了时延,还有一个关注的方向是吞吐量,比如把房子全部打扫一遍,那么接下来很久可能都不用再打扫了,如果每次只打扫一块区域,那么确实打扫的很快,但接下来又会频繁打扫。 因此虽然随着技术的进步,收集器的综合表现(内存占用、延迟、吞吐量)在提高,但直到现在还没有最好的收集器出现,更加不存在“万能”

By Ne0inhk
Windows下MATLAB与C/C++混合编程:DLL生成与调用实战

Windows下MATLAB与C/C++混合编程:DLL生成与调用实战

Windows下MATLAB与C/C++混合编程:DLL生成与调用实战 在科学计算与工程开发中,MATLAB凭借其便捷的矩阵运算和可视化能力广受青睐,但面对大规模数据处理或高性能算法时,C/C++的执行效率优势无可替代。将二者结合,通过动态链接库(DLL) 实现混合编程,既能发挥MATLAB的易用性,又能借助C/C++提升核心代码性能。本文将手把手教你在Windows环境下完成从C/C++ DLL编写、编译到MATLAB调用的全流程,附带完整代码与避坑指南! 一、核心原理与准备工作 1. 核心逻辑 C/C++编译生成的DLL文件包含可被外部程序调用的函数,通过__declspec(dllexport)声明导出函数,并使用extern "C"指定C链接规范,避免C++的名称修饰(name mangling)问题,确保MATLAB能正确识别函数名。 MATLAB通过loadlibrary函数加载DLL,解析函数接口后,使用calllib函数调用目标函数,实现数据交互。 2.

By Ne0inhk