我刚刚看到了这个ByteNode库,它和Java的ByteCode是一样的,但是这是nodejs的。
这个库把你的JavaScript代码编译成V8字节码,保护你的源代码,我想知道有没有反编译字节码,所以它不够安全。我想知道是因为我想用这个库来保护我的源代码?
TLDR这将提高对某些人复制代码并试图将其作为自己的代码来传递的标准。它不会阻止一个有献身精神的人这样做。但是保护你的作品的主要方法不是技术上的,而是法律上的。
这个库将JavaScript代码编译成V8字节码,保护源代码。
我们不知道它是V8字节码,但在某种意义上它是“编译”的。我们只知道它通过内置的
我想知道是否存在反编译byteNode,因此它不够安全。
当然,否则它将毫无用处,因为Node.js将无法运行它。我没有找到一个已经存在的工具来完成它,但是由于V8是开放源码的,大概可以找到必要的信息来为它编写反编译器,输出有效的JavaScript源代码,然后有人可以尝试理解。
在实验中,局部变量名似乎丢失了,但函数名没有丢失。注释似乎丢失了(这可能不像看起来那么明显,因为需要
因此,如果您通过一个minifier(特别是重命名函数的minifier)运行代码,然后通过ByteNode运行代码(或者您自己使用 某些改变,例如改变版权消息,可能相当容易对所述源代码进行。更有意义的改变将更加困难。 请注意,代码缓存似乎具有校验和或其他类似的完整性机制,因为直接编辑 从根本上说,保护你的作品的方法是确保你已经把所有相关的通知放在相关的地方,这样复制它是侵犯版权的事实是清楚的,然后追究你的法律追索权,如果你发现有人冒充自己的作品。
有没有办法
你可以在这里得到上百个答案,说“我不知道一条路”,但这仍然不能保证没有一条路。
不够安全
什么安全?你的部署方案是什么?你想要防御什么样的场景/攻击?
FWIW,我不知道现有的工具“反编译”V8字节码(即产生具有相同行为的JavaScript源代码)。也就是说,考虑到字节码是源代码的一个相当简单的翻译,我确信编写这样一个工具并不是很难,如果有人有理由在上面花一些时间的话。毕竟,V8的JS-to-bytecode编译器是开放源码的,因此只需查看这些源码并实现相反的方向。因此,我假设以字节码的形式提供的“保护”与以丑化JavaScript的形式提供的“保护”一样多,即没有一种是我所信任的。
在您做出任何决定之前,还请记住,字节码被认为是V8的内部实现细节;特别是它没有版本化,可以随时更改,因此它必须由使用它的完全相同的V8版本创建。如果您想要更新node.js,您必须重新创建所有字节码,并且没有检查或警告会在您忘记这样做时指出。