JS混淆加密:僵尸代码
僵尸代码植入,是JS混淆加密中一项很有用的技术。
比如JShaman,作为国内知名的JS混淆加密产品,便具备这一功能。
它可以给原始代码中增加一些额代的功能代码,比如:变量定义、函数调用、if语句、switch语句,等等,以及这些新增代码之间的互相调用,甚至原始代码也会调用这些新增代码。
这样,逻辑上而言,原始代码会凭空多出了许多新代码、新调用关系。
但是,这些新增的代码,虽然存在,却不会影响原始代码的正常执行、正常逻辑。这些被新增的代码,即是“僵尸代码”。
但它是非常有用的,直观的用途便是:防止代码被任意分析。新增的僵尸代码,会干扰分析过程、干扰逆向分析。因为僵尸代码是混在原始代码中的,且有互相调用关系,因此使人很难分清楚哪些是原始正常功能的代码、哪些是新增出来的代码。
此外,更有用的是:它对于小游戏、小程序过审非常有帮助。业内人都知道,当相似的小游戏或小程序代码提交审核时,常常会因为代码雷同而被判定为代码侵权。而僵尸代码植入功能,会凭空新增出不同的新代码,特别是:每次JS混淆加密所增加的“僵尸代码”还是随机的、不同的。因而极大的降低代码与之前的相似度,从而更容易过审。