将hhvm代码编译为字节码并删除源文件

4
第一次编译php源代码为hhvm字节码,然后删除源文件,是否可能?当脚本文件更新时,可以重新生成字节码,似乎需要手动命令。如果可能的话,如何操作?
我读了一些关于Repo.Authoritative的内容,我认为它与此有些接近,但如果您同意,请解释一下。
关于我的问题,我想保护我的Web应用程序免受许可证盗窃,即使混淆了php代码,也可以绕过许可证检查。在hhvm字节码中绕过它似乎很困难,因此需要查询。
请帮我提供其他建议。

请注意,仅分发字节码不会防止盗版,只会起到一定的威慑作用。 - Antimony
1个回答

7

Repo authoritative 做了类似的事情,但这不是你想要的。它将所有的PHP代码编译成一个单一的存储库,出于性能原因--它可以假定进入存储库的是全部存在的代码(您不被允许在存储库外加载内容),因此它可以基于此进行大量的聪明优化。但是,一旦构建了存储库,您就无法扩展它,因此它不适用于分发任何可能需要稍后添加代码的库。实际上它并不是为了分发而构建的;该格式非常依赖版本,并且即使是HHVM的次要点版本发布也可能无法读取旧版(或新版)的存储库。

它也不是很好的混淆形式。它包含了优化的“HHBC”指令(“HipHop bytecode”),如果有人有动机构建一个工具,将其反转回PHP代码并不是非常困难。这样做的难度将与编写C#或Java反编译器相当-- 一个带有良好启发式算法的良好工具可以得到接近原始源代码的东西。(相比之下,反编译C要困难得多。)
所以,不,我不会为此使用repo authoritative。我认为它会给你带来更多麻烦,而且可能甚至不能解决你的问题。 HHVM没有任何好的机制来完成这个任务-- PHP被设计成从磁盘上的源文件中读取和解释。 HHVM碰巧有几种中间语言,包括HHBC,用于优化目的,但它们不是为了混淆而设计的。
您可能需要寻找一个PHP源代码混淆器,在PHP解释器(无论是PHP5还是HHVM)看到它之前,在您的代码上执行源代码变换。这超出了我的专业领域。
你可能还需要仔细考虑是否值得努力打败不诚实的人,这最终将是一场失败的战斗。(像这样击败许可证保护总是有可能的。)花点时间来保持诚实的人诚实是我个人会做的事情,你应该在花费大量时间和精力进行此操作而非其他产品开发之前仔细权衡利弊。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接