php - 将 hhvm 代码编译成字节码并删除源文件

标签 php bytecode hhvm

是否有可能第一次将 php 源代码编译成 hhvm 字节码,然后他们删除源文件。 更新脚本文件时可能会重新生成字节码,显然需要手动命令才能这样做。 如果可能,那么如何?

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

关于我的问题,我想保护我的 web 应用程序免受许可证盗窃,即使混淆了 php 代码也可以以某种方式绕过许可证检查。在 hhvm 字节码中绕过它似乎很难,因此查询。

也请帮我提供其他建议

最佳答案

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

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

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

您可能想要寻找一个 PHP 源代码混淆器,它会在 PHP 解释器(PHP5 或 HHVM)看到它之前对您的代码进行源代码转换。这远远超出了我的专业知识范围。

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

关于php - 将 hhvm 代码编译成字节码并删除源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27509644/

相关文章:

php - 在动态创建的表中 Bootstrap 交替行颜色

java - 使用特定的类加载器从 `` byte[ ]`` 加载类

java - 具有 ASM 的 JVM INVOKESPECIAL 私有(private)构造函数

php - Phalcon Zephir 对比 APC 对比 HHVM 性能

php - MySQL 8.0 + phpMyAdmin + docker [caching_sha2_password 错误]

php - 在python中对以整数开头的json数组进行排序

php - mysql表导入不起作用?

java - 将 Dalvik 反编译为 Java,为什么会有这么多不一致?

php - Laravel HHVM DB 插入截断十进制数

Symfony2 和 HHVM 声明 Doctrine\DBAL\Driver\PDOConnection::prepare() 必须兼容