假设出于某种特殊原因,我想要一个健壮的 node.js 代码保护,即强制使用 javascript 源代码的 node.js 部署只能完全通过 v8 汇编语言进行分析,这使得重建非常困难/几乎不可能原始源代码。
换句话说,如果有人假设以某种未经授权的方式获得了 node.js 程序(即假设所讨论的 node.js 程序应该保留在服务器上,而不是直接分发给客户端 - 假设服务器受到客户端破坏等的保护,但假设服务器不是 100% 受信任的,例如云服务器,不能 100% 确定没有人因为某种原因真的想要得到它),那该代码将仅包含 V8 汇编程序,不包含任何原始 js 源代码。我的意思不是丑化、缩小、加密或“源仍然隐藏在字符串中”V8 快照 js 源等 - 但根本没有任何 js 源代码,只有“优化的汇编程序” - 并且以这样的方式对整个源代码进行处理,即源代码将消失并且不包含在此 node.js 实例中 - 未加密,未缩小 - 只是不存在,期间。在这种情况下,如果适用的话,任何性能损失都不是问题,只有源 js 无法恢复,除非通过对整个硬件特定的优化 V8 程序集进行繁琐的研究。
首先想到的一个想法是以某种方式迫使 V8 以某种方式将所有 node.js 源 js 代码优化为“特定于硬件”的汇编程序(但“硬件”将在某种薄 VM 中),然后以某种方式删除 JIT 一直携带的源代码(如果可能的话),并仅依赖这个优化的汇编程序。然后,瘦 VM 将不包含对任何源代码的引用,并将仅使用生成的 V8 汇编程序继续运行程序。不过,我不确定在这种情况下该怎么做。
可能更喜欢可以在 Linux 上运行的东西,但如果只能在 Windows 上运行 - 也会考虑它。