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

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


当前回答

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

最近我用Java写了它来混淆我的PHP项目,因为我在网上没有找到任何好的和兼容的现成的东西,我决定把它作为saas放在网上,这样每个人都可以免费使用它。它不改变不同脚本之间的变量名,以获得最大的兼容性,但是很好地混淆了它们,使用随机逻辑,每条指令也是如此。弦……一切。我相信它比这个有bug的代码eclipse要好得多,顺便说一句,那是用PHP写的,非常慢:)

其他回答

我见过最好的是Zend Guard。

人们会为您提供混淆器,但再多的混淆也不能阻止别人获取您的代码。一个也没有。如果你的电脑可以运行它,或者在电影和音乐的情况下,如果它可以播放,用户就可以得到它。即使将其编译为机器代码也会使工作变得更加困难。如果你使用混淆器,你只是在欺骗自己。更糟糕的是,您还不允许用户修复错误或进行修改。

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

在像PHP和Perl这样的解释性语言中,这是微不足道的。Perl曾经有很多代码混淆器,然后我们意识到可以简单地反编译它们。

perl -MO=Deparse some_program

PHP有DeZender和Show My Code。

我的建议?写个驾照,找个律师。唯一的其他选择是不提供代码,而是运行托管服务。

另请参阅有关该主题的perlfaq条目。

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

<?php
$infile=$_SERVER['argv'][1];
$outfile=$_SERVER['argv'][2];
if (!$infile || !$outfile) {
    die("Usage: php {$_SERVER['argv'][0]} <input file> <output file>\n");
}
echo "Processing $infile to $outfile\n";
$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);

用于PHP的Thicket™混淆器

PHP Obfuscator工具打乱了PHP源代码,使其非常难以理解或逆向工程(示例)。这为必须托管在网站上或交付给客户的源代码知识产权提供了重要的保护。它是SD源代码混淆器家族的成员。

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

但要注意:

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

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