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

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


当前回答

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

但要注意:

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

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

其他回答

你可以试试PHP protect,这是一个免费的PHP混淆器来混淆你的PHP代码。 它非常好,易于使用,而且是免费的。编辑:该服务不再存在。

至于其他人在这里写的关于不要使用混淆,因为它可能会被破坏等等: 我只有一件事可以回答他们——不要锁门,因为任何人都可以撬锁。 事实正是如此,混淆并不是为了防止100%的代码盗窃。它只需要使它成为一个耗时的任务,所以它将更便宜地支付原来的编码器。

我见过最好的是Zend Guard。

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

但要注意:

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

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

用于PHP的Thicket™混淆器

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

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

<?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);