javascript中的模糊处理

obfuscation in javascript

本文关键字:处理 模糊 javascript      更新时间:2024-02-01

im试图混淆vb.net中的字符串和javascript中的deobfusrate。

For i = 0 To Len(sData) / 4
    For j = 1 To 4
        ConvertData2 = ConvertData2 & Mid$(sData, (4 * i) + 5 - j, 1)
    Next j
Next i

上述代码在vb.net中运行良好。我需要javascript 中的等效代码

我试过下面的一个,但没用。

for (i = 0; i<(sData.length)/4; i++)
{
    for (j = 1;j<4;j++)
        s=s+sData.substr((4 * i) + 5 - j,1)                  
}

任何人都可以提出我在哪里犯了错误。。

首先,Javascript字符串索引从0开始,而不是从1开始。无论如何,您的for (j=1; j<4; j++)循环只能从1计数到3;您希望从0到3(j=0j<4)或从1到4(j=1j<=4)。

VB的直接翻译如下:

convertData2 = ''
for (var i=0; i < sData.length / 4; ++i) {
   for (var j=1; j <= 4; ++j) {
       convertData2 += sData.substr(4 * i + 4 - j, 1)
   }
}

第一个明显的区别是在vb.net中使用整数除法,而在javascript中则不。。。

使用

for(var i = 0, len = Math.floor(sData.length / 4); i<=len; i++)

二是Mid从1开始计数,而subst从0开始

所以使用

s = s + sData.substr((4 * i) + 5 - j -1,1) 

或简化

s = s + sData.substr((4 * i) + 4 - j,1) 

最后,循环,当使用<时,不使用最后的数字。。。而from.. to也使用最后一个数字(所以使用<=

所以

var s = ''; // define s (if not yet defined) other wise use s = '' to make sure it starts empty..
for(var i = 0, len = Math.floor(sData.length / 4); i <= len; i++) {
   for (var j = 1 ; j <= 4; j++) {
       s = s + sData.substr( (4 * i) + 4 - j,1);
   }
}