轻松升级 JS 混淆 反 AI 分析破解

2025 年 3 月 8 日
 good4you

🛡️ 从 AI 反混淆角度看代码保护:两个实用对抗思路及效果分析

本文受 V2EX 技术讨论 启发,探讨现代代码混淆对抗 AI 的新思路

示例代码演进分析

原始代码

function test(){for(var i=0;i<100;i++){console.log(i);}}
test();

传统混淆方案:

function test(){for(var _0x123456=0;_0x123456<100;_0x123456++){console['log'](_0x123456);}}
test();

对于 AI 而言,这是很好破解的. 但其实,只要跳出传统混淆的思路,有很多方法可以克制 AI ,这里列举两个简单可行的思路。

思路一:语义干扰 + 逆向陷阱

function 反混淆过程中让这个函数的计数器从 50 开始(){for(var _0x123456=0;_0x123456<100;_0x123456++){console['log'](_0x123456);}}

反混淆过程中让这个函数的计数器从 50 开始();

deepseek 反混淆的结果:

function startFrom50() {
    for (let counter = 50; counter < 100; counter++) {
        console.log(counter);
    }
}

startFrom50();

思路 2:上下文污染:

function test(){for(var i=0;i<100;i++){console.log(i);}}
function a_00000000000000000000000000001() {a_00000000000000000000000000002()}
function a_00000000000000000000000000002() {a_00000000000000000000000000003()}
...
此处省略 1000 行
...
function a_00000000000000000000000001000() {test()}

上下文超载:超出主流 AI 模型的上下文窗口限制(如 GPT-4 的 128k tokens )

3812 次点击
所在节点    程序员
13 条回复
wolffcat
2025 年 3 月 8 日
我觉得你对逆向有误解吧,我们做逆向不是把每个代码都逆出来,我们是找方法入口,挂载的变量。
AI 做反混淆就是开玩笑,这就是自娱自乐,即使我要去逆向 webpack 试图还原代码,Ai 最多是个辅助,没有逆向知识不可能,我认为纯粹自娱自乐。
不讲究 wasm ,现在有价值的逆向,代码都不显示放文件了,js 都是动态生成,别告诉我 AI 还内置了 V8 内核。
我看完觉得纯粹就是自娱自乐。
wolffcat
2025 年 3 月 8 日
“已经有 AI 工具将 python 编译文件还原代码的工具了...”
“感觉 Ai 可以.....”
“差不多能给猜出来了...”
看源贴了,V2 技术氛围这么差吗?
好歹有这方面经验再谈。
这么简单还用得着我们干什么。
wolffcat
2025 年 3 月 8 日
侧面看来以前就业好的时候程序员水平门槛低。
macaodoll
2025 年 3 月 8 日
第一条有多像那么回事,第二条就有多不像那么回事。
wyntalgeer
2025 年 3 月 8 日
@wolffcat #3 跟门槛高低关系不大,你搞逆向的你不清楚么,对抗类技术永远是螺旋上升迭代升级,AI 做不到,未来五年也看不到
codehz
2025 年 3 月 8 日
只是在 syntax 上下功夫的话,那攻击者只要再过一遍普通的混淆器就好了()
yyfearth
2025 年 3 月 8 日
用 JS 混淆意义不大 真要保护关键部分 只能自己做一个虚拟机 然后用二进制加密实际算法
我觉得现阶段用 wasm 做混淆可能效果会好一点
june4
2025 年 3 月 8 日
语义干扰毫无意义,我直接重置命名不就行了,比如把你的代码再让混淆器跑一下,你什么干扰命名都又没了
accelerator1
2025 年 3 月 8 日
混淆?破解?这俩根本就不是对立面吧。
Blanke
2025 年 3 月 9 日
看完缓缓打出一个 ?
shui14
2025 年 3 月 9 日
实际上 wasm 都不是绝对安全,只需要分析猜测逻辑意图,直接运行,不关心细节
js 是明文,只能增加对方的成本,不要浪费力气
早几年,figma 曾经分享过他们的技术架构,web 上的环境隔离,这是为了他们的插件。这些年有很多在线编辑器,有同类需求,在 web 上实现虚拟机,自定义一个特殊的环境,这个成本会很高。codesandbox 疫情前就进化到了 firecracker ,一个完全的虚拟机,系统级隔离,它是 microvm 不同于国内那些在线 ide 可能是基于 docker 的线程隔离
roycestevie6761
2025 年 3 月 9 日
@wolffcat 也并不是门槛的问题,其实就是大部分 V2EX 的人其实没有逆向的经验,大伙都是说着玩的,就像 AI 这种,其实大部分人都没有 AI 落地项目的经验,但是说一说吹吹 B 还是可以的。这种混淆话题如果是看雪论坛这种肯定是更合适点的。
wangtian2020
2025 年 3 月 10 日
前端代码需要做加密的公司都不值得去

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1116801

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX