有人用过PHP的混淆器吗?我试过一些,但它们不适用于非常大的项目。例如,它们不能处理包含在一个文件中而在另一个文件中使用的变量。
或者你有其他阻止代码传播的技巧吗?
有人用过PHP的混淆器吗?我试过一些,但它们不适用于非常大的项目。例如,它们不能处理包含在一个文件中而在另一个文件中使用的变量。
或者你有其他阻止代码传播的技巧吗?
当前回答
混淆只会给程序增加另一层潜在的错误和安全漏洞。请不要这样做。
编写模糊化软件的人通常看起来非常粗略和不熟练。
如果你的代码“很棒”,黑客就会竭尽全力传播它,不管它是否被混淆。如果没有人知道/关心你的代码,他们可能也不会。
其他回答
请参阅我们的SD Thicket PHP混淆器,它可以很好地处理任意大的页面集。它主要通过打乱标识符名称来操作。对于小型到大型应用程序,这可能会使代码极其难以理解,而这正是其全部目的。
它不会在“eval(decode(encodedprogramcode))”方案上浪费任何精力,这是很多PHP“混淆器”所做的[这些是“编码器”,而不是“混淆器”],因为任何clod都可以找到这个调用并自己执行eval-decode并获得解码的代码。
它使用语言精确的解析器来处理PHP;它会告诉你你的程序在语法上是否无效。更重要的是,它准确地了解整个语言;它不会丢失或混淆,它不会破坏你的代码(如果你混淆“不正确”会发生什么,例如,未能正确识别代码的公共API)。
是的,它混淆了页面上相同的标识符;如果它不这样做,结果就不会起作用。
混淆只会给程序增加另一层潜在的错误和安全漏洞。请不要这样做。
编写模糊化软件的人通常看起来非常粗略和不熟练。
如果你的代码“很棒”,黑客就会竭尽全力传播它,不管它是否被混淆。如果没有人知道/关心你的代码,他们可能也不会。
没有什么是完美的。如果你只是想阻止非程序员,那么这里有一个我写的小脚本,你可以使用:
<?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。
我不确定你是否可以将混淆解释语言标记为毫无意义(我无法在Schwern的帖子中添加评论,所以这里有一个新的条目)。
我认为,假设你知道所有可能的情况下,有人想要混淆代码,你假设任何人都愿意去看任何必要的长度,一旦混淆的代码。考虑一下我目前的情况:
I work for a consulting company that is developing a large and fairly sophisticated PHP-based site. The project will be hosted on a client's server that is hosting other sites developed by other consultancies. Technically any code we write is owned by the client, so we can't license it. However, any other consultancy (competitor) with access to the server can copy our code without getting permission from the client first. We therefore have a genuine reason for obfuscation - to make the effort required for a competitor to understand our code more than the effort of creating a copy of our work from scratch.