谷歌闭包生成的代码与高级设置可以逆向工程



有没有人知道,如果JavaScript代码是由谷歌关闭与高级设置产生的逆向工程?

Google闭包重命名了大多数js变量和函数名,所以我很想知道这是否是一个保护代码不被窃取的好选择。

谢谢

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

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

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

是的,它可以被逆转,但是,如果您在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);

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

通过使用Javascript美化器,您可以将代码转换为一些扩展可读的,但不完全反向工程。

最新更新