JS加密高级技巧:分块加密

文章介绍了JS代码的分块加密技术,特别提到其在微信小游戏过审时的优势。通过对比普通加密与分块加密的效果,强调分块加密能避免大数组特征,提高过审几率,并且在安全性上有更好表现。推荐使用JShaman等工具进行JS代码的分块混淆加密。
# JS加密高级技巧:分块加密
非常适用微信小游戏过审的JS代码加密方法

如题所示,本文介绍一种JS加密高级技巧:分块加密。

一般情况下,对JS代码进行加密混淆时,是一次性将代码加密,可能是一段JS代码,可能是一整个JS文件。

而在某些情况下,需要加密效果更好、颗粒化更细。

这时便可使用“分块加密“法。即:把整体代码分成多部分,一部分一部分的进行加密,如:按函数进行独立加密。

微信小游戏过审时,使用这种方法效果非常好,通过率很高。

下面通过一个例子演示效果。

注:加密JS代码,演示使用国内知名的JS代码加密工具:JShaman

 

js加密平台:JShaman.com

测试代码:

function a(){
console.log("JShaman");
}
function b(i){
var j=i;
console.log(j)
}
function c(){
var a = " http://jshaman.com";
var b = " javascript obfuscate";
return a+b;
}
console.log(a(),b(1),c());

一般加密

注:为更清晰展示区别,下面混淆加密时,仅使用“字符串阵列化”这一个功能,关闭了其它混沌加密选项,因此加密强度较低。

加密结果:

var _0x6888ac = ["JShaman", " http://jshaman.com", " javascript obfuscate"];
function a() {
console.log(_0x6888ac[0]);
}
function b(i) {
var j = i;
console.log(j);
}
function c() {
var a = _0x6888ac[1];
var b = _0x6888ac[2];
return a + b;
}
console.log(a(), b(1), c());

分块加密

加密过程:使用JShaman本地部署专业版,在命令行由脚本调用进行JS代码加密。

加密结果:

var _0x23f3ce = ["JShaman"];
function a() {
console['\x6c\x6f\x67'](_0x23f3ce[0]);
}
function b(i) {
var _ = i;
console['\x6c\x6f\x67'](_);
}
var _0x58d7fa = [" http://jshaman.com", " javascript obfuscate"];
function c(_, _2) {
return _2 = (_ = _0x58d7fa[0], _0x58d7fa[1]), _ + _2;
}
console.log(a(), b(1), c());

两者的区别是:一般加密,结果中会生成一个大数组。

如果代码量大,字符串很多,比如游戏JS代码通常可达数MB,可能字符串有数万甚至更多,那么这个数组会非常庞大。

重游戏代码提交时,都会对游戏的JS代码进行混淆加密。

而过审都会检测这个大数组特征,因此这是过审失败的重要原因。

而分块加密,则不会出现这样的大数组,而是分割成许多小数组。

此外,混淆生成的随机变量名,也有很大差别,一次性加密,生成的多是不重复的多个变量,而分块加密时,则会在不同的函数中生成同名的局部变量。

这仅是为演示区别而做的少量加密选项结果对比,当启用更多混淆加密选项时,两者的差异更大。

即使不用于游戏过审,仅是为JS代码安全性而言,使用分块加密,加密效果也好于一次性加密,因此,很推荐使用这种方法。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值