从混淆到清晰:JavaScript 代码解密与还原全流程解析

日常开发和逆向分析中,混淆 JavaScript 是一道常见难题。本文通过一个真实案例,介绍从混淆逻辑分析、工具辅助解密,到 AI 智能还原的完整流程,手把手带你打通混淆逆向全链路!


🧩 一、混淆代码特征分析

以下是一段典型的混淆代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const $ = new Env('京东CK检测');
var kOO_J9i = Object['\x64\x65\x66\x69\x6e\x65\x50\x72\x6f\x70\x65\x72\x74\x79'];
function WvmPoH9() {
return globalThis;
}
function Lp9NBE(Fzg3ZL, kOO_J9i) {
switch (UDNYTGZ) {
case 0x15:
return !Fzg3ZL;
case 0xe:
return Fzg3ZL / kOO_J9i;
case -6:
return Fzg3ZL + kOO_J9i;
}
}

🔍 混淆技巧总结:

技巧类型 说明
✅ 变量名混淆 kOO_J9ioxQLoKs 无语义可读性
✅ 十六进制转义 \x64\x65\x66... 实际为 defineProperty
✅ 控制流混淆 switch-case + 全局变量控制分支
✅ 冗余代码 大量无用函数,比如 WvmPoH9 获取全局对象
✅ 逻辑拆分 将一条简单逻辑拆成多个无意义函数

🛠 二、选择并使用解密工具

为应对此类混淆,推荐使用开源项目 decode_action

🔧 2.1 工具原理简介

  • 使用 AST(抽象语法树)对 JS 代码进行解析
  • 识别混淆类型,自动还原控制流/变量/结构
  • 支持插件式多种混淆风格识别
1
2
3
4
5
const plugins = [
{ name: 'obfuscator', plugin: PluginObfuscator },
{ name: 'sojsonv7', plugin: PluginSojsonV7 },
...
];

📝 2.2 解密使用步骤

  1. Fork 仓库
  2. 上传混淆脚本至 input.js
  3. 手动触发 GitHub Actions
  4. 获取 output.js 解密结果

解密后即获得“未混淆但未优化”的中间代码。


🤖 三、AI 辅助优化解密代码

解密后的代码通常仍然语义不清晰,可读性差。接下来借助 AI 工具(如 ChatGPT)进一步提升可维护性:

🔁 3.1 变量与函数语义化

AI 提示词示例:

请分析以下 JavaScript 代码,为变量和函数进行语义化重命名,并保留功能逻辑不变。

🎯 示例优化前后:

1
2
3
4
5
6
7
8
9
10
11
12
// Before
function Lp9NBE(Fzg3ZL, kOO_J9i) {
switch (UDNYTGZ) {
...
}
}
// After
function operateValues(value1, value2) {
switch (operationType) {
...
}
}

🧾 3.2 自动注释生成

AI 提示词:

请为以下代码添加函数功能说明、关键逻辑解释、变量含义注释等,提升整体可读性。

1
2
3
4
5
6
/**
* 检测京东 Cookie 有效性
*/
async function checkCookieValidity(cookieInfo) {
// ...
}

🧱 3.3 结构优化建议

  • 合并重复逻辑
  • 抽离公共模块
  • 统一风格 & 函数组织结构

🧪 四、调试与错误修复

混淆还原 + AI 优化后仍需 人工调试,常见问题包括:

问题类型 说明
❌ 变量未定义 可能混淆作用域破坏
❌ 函数参数错乱 可能还原错位
❌ 环境差异 依赖特定平台如 Node / 浏览器

🎯 解决建议:

  1. 精确收集错误日志
  2. 使用 AI 协助修复逻辑(例如 ReferenceError 修复)
1
2
3
if (isQinglongEnv && qinglongApi?.getstatus) {
cookieStatus = await qinglongApi.getstatus(id);
}

📌 五、总结与展望

🧵 完整流程梳理:

  1. 🔍 分析混淆特征
  2. 🛠 使用 decode_action 自动解密
  3. 🤖 借助 AI 语义优化与重构
  4. 🧪 人工调试与修复完善

AI 已成为逆向分析者的重要助手。熟练使用 AI 与工具,将显著提升混淆代码处理效率与质量。

未来或许我们能实现“一键还原可维护代码”,但现在——你,就是那个在黑夜里点灯的人!


🎓 延伸阅读 & 工具推荐