用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类型的代码也非常健壮。

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

相关推荐
加班是不可能的,除非双倍日工资1 小时前
css预编译器实现星空背景图
前端·css·vue3
wyiyiyi2 小时前
【Web后端】Django、flask及其场景——以构建系统原型为例
前端·数据库·后端·python·django·flask
gnip2 小时前
vite和webpack打包结构控制
前端·javascript
excel2 小时前
在二维 Canvas 中模拟三角形绕 X、Y 轴旋转
前端
阿华的代码王国3 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
一条上岸小咸鱼3 小时前
Kotlin 基本数据类型(三):Booleans、Characters
android·前端·kotlin
Jimmy3 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
ZXT3 小时前
promise & async await总结
前端
Jerry说前后端3 小时前
RecyclerView 性能优化:从原理到实践的深度优化方案
android·前端·性能优化
画个太阳作晴天3 小时前
A12预装app
linux·服务器·前端