3

是否可以从 HHVM 权威 repo 文件中恢复源代码?在本地安装我的商业 SaaS 产品时,我想使用 HHVM 进行基本的防篡改。

我想(尚未检查)sqlite3 db 包含字节码,并且鉴于 PHP 的动态特性,变量名..因为 *.pyc 可以以非常直接的方式反转,我是否应该假设在这里也是可能的?即使目前没有可用的工具?

4

1 回答 1

6

是的,可以反汇编 HHVM 的字节码存储库并重建接近原始源的东西。虽然 HHVM 目前没有为此提供任何工具,但 HipHop 字节码 (HHBC) 非常接近原始源代码,并且包含丰富的元数据,包括局部变量名、函数名等。在这方面,HHBC 与 Java 的字节码有一些相似之处或 .NET 的 IL。

可能会去除其中的一些元数据,但需要其中很多来处理诸如“$f(..)”、“call_user_func(..)”、“class_exists(..)”和“$ $x",更不用说反射 API(ReflectionClass、ReflectionFunction 等)。

您可能想尝试许多 PHP->PHP 混淆器之一(免责声明:我没有尝试过这些混淆器中的任何一个)。一些更好的 PHP->PHP 混淆器尝试检测您的代码是否以“动态”方式使用函数名或类名,并尝试避免重命名这些类或函数,但我想可能会有一些极端情况下这些启发式方法失败,需要进行一些手动调整或调整。

此外,根据您的情况,可能会使用文件系统权限来解决您的问题(即阻止您服务器上的普通用户访问字节码存储库),尽管这听起来可能超出您的控制范围你的用例。

于 2013-06-12T05:07:57.797 回答