什么是编写代码(greasemonkey脚本)如此加密的原因?

时间:2015-03-26 17:08:26

标签: javascript

我发现了这个:click并且想到这种编码风格背后的原因是什么?

定义像_0x3384x4这样的标识符,对于人类来说是不可读的......?!

或编写对象属性,如:

{
    "\x63\x68\x61\x72\x73": ' \uD83D\uDE23 ',
    "\x63\x6C\x61\x73\x73": '_1az _1a- _2gc',
    "\x6E\x61\x6D\x65": 'Bi\u1EC3u t\u01B0\u1EE3ng vui 18'
}

这可以这样写,不是吗?

{ chars="  ", class="_1az _1a- _2gc", name="Biểu tượng vui 18"}

是不是因为有些旧电脑无法显示这些字符?它有点丑化,保护javascript代码吗?

它是什么类型的格式(0x7892x8)十六进制,它代表什么? (eval("0x7892")评估30866,但0x7892x8表示30866的第8版...对我没有意义?!

1 个答案:

答案 0 :(得分:0)

这不是编码风格。它是obfuscation

来自维基百科:

  

在软件开发中,混淆是故意创造的行为   混淆代码,即难以获得的源代码或机器代码   人类要明白。像自然语言中的混淆一样,它可能会使用   用不必要的迂回表达来撰写陈述。

     

程序员可能会故意混淆代码以隐藏其目的   (通过默默无闻的安全)或其逻辑,以防止   篡改,阻止逆向工程,或作为拼图或娱乐   有人阅读源代码的挑战。

     

称为混淆器的程序将可读代码转换为混淆代码   代码使用各种技术。

有许多工具,称为Obfuscator,它们代表了代码。这是一个Javascript Obfuscator,例如:

http://www.jsobfuscate.com/

正如你已经正确地猜测它是十六进制的。例如,x63表示99 decimal

现在我们来看看代码表:

http://www.codetable.net/

我们看到,99 decimal代表c字符。所以\x63基本上是c