缩小/混淆 PHP 代码 [已关闭]

2022-08-31 00:04:28

我使用Haxe生成PHP代码。(这意味着你用Haxe语言编写代码,并在编译后获得一堆php文件。今天,一位客户告诉我,他需要一个使用Haxe制作的旧项目的新功能。他还告诉我,他为了自己的需要而修改了代码上的一些小东西。现在,我首先将他的更改移植到我的Haxe代码中,然后添加新功能,否则下次编译项目时,他的更改将被覆盖。

为了防止这种情况再次发生,我正在寻找某种缩小/混淆PHP代码的程序。目标是尽可能使代码不可读/不可编辑。
理想的工具将在Linux下运行,并且可以处理整个文件夹及其所有包含的文件。

有人有什么建议吗?


答案 1

为什么不在函数php_strip_whitespace()中使用php buid

string php_strip_whitespace ( string $filename )

以文件名形式返回 PHP 源代码,并删除 PHP 注释和空格。这对于确定脚本中的实际代码量与注释量相比可能很有用。这类似于从命令行使用 php -w。


答案 2

我同意这个评论,你正在做的事情是非常卑鄙的,但是在这个行业工作了10年之后,我可以证明一件事:你得到的代码中有一半是如此复杂,它可能已经被缩小了,实际上函数/var名称往往是完全任意的,我已经编辑了缩小的js,它并不比一些未被破坏的代码更麻烦。

我找不到任何这样的脚本/程序,很可能是因为这有点违反PHP精神,有点卑鄙,从来没有少过。

首先:Php对空格不敏感,所以第一步是删除字符串之外的所有换行符和空格。

这将使普通的修补匠难以搞砸,中级程序员只会找到并替换所有;{} 带有 $1\n 或类似值。

下一步是get_defined_functions并保存该数组(返回数组中的“user”键),您需要包含所有文件才能执行此操作。

如果是oo代码,你也需要get_defined_classes。保存该数组。

从本质上讲,你需要获取变量、方法和类实例,你必须实例化类并get_object_vars它,你可以四处看看,看看你可以获得很多其他信息,比如常量和类变量等。

然后,你获取这些列表,遍历它们,为每个事物创建一个唯一的名称,然后preg_replace,或者将其str_replace所有文件中。

确保在测试副本上执行此操作,并查看您遇到的错误。

不过,需要明确的是,地狱中有一个特殊的地方,为那些为了混淆而混淆的人保留。

查看:get_defined_functions get_declared_classes,只需点击周围的链接即可查看您可以做什么。


推荐