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

时间:2014-12-16 16:44:03

标签: php bytecode hhvm

是否有可能在第一次将php源代码编译成hhvm字节代码并删除源文件。 更新脚本文件时可能会重新生成字节代码,显然需要手动命令才能执行此操作。 如果有可能那么?

阅读一些关于Repo.Authoritative的内容 我认为它有点接近,但如果您同意,请解释。

关于我的问题,我想保护我的网络应用程序免受盗窃许可,一个PHP代码,即使混淆可以以某种方式进行再见许可检查。用hhvm字节代码再次传递它似乎很难,因此查询。

请帮助我提供其他建议

1 个答案:

答案 0 :(得分:7)

Repo authoritative有点这样做,但它不适合你想要的。它出于性能原因将所有PHP代码编译成一个repo - 它假设进入repo的是所有将存在的代码(不允许在repo之外加载东西),所以它可以基于此做很多聪明的优化。但是因为一旦构建了repo就无法扩展它,所以分发任何类型的库都不合适,以后你可能需要添加代码。它实际上根本不是为了分发而建造的;格式是非常特定于版本的,即使是HHVM的次要版本也可能无法读取旧版(或更新版本)的版本。

它也不是一种很好的混淆形式。它包含优化的“HHBC”指令(“HipHop字节码”),这些指令反转回PHP代码并不是非常困难,特别是如果有人被激励为它构建工具。这样做的难度与编写C#或Java反编译器相当 - 一个具有良好启发式的好工具可以让你获得与原始源代码相近的非常的东西。 (相比之下,反编译C 很多更难。)

所以不,我不会使用repo权威的。我认为由于上述原因,这会给你带来更多的麻烦,甚至可能无法解决你的问题。 HHVM没有任何好的机制 - PHP被设计为从磁盘上的源文件读取解释。 HHVM碰巧有几种中间语言,包括HHBC,用于优化目的,但它们不是为混淆而设计的。

您可能希望查找PHP源混淆器,它将在PHP解释器(PHP5或HHVM)看到之前对您的代码执行源代码转换。这远远超出了我的专长。

你可能还想仔细考虑是否值得努力打败不诚实的人,这最终将是一场失败的战斗。 (总是有可能打败这样的许可证保护。)花一点时间保持诚实的人诚实是我个人所做的,你应该仔细考虑权衡,然后花费大量的时间和精力去做这个而不是工作在你的产品上。