关于混淆:是否有PHP的代码混淆器?

Is there a code obfuscator for PHP?

有人用过一个很好的模糊器吗?我试过一些,但它们不适用于非常大的项目。例如,它们不能处理包含在一个文件中并在另一个文件中使用的变量。

或者,您还有其他阻止代码传播的技巧吗?


您可以尝试使用php protect,这是一个免费的php模糊器来模糊您的php代码。它非常好,使用方便,而且是免费的。

至于其他人在这里所写的不使用模糊,因为它可能会被打破等:我只有一件事要回答他们-不要锁门,因为任何人都可以撬开你的锁。正是如此,混淆并不是为了防止100%的代码盗窃。它只需要使它成为一个耗时的任务,这样就可以更便宜地支付原始编码器。希望这有帮助。


人们会给你提供混淆器,但是任何数量的混淆都不能阻止别人获取你的代码。没有。如果你的电脑可以运行它,或者在电影和音乐的情况下,如果它可以播放,用户可以得到它。甚至把它编译成机器代码也会让工作变得更困难。如果你使用模糊器,你只是在愚弄自己。更糟糕的是,您还禁止用户修复错误或进行修改。

音乐和电影公司还没有完全接受这一点,他们仍然在数字版权管理上花费数百万美元。

在php和perl这样的解释语言中,这是微不足道的。Perl以前有很多代码模糊器,然后我们意识到您可以对它们进行琐碎的反编译。

1
perl -MO=Deparse some_program

php有类似dezender的东西并显示我的代码。

我的建议?写一份执照,然后找一个律师。唯一的另一个选择是不发出代码,而是运行托管服务。

另请参见有关主题的PerlFaq条目。


没有什么是完美的。如果你只是想阻止非程序员,那么我写了一个小脚本,你可以使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$infile=$_SERVER['argv'][1];
$outfile=$_SERVER['argv'][2];
if (!$infile || !$outfile) {
    die("Usage: php {$_SERVER['argv'][0]} <input file> <output file>
"
);
}
echo"Processing $infile to $outfile
"
;
$data="ob_end_clean();?>";
$data.=php_strip_whitespace($infile);
// compress data
$data=gzcompress($data,9);
// encode in base64
$data=base64_encode($data);
// generate output text
$out='<?ob_start();$a=\''.$data.'\';eval(gzuncompress(base64_decode($a)));$v=ob_get_contents();ob_end_clean();?>';
// write output text
file_put_contents($outfile,$out);


我不确定您是否可以将解释语言的混淆标记为无意义的(我无法在Schwern的文章中添加注释,所以这里有一个新条目)。

我认为假设您知道所有可能的场景,其中有人想混淆代码,这有点短视,并且您假设任何人实际上都愿意采取任何必要的长度来查看代码,一旦混淆。考虑我目前的情况:

我在一家咨询公司工作,该公司正在开发一个大型且相当复杂的基于PHP的网站。该项目将托管在客户端服务器上,该服务器托管由其他咨询公司开发的其他站点。从技术上讲,我们编写的任何代码都是由客户拥有的,所以我们不能授权它。但是,任何其他可以访问服务器的咨询公司(竞争对手)都可以复制我们的代码,而无需首先获得客户的许可。因此,我们有一个真正的混淆的原因——让竞争对手了解我们的代码所需的努力,而不是从头开始创建我们的工作的副本。


请参阅我们的sd thickt php obfuscator,了解一个可以处理任意大页面集的obfuscator。它主要通过加扰标识符名称来操作。对于一般到大型的应用程序,这会使代码非常难以理解,这就是整个目的。

它不会浪费任何精力在"eval(decode(encodedprogramcode))"方案上,很多php"obfuscator"都会这样做[这些是"encoder"的,而不是"obfuscator"的],因为任何clod都可以找到该调用并自己执行eval解码并获得解码后的代码。

它使用语言精确的解析器来处理PHP;它将告诉您程序是否在语法上无效。更重要的是,它精确地了解整个语言;它不会丢失或混淆,也不会破坏您的代码(另一种情况是,如果您"错误地"混淆了会发生什么,例如,未能正确识别代码的公共API)。

是的,它在页面上完全混淆了标识符;如果不这样做,结果就不起作用。


我见过的最好的是泽德卫兵。


试试这个:http://www.pipsomania.com/best_php_obfuscator.do

最近我用Java写了它来混淆我的PHP项目,因为我在网上找不到任何好的和兼容的写,我决定把它放到SaaS上,所以每个人都免费使用它。它不会改变不同脚本之间的变量名,以获得最大的兼容性,但是它很好地模糊了它们,使用随机逻辑,每个指令也是如此。串。。。一切。我相信它比这个bug代码Eclipse要好得多,这是用PHP编写的,速度非常慢:)


灌木丛?PHP模糊器

The PHP Obfuscator tool scrambles PHP source code to make it very difficult to understand or reverse-engineer (example). This provides significant protection for source code intellectual property that must be hosted on a website or shipped to a customer. It is a member of SD's family of Source Code Obfuscators.


使用SourceGuardian很好,因为它附带了一个很酷且易于使用的GUI。

但要注意:

注意它的-相当有趣的-许可条款。

  • 你只能在每台机器上运行1次-到目前为止这是可以接受的
  • 如果你想在另一台机器上运行命令行界面,比如说你的网络服务器,你需要另一个许可证(是的,很有趣,我也能听到你笑)。


模糊化只是在程序中添加另一层潜在的错误和安全漏洞。请不要这样做。

不管怎么说,编写模糊软件的人通常看起来很粗略,不熟练。

如果您的代码是"伟大的",那么无论代码是否模糊,解密程序都会经过很长的时间来传播它。如果没有人知道/关心你的代码,他们可能也不会。