news 2026/10/9 10:07:29

JSHookMCP JS Hook与LLM反混淆:如何定位加密函数并还原混淆逻辑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JSHookMCP JS Hook与LLM反混淆:如何定位加密函数并还原混淆逻辑

JSHookMCP JS Hook与LLM反混淆:如何定位加密函数并还原混淆逻辑

【免费下载链接】jshookmcpjs hook toolkit that all you need项目地址: https://gitcode.com/gh_mirrors/js/jshookmcp

面对一段被压缩、变量名全被改写成_0x1a2b的 JS 代码,手动找加密函数几乎是不可能的。开源项目JSHookMCP是一个为 AI 智能体打造的 JS Hook 与前端逆向工程工作台,内置detect_crypto(加密算法检测)、deobfuscate(webcrack 反混淆)、js_deobfuscate_pipeline(三段式还原管线)等工具,还能借助LLM 反混淆能力自动给混淆标识符起出有意义的名字——把"定位加密函数 + 还原混淆逻辑"变成一条可复现的自动化流水线 🧩。

为什么传统方式很难还原混淆代码?

前端反混淆通常卡在三道坎上:

难题表现手工破解的痛点
字符串数组加密所有字符串被移入数组并旋转,运行时再解码要自己写解码器还原上千个字符串
控制流平坦化直线逻辑被拆成巨型switch派发循环肉眼无法还原原始执行顺序
VM 字节码保护真实逻辑藏在自定义虚拟机指令里需要手工逆向整个解释器

JSHookMCP 的思路是让 AI Agent 直接调用结构化的分析工具,每个环节都有对应的专门工具,而不是一句"帮我分析"全靠模型猜。

第 1 步:收集脚本并定位加密函数 🔍

先用collect_code从目标页面收集全部脚本(含内联脚本、动态加载脚本),再用search_in_scripts按关键词检索encrypt、AES、sign、token等线索,最后调用detect_crypto检测加密算法与使用模式。这套"收集 → 搜索 → 识别"的组合拳,工具定义在 definitions.ts,语义分析的执行逻辑在 code-understanding.ts。

定位到疑似加密函数后,understand_code会从结构、业务、安全三个维度做语义分析,帮你判断"这个函数到底是不是签名核心",避免在几十个候选函数上逐一死磕。

第 2 步:按混淆类型选择还原工具 🛠️

detect_obfuscation会先告诉你代码用了哪些混淆技术,再对症下药:

  • 普通打包混淆(webpack/browserify):deobfuscate走 webcrack 引擎,解包 bundle、取消压缩、还原 JSX,实现见 deobfuscation.ts 与 webcrack.ts。
  • 字符串数组 + 控制流平坦化:js_deobfuscate_pipeline提供"预处理 → 反混淆 → 人类化(变量重命名)"三段管线;单点问题也可用analysis_decode_string_array解码字符串数组、analysis_deflat_control_flow拍平 switch 派发。
  • JSVMP 虚拟机保护:先用js_analyze_vm分析解释器结构、派发类型和操作码表,再用js_deobfuscate_jsvmp提取 VM 字节码并还原原始逻辑;detectOnly参数支持只检测不动手,见 jsvmp.ts 与 JSVMPDeobfuscator.ts。

第 3 步:LLM 反混淆——让模型给_0x1a2b起名字 🤖

规则引擎能解开结构,但"这个变量到底叫什么"需要语义理解。JSHookMCP 的llm_suggest_names工具通过 MCP 的sampling/createMessage机制,把任务委托给你客户端里已经连好的 LLM:

  1. 发送混淆代码片段与标识符列表;
  2. LLM 按"专家级 JS 逆向工程师"角色返回{ original, suggested, confidence }结构化的改名建议;
  3. 采样不可用时优雅降级,不影响主流程。

核心实现是 LLMDeobfuscator.ts,通信桥在 LLMSamplingBridge.ts。这样_0x3f2a会恢复成encryptPayload、_0xb9c1变成buildSignUrl这类可读名字——混淆逻辑从此能像普通代码一样读懂。

