16

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

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

有人有什么建议吗?

4

7 回答 7

24

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

string php_strip_whitespace ( string $filename )

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

于 2011-06-10T09:57:43.280 回答
17

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

我找不到任何这样的脚本/程序,很可能是因为这有点违背 PHP 精神,而且有点卑鄙,至少如此。

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

这对于普通的修补匠来说很难搞砸,中级程序员只会找到所有 ;{} 并将其替换为 $1\n 或类似的东西。

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

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

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

然后您获取这些列表,遍历它们,为每个事物创建一个唯一名称,然后在所有文件中进行 preg_replace 或 str_replace。

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

不过,为了清楚起见,地狱中有一个特殊的地方是为那些为了混淆而混淆的人保留的。

查看:get_defined_functions get_declared_classes并按照周围的链接查看您可以做什么。

于 2010-01-14T15:23:35.197 回答
4

我们使用Zend Guard对特定客户端的 PHP 代码进行编码,但正如 Parrots 所说,您需要确保拥有该代码。我们只在某些情况下进行编码,并且只有当我们明确保留代码的所有权时,否则 Parrots 是正确的,客户有权修改它。

于 2010-01-14T15:10:14.913 回答
4

我知道Zendguard,Expressionengine 用它来加密他们试用版的核心代码。尽管您需要为此付费,但您总是可以尝试一下。

然而,虽然我理解必须移植他的更改的挫败感,但我认为他们是从你那里购买代码的?他们有权对其进行修改。您只是有权向他们收取额外费用以移植他们的更改;)想象一下,如果您停止为他们工作,他们怎么会雇用其他人来更新代码?

于 2010-01-14T15:10:24.427 回答
2

我们的PHP 混淆器完全可以去除注释、空格和加扰标识符。

它在一组完整的 PHP 文件中运行,以确保加扰符号在这些文件中一致地加扰,即使在加扰之后也能确保正确操作。

编辑 2013:现在加密字符串文字以使其不可读。在 Windows 下运行,在 Wine 下的 Linux 上运行。

于 2010-02-02T10:21:41.373 回答
1

您可以尝试PHP Obfuscatorbcompiler PHP 扩展

于 2010-01-15T01:14:06.943 回答
0

我刚刚找到 PHP 的 minify-service。看起来真的很有用。他们说,这种混淆功能很快就会出现。我希望这是真的 :) http://customhost.com.ua/php-minify/

于 2010-12-20T19:32:02.060 回答