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

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


当前回答

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

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

其他回答

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

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

我见过最好的是Zend Guard。

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

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

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

perl -MO=Deparse some_program

PHP有DeZender和Show My Code。

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

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

混淆只会给程序增加另一层潜在的错误和安全漏洞。请不要这样做。

编写模糊化软件的人通常看起来非常粗略和不熟练。

如果你的代码“很棒”,黑客就会竭尽全力传播它,不管它是否被混淆。如果没有人知道/关心你的代码,他们可能也不会。

请参阅我们的SD Thicket PHP混淆器,它可以很好地处理任意大的页面集。它主要通过打乱标识符名称来操作。对于小型到大型应用程序,这可能会使代码极其难以理解,而这正是其全部目的。

它不会在“eval(decode(encodedprogramcode))”方案上浪费任何精力,这是很多PHP“混淆器”所做的[这些是“编码器”,而不是“混淆器”],因为任何clod都可以找到这个调用并自己执行eval-decode并获得解码的代码。

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

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