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