有人用过PHP的混淆器吗?我试过一些,但它们不适用于非常大的项目。例如,它们不能处理包含在一个文件中而在另一个文件中使用的变量。
或者你有其他阻止代码传播的技巧吗?
有人用过PHP的混淆器吗?我试过一些,但它们不适用于非常大的项目。例如,它们不能处理包含在一个文件中而在另一个文件中使用的变量。
或者你有其他阻止代码传播的技巧吗?
当前回答
没有什么是完美的。如果你只是想阻止非程序员,那么这里有一个我写的小脚本,你可以使用:
<?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条目。
混淆只会给程序增加另一层潜在的错误和安全漏洞。请不要这样做。
编写模糊化软件的人通常看起来非常粗略和不熟练。
如果你的代码“很棒”,黑客就会竭尽全力传播它,不管它是否被混淆。如果没有人知道/关心你的代码,他们可能也不会。
你可以试试PHP protect,这是一个免费的PHP混淆器来混淆你的PHP代码。 它非常好,易于使用,而且是免费的。编辑:该服务不再存在。
至于其他人在这里写的关于不要使用混淆,因为它可能会被破坏等等: 我只有一件事可以回答他们——不要锁门,因为任何人都可以撬锁。 事实正是如此,混淆并不是为了防止100%的代码盗窃。它只需要使它成为一个耗时的任务,所以它将更便宜地支付原来的编码器。
用于PHP的Thicket™混淆器
PHP Obfuscator工具打乱了PHP源代码,使其非常难以理解或逆向工程(示例)。这为必须托管在网站上或交付给客户的源代码知识产权提供了重要的保护。它是SD源代码混淆器家族的成员。