用AI解析JavaScript代码 进行逆向反编译

前言

日常工作中,产品同学经常会甩过来一个贼拉炫酷的网页问我:'这个效果能做吗?我就要这样的!' 面对这种需求,我们当然要干他(为了生活隐忍下来)。

为了复现效果,我们便去查看网页源代码,结果一看------瞬间蒙圈!

这种便是JavaScript的压缩混淆

JavaScript 压缩混淆

在现代网页开发中,JavaScript 压缩(Minification) 与 混淆(Obfuscation) 几乎是必不可少的环节。

早期的 JS 代码承担功能少,逻辑简单且体积小,不需要保护。但随着技术的发展,JS 承担的功能越来越多, 文件体积增大。为了优化用户体验,开发者们想了很多办法去减小 JS 文件体积,以加快 HTTP 传输速度。JS 压缩(Minification)技术应运而生。

压缩工具开发的初衷是减小 JS 文件体积,但 JS 代码经过压缩替换后,其可读性也大大降低,间接起到了保护代码的作用。

JavaScript 混淆(Obfuscation)是指通过一系列技术手段,使 JS 代码变得难以理解和分析,增加代码的复杂性和混淆度,实际上就是一种保护 JS 代码的手段。

常见混淆手段

变量名/函数名的替换,通过将有意义的变量名和函数名替换为随机生成的名称。

lua 复制代码
/*
function calculateArea(radius) {
  return Math.PI * radius * radius;
}
console.log(calculateArea(5));
*/
function _0x2d8f05(_0x4b083b) {
  return Math.PI * _0x4b083b * _0x4b083b;
}
console.log(_0x2d8f05(5));

代码转换,将代码转换为等价的,但更难理解的形式。

ini 复制代码
/*
let a = 1;
let b = 2;
let c = a + b;
console.log(c);
*/
let a = 1;
let b = 2;
let c = a - (-b);
console.log(c);

如何理解这些代码?

1. 格式化

现代浏览器通常都支持自动格式化功能。只需点击"Source"选项卡,然后选中相应的 JavaScript 文件,再点击"美化输出"(Pretty Print)按钮,即可实现代码的自动格式化。

2. 使用工具debug进行调试

在网页运行时,我们同样可以利用浏览器内置的调试功能进行代码调试。通过调试工具,可以查看 JavaScript 代码的执行过程,监控变量的变化,以及分析逻辑实现。 然而,这种方式的调试效率仍然较低,尤其是在代码经过压缩或混淆后,变量名被替换为诸如 abc 等无意义的名称,使人难以理解。

解决方案

用AI进行理解学习

我们可以通过将代码转换为抽象语法树(AST),利用 AI 对其进行分析与理解。在此基础上,结合 AI Agent 的协同能力,让 AI 能够深入理解代码的复杂上下文,有效解决第三方库识别、变量名混淆等难题。

这是一个国外有趣的pixi游戏demo,整个游戏好玩有趣,交互灵活。但偏游戏类实现起来往往比较复杂,需要找对正确的实现思路。

我花了几天时间开发了一个小工具网站,帮助大家省去手动进行AST转换和接入Agent分析的麻烦。只需复制需要解析的源代码,即可直接输出分析结果。

www.jsunpack.tech (欢迎大家体验一下)

我们把一部分需要分析的函数粘贴到这个网站,点击执行后,立刻得到了结果。

可以看到有完整的注释,ts类型的代码也非常健壮。

我拿自己的一些代码测试的过程中,甚至发现生成的代码比我自己写的源码还要优秀 - -||

相关推荐
代码搬运媛8 小时前
Jest 测试框架详解与实现指南
前端
counterxing9 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享
前端·agent·ai编程
wangqiaowq9 小时前
windows下nginx的安装
linux·服务器·前端
之歆9 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
发现一只大呆瓜9 小时前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手
前端·面试·vite
Maimai1080810 小时前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案
前端·javascript·react.js·microsoft·前端框架·reactjs·webassembly
candyTong10 小时前
Claude Code 的 Edit 工具是怎么工作的
javascript·后端·架构
kyriewen11 小时前
产品经理把PRD写成“天书”,我用AI半小时重写了一遍,他当场愣住
前端·ai编程·cursor
humcomm12 小时前
元框架的工作原理详解
前端·前端框架
canonical_entropy12 小时前
Attractor Before Harness: AI 大规模开发的方法论
前端·aigc·ai编程