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

178 天前
 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 )

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

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

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

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

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

© 2021 V2EX