进阶:动态 Hook 验证 + 符号执行兜底 🧪

静态还原不确定时,还有两条后手:

  • 运行时 Hook:manage_hooks支持对函数、XHR、fetch、WebSocket、localStorage、Cookie 建立 log/block/modify 型钩子,直接在活页面里抓加密函数的真实入参出参,实现见 hooks.ts。
  • 符号执行:js_symbolic_execute遍历所有可行路径并求解路径约束,专治控制流平坦化的复杂分支;js_solve_constraints则负责求解不透明谓词与常量表达式。

一条完整的分析动线速查 ✅

阶段工具作用
收集collect_code→search_in_scripts拿到脚本、锁定线索
定位detect_crypto+understand_code识别加密算法与函数语义
诊断detect_obfuscation判断混淆类型
还原deobfuscate/js_deobfuscate_pipeline/js_deobfuscate_jsvmp按类型解包、管线化还原
人类化llm_suggest_namesLLM 恢复变量与函数名
验证manage_hooks/js_symbolic_execute动态抓参、符号执行兜底

更多工具细节可查阅官方文档中的 core 域参考 与 transform 域参考。

结语

JSHookMCP 把"JS Hook + 静态反混淆 + LLM 语义还原"整合进同一套 MCP 工具面:detect_crypto帮你定位加密函数,deobfuscate与三段式管线帮你剥掉混淆外壳,llm_suggest_names让 LLM 把代码"翻译回人话"。对新手来说,最大的价值是——你不需要先精通反混淆,只要会按顺序调用这些工具,AI 智能体就能替你完成整条还原链路 🚀。

【免费下载链接】jshookmcpjs hook toolkit that all you need项目地址: https://gitcode.com/gh_mirrors/js/jshookmcp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 10:06:48

CouchDB 原生 Erlang 查询服务器(Native Erlang Query Server)完整指南

数据库文档数据库后端 【免费下载链接】couchdb Seamless multi-primary syncing database with an intuitive HTTP/JSON API, designed for reliability 项目地址: https://gitcode.com/gh_mirrors/co/couchdb 点击查看 免费下载 CouchDB 默认通过外部进程&#x…

作者头像 李华
网站建设 2026/10/9 10:06:35

Transformer位置编码原理与实战选型指南

1. 位置编码到底在解决什么问题?——别再把它当成“加个向量”就完事了你刚接触Transformer时,大概率被这句话绕晕过:“Self-Attention本身不具备位置感知能力,所以必须引入位置编码。”但这句话背后藏着一个关键矛盾:…

作者头像 李华
网站建设 2026/10/9 10:06:34

编译原理实验:语法分析程序设计与实现全攻略

简介:这份资源是面向计算机专业学生的编译原理实验配套文档,聚焦语法分析程序的设计与实现,适合正在完成实验二、需要参考完整实现思路与代码的学习者。文档以算术表达式简化子集为分析对象,系统梳理了实验目的、BNF文法定义、LL(…

作者头像 李华
网站建设 2026/10/9 10:03:32

渔具制造“隐形冠军”乐欣户外闯关港股IPO,8个月进账4.6亿

乐欣户外通过上市聆讯,这条消息从上周五开始就在户外产业圈子里传开了。披露出来的核心数据确实很有话题性:8个月营收4.6亿元,净利润5624万元。单看这两个数字,放在A股那些动辄几十亿营收的制造企业面前不算起眼,但你要…

作者头像 李华
网站建设 2026/10/9 10:03:32

基于Spring Boot的企业活动中心场地预约管理系统设计与实现

1. 选题拆解:这套预约系统到底值不值得做先说结论:基于 Spring Boot 的企业活动中心场地预约管理系统,是我近几年见过最适合拿来做 Java 毕设的选题之一,甚至可以说它是“管理信息系统 预约场景 前后端分离”这三件事的一次标准…

作者头像 李华