JS `Identifier Renaming` (标识符重命名) 碰撞与字典攻击反制

咳咳,各位观众老爷们,大家好!今天咱们来聊聊一个有点儿意思,但又容易被忽略的话题:JavaScript 代码混淆中的标识符重命名碰撞与字典攻击反制。 先别打瞌睡,这玩意儿听起来高深,其实啊,就是给你的代码穿上一层迷彩服,让坏人不好直接看懂。 第一幕:为啥要改名字? 想象一下,你辛辛苦苦写了一个游戏,结果别人直接把你的 JavaScript 代码扒下来,稍微改改就变成他的了,气不气? 标识符重命名,就是把你的变量名、函数名、类名等等,改成一些毫无意义的字符,比如把 userName 改成 _0xabc123,把 calculateScore 改成 a。这样,即使别人拿到你的代码,也看不懂这些变量是干嘛的,增加了理解和修改的难度。 第二幕:重命名也有门道 重命名看似简单,但如果瞎改一通,可能会适得其反。最常见的问题就是“碰撞”,也就是不同的标识符被改成了相同的名字。 // 原始代码 function calculateSum(a, b) { let result = a + b; return result; } function calculateProduct(a, b) { let …