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



让我们假设,出于某种特殊原因,我想要一个强大的node.js代码保护,即强制使用javascript源代码的node.js部署只能完全通过v8汇编语言进行分析,这使得重建原始源代码变得非常困难/几乎不可能。

换句话说,如果有人假设以未经授权的方式获得node.js程序(即,假设有问题的node.js程序应该留在服务器上,而不是直接分发给客户端-假设服务器是安全的,不会被客户端入侵,等等。但假设服务器不是100%可信的,例如云服务器,如果出于某种原因真的想得到它,就不能100%确定没有人会得到它),该代码将只包含V8汇编程序,而不包含任何原始js源代码。我的意思是,不要放大、缩小、加密,或者"源代码仍然隐藏在字符串中"V8快照的js源代码等-但根本没有任何js源码,只有"优化的汇编程序"-并对整个源代码进行处理,使源代码消失,不包括在这个node.js实例中-不加密、不缩小-只是不存在,句号。在这种情况下,任何性能损失(如果适用)都不是问题,只是源js除了通过乏味地研究整个硬件特定的优化V8程序集之外是不可恢复的。

首先想到的一个想法是,以某种方式迫使V8以某种方式将所有node.js源代码优化为"硬件特定"的汇编程序(但"硬件"将在某种瘦VM中),然后以某种方式删除JIT一直携带的源代码(如果可能的话),并仅依赖于这个优化的汇编程序。然后,瘦虚拟机将不包含对任何源代码的引用,并且将继续仅使用生成的V8汇编程序运行程序。不过,我真的不知道在这种情况下该怎么办。

可能会更喜欢在Linux上工作的东西,但如果只有在Windows中可能的话,也会考虑它。

如果不在V8内部进行大量修改,这是不可能的,因为它依赖于在多个位置从源代码重新编译函数的能力(例如:延迟编译、Crankshft优化管道、主要GC期间的代码刷新)。此外,如果不在类似生产的数据中实际运行应用程序,就不可能生成良好的优化代码,因为V8除了内联缓存之外,没有其他方法可以收集有关代码的类型信息。

PHP有许多模糊处理程序。所有popuplar PHP模糊处理程序都有deobsfuncator。结果是以比谷歌关闭提供的更可读的形式。你可以使用谷歌关闭如果你不信任云主机,就不要使用它。大多数带有字节码的应用程序都很容易反编译。(Java、Android、.NET)

简而言之,不要在混淆上浪费时间。通常更容易反编译,然后混淆和调试它处理的所有问题。我这么说是因为我混淆了Java和.NET 中的许多应用程序

最新更新