node.js代码保护 – 如何使node.js部署只能在V8汇编器中恢复

假设由于某些原因,我想要一个健壮的node.js代码保护,也就是强制使用javascript源代码的node.js部署完全可以通过v8汇编语言进行分析,这使得难以/几乎不可能重build原始的源代码。

换句话说,如果有人假想地以某种未经授权的方式获取了node.js程序(即,假设有问题的node.js程序应该保留在服务器上,而不是直接分发给客户端)服务器是从客户端违规等保证的,但假设服务器不是100%信任,如云服务器,不能100%肯定没有人因为某种原因真的想要这样做),那该代码将只包含V8汇编程序,不包含任何原始的js源代码。 我的意思是不会被简化,缩小,encryption,或者“源代码仍然隐藏在一个string中”,而不是简单的js源代码,只是“优化的汇编程序”为了完整的源代码,源代码将被删除,而不是包含在这个node.js实例中 – 没有encryption,没有缩小 – 只是不存在,句点。 任何性能损失(如果适用的话)在这种情况下都不是一个问题,只有源js是不可恢复的,而不是通过对整个硬件特定的优化V8程序集的冗长乏味。

首先想到的想法是以某种方式迫使V8优化所有的node.js源js代码到某个“特定硬件”的汇编程序(然而“硬件”会在某种稀薄的虚拟机中),然后以某种方式删除JIT持续运行的源代码(如果可能的话),并依靠这个优化的汇编程序。 然后,精简虚拟机将不包含任何源代码的引用,并将继续仅使用生成的V8汇编程序运行该程序。 在这种情况下,我不太确定如何去做。

也许会更喜欢Linux上可以使用的东西,但是如果只能在Windows上使用的话 – 也会考虑它。

如果不在V8内部进行大量修改,这是不可能的,因为它依赖于能够在多个地方重新编译源代码中的函数(例如:惰性编译,Crankshft优化pipe道,主GC期间的代码刷新)。 另外,如果不实际运行应用程序而不是实际生产数据,则不可能生成优化的代码,因为除了内联caching外,V8没有其他方式收集有关代码的types信息。

PHP有许多混淆器。 所有popuplar PHP混淆器都有去污剂。 结果是更可读的forms,然后什么谷歌封闭给。 您可以使用谷歌closures不要使用云主机,如果你不信任它。 大多数使用字节码的应用程序非常容易反编译。 (Java,Android,.NET)

总之不要浪费时间在混淆上。 反编译通常比较容易,然后混淆和debugging所有的问题。 我说这是因为我混淆了Java和.NET中的许多应用程序