Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
奇怪的解码JavaScript代码_Javascript - Fatal编程技术网

奇怪的解码JavaScript代码

奇怪的解码JavaScript代码,javascript,Javascript,在我学习JavaScript的过程中,我今天在一个脚本中遇到了这个奇怪的代码,我试图阅读它的代码并理解它 var j =["\\1A\\W\\1g","\\X\\S\\1p\\M","\\I\\G\\x\\H\\x\\H\\V\\I\\M","\\s\\W\\L\\1o\\z","\\W\\z\\W\\H","\\1v\\S\\1p\\1B\\T\\z\\1C\\G\\x\\I\\M\\G\\H\\V"]; 我试着像这样记录j变量的值 console.log(j[1] + '' + j[2]

在我学习JavaScript的过程中,我今天在一个脚本中遇到了这个奇怪的代码,我试图阅读它的代码并理解它

var j =["\\1A\\W\\1g","\\X\\S\\1p\\M","\\I\\G\\x\\H\\x\\H\\V\\I\\M","\\s\\W\\L\\1o\\z","\\W\\z\\W\\H","\\1v\\S\\1p\\1B\\T\\z\\1C\\G\\x\\I\\M\\G\\H\\V"];
我试着像这样记录j变量的值

console.log(j[1] + '' + j[2] + '' + j[3] + '' + j[4] + '' + j[5] + '' + j[6]);

但不幸的是,控制台给了我一个“未定义”的错误。那么,有没有人能帮我弄清楚如何阅读这段代码。

正如其他人在评论中提到的,这是JavaScript混淆。从外观上看,它试图从页面读取值(通过jQuery)。下面是一个快速细分:

在与脚本链接的小提琴中,您会发现在
minified
packed
code上调用了eval。它由两部分组成——执行的脚本和传递的参数。当您美化脚本时,它如下所示:

function(d, e, a, c, b, f) {
    b = function(a) {
        return (a < e ? "" : b(parseInt(a / e))) + (35 < (a %= e) ? String.fromCharCode(a + 29) : a.toString(36))
    };

    if (!"".replace(/^/, String)) {
        for (; a--;) f[b(a)] = c[a] || b(a);
        c = [function(a) {
            return f[a]
        }];
        b = function() {
            return "\\w+"
        };
        a = 1
    }

    for (; a--;) c[a] && (d = d.replace(new RegExp("\\b" + b(a) + "\\b", "g"), c[a]));

    return d
}
eval本身中断,因为
code\u text
在执行
$(\u 0x52e0[111])[\u 0x52e0[110]])时试图设置值
,它是-deobfuccated,是
$('.buyer')['text']()

我的猜测——纯粹是我的猜测,因为这取决于代码将在何处执行,这是因为它被注入到一个电子商务网站,该网站读取一个值(基于
买家
文本),并发送(或重定向)到一个(秘密)博客或另一个URL


不管怎样,希望这对学习JS有帮助,并且玩得开心

首先,你应该美化代码。如果代码乱七八糟的话,真的很难看出该去哪里。第一步是让它更漂亮(我用的)

从中您将看到类似以下代码:

eval(function(d, e, a, c, b, f) { ... }(...))
因为不涉及复杂的混淆,我们可以简单地用变量语句替换
eval

var x = (function(d, e, a, c, b, f) { ... }(...))
这里我们基本上是告诉变量“x”等于函数返回的代码。接下来,
console.log()
x的值

console.log(x);
您会注意到,现在代码的可读性更强了,前进!如果查看输出代码,您会注意到它遵循类似的编码字符模式。我们可以通过将代码输入jsbeautifier的简单文本区域并选中“Unescape Printable Chars”来解除代码的使用

从这里,您将注意到呈现代码底部的另一条
eval
语句。我不会再往下讲了,但希望这篇文章能给你一些除臭的基础知识。要继续deobfousation,只需删除if语句并将eval更改为另一个变量声明和返回的
console.log()

当你深入到除臭剂中,你将能够更多地理解其来源

如果您想查看JavaScript模糊器的源代码,它是开源的


祝你好运

数组是从零开始的,所以您应该从
0
开始。类似这样:
console.log(j[0]+''+j[1]+'+j[2]+'+j[3]+'+j[4]+'+j[5])这看起来像是混淆javascript。它试图通过隐藏粘贴代码的功能来防止人们复制粘贴代码作为自己的代码。@JackPattishall,即使你从零开始,它也没有work@rlb.usa由于JavaScript是客户端,所以无法隐藏代码。因此,应该有一种方法让你能够阅读这段代码。如果没有除臭功能,字符串本身是无用的。如果您查找将
j
转换为可读代码的函数,然后在通常返回/执行结果的位置添加
console.log()。
var x = (function(d, e, a, c, b, f) { ... }(...))
console.log(x);