首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >精简/混淆PHP代码

精简/混淆PHP代码
EN

Stack Overflow用户
提问于 2010-01-14 23:02:52
回答 6查看 34.2K关注 0票数 16

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

为了防止这种情况再次发生,我正在寻找一种可以缩小/混淆PHP代码的程序。目标是使代码尽可能地不可读/不可编辑。

理想的工具应该在Linux下运行,可以处理整个文件夹和所有包含文件的文件夹。

有人有什么建议吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-01-14 23:23:35

我同意你的评论,你所做的是非常隐蔽的,但在这个行业工作了10年后,我可以证明一件事:你得到的代码有一半是如此复杂,甚至可能已经被缩小了,而且实际上函数/变量名称经常是完全任意的,我编辑过缩小的js,这并不比一些未缩小的代码更麻烦。

我找不到任何这样的脚本/程序,很可能是因为这有悖于PHP的精神,有点不光彩,一点也没有。

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

对于普通的修补人员来说,这将很难搞乱,一个中间程序员只会找到并用$1\n或类似的东西替换所有的;{}。

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

如果它是面向对象的代码,那么你也需要get_defined_classes。保存该数组。

本质上,你需要获取变量,方法和类实例,你必须实例化它上的类和get_object_vars,你可以查看一下,你可以得到很多其他的信息,比如常量和类变量等等。

然后,您获取这些列表,遍历它们,为每个内容创建一个唯一的名称,然后在所有文件中使用preg_replace或str_replace。

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

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

查看:get_defined_functions get_declared_classes,只需按照周围的链接查看您可以做些什么。

票数 17
EN

Stack Overflow用户

发布于 2011-06-10 17:57:43

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

代码语言:javascript
复制
string php_strip_whitespace ( string $filename )

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

票数 24
EN

Stack Overflow用户

发布于 2010-01-14 23:10:24

我知道Zendguard,Expressionengine用它来加密他们试用版的核心代码。你可以随时试一试,尽管你需要付钱。

然而,虽然我理解不得不移植他的更改的挫败感,但我假设他们是从你那里购买代码的?他们有权修改它。你只是有权向他们收取额外的费用来移植他们的更改;)想象一下,如果你不再为他们工作,他们怎么会雇佣其他人来更新代码呢?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2064973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档