谷歌封闭生成的代码可以通过高级设置进行逆向设计吗?

时间:2015-06-02 10:19:52

标签: javascript obfuscation google-closure-compiler

有人知道Google封闭式高级设置生成的JavaScript代码是否被反向设计?

谷歌关闭重命名大多数js变量和函数名称,所以我很想知道它是否是保护代码不被窃取的好选择。

由于

3 个答案:

答案 0 :(得分:3)

是的,它很容易被逆转。 Google Closure是一个代码优化器,几乎与代码混淆相反。这对每个人来说并不总是显而易见的,因为它所做的一些事情实际上会使你的代码变得模糊不清。 我在谈论变量和函数重命名,空白和注释删除。

但它并不意味着保护。例如,它生成的新名称始终相同(确定性)。原因是它只重命名变量和函数以用短的替换它们。它不关心保护。它没有任何改变控制流程的东西,如果你寻求保护,这就是你想要的。它没有任何东西来混淆字符串和其他文字。相反,它使用常量折叠和常量传播等技术,这些技术实际上使您的代码更简单,更容易理解。

为了保护我真的认为你最好的选择是JScrambler。它们具有良好的源代码转换范围和用于保护的代码陷阱。

答案 1 :(得分:1)

是的,它可以逆转,但是,如果您在ADVANCED_OPTIMIZATIONS中的代码有很多内联,那么逆向工程可能要困难得多。其次,由于存在大量的常量折叠,因此使代码更难以阅读,即:

/** 
 *  @type {number}
 *  @const
 */
var FLAG_A=0x4FFFFFF0;

/** 
 *  @type {number}
 *  @const
 */
var FLAG_B=0x01;

/** @type {number} */
var flags=FLAG_A|FLAG_B;

console.log(flags,(flags&FLAG_A)>0);

输出到:

console.log(1342177265,!0);

这使得实际代码更难以阅读并弄清楚它正在做什么。你越少依赖继承和字符串,并转向位标志 - 将使反向工程代码工作,但使更改或扩展更难。

答案 2 :(得分:0)

通过使用Javascript美化器,您可以将代码转换为某种扩展读取但不能完全逆向工程。