首页 文章

是否有PHP的代码混淆器? [关闭]

提问于
浏览
196

有没有人用过PHP的好混淆器?我尝试了一些,但他们不适用于非常大的项目 . 例如,它们无法处理包含在一个文件中并在另一个文件中使用的变量 .

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

10 回答

  • 16

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

    最近我用Java编写它来混淆我的PHP项目,因为我没有找到任何好的和兼容的写在网上,我决定把它作为saas在线,所以每个人都免费使用它 . 它不会更改不同脚本之间的变量名称以获得最大的兼容性,但是使用随机逻辑,每条指令也很好地混淆它们 . 字符串......一切 . 我相信它比这个错误的codeeclipse好得多,就是用PHP编写的方式而且非常慢:)

  • 110

    人们会为你提供混淆器,但是没有多少混淆可以阻止某人使用你的代码 . 没有 . 如果您的计算机可以运行它,或者如果它可以播放电影和音乐,则用户可以使用它 . 即使将其编译为机器代码也会使工作变得更加困难 . 如果你使用混淆器,你只是在欺骗自己 . 更糟糕的是,您也不允许用户修复错误或进行修改 .

    音乐和电影公司尚未与此达成协议,他们仍然在DRM上花费数百万美元 .

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

    perl -MO=Deparse some_program
    

    PHP有DeZenderShow My Code之类的东西 .

    我的建议?写一张执照并找一位律师 . 唯一的另一种选择是不提供代码而是运行托管服务 .

    另见perlfaq entry on the subject .

  • 9

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

    But be aware:

    注意其有趣的许可条款 .

    • 每台机器只允许运行1次 - 到目前为止这是可以接受的

    • 如果你想在另一台机器上运行命令行界面,比如你的网络服务器, YOU WILL NEED ANOTHER LICENSE (是的,这很有趣,我也能听到你笑) .

  • 220

    Thicket™ Obfuscator for PHP

    PHP Obfuscator工具会破坏PHP源代码,使其难以理解或反向工程(示例) . 这为必须托管在网站上或发送给客户的源代码知识产权提供了重要保护 . 它是SD的源代码混淆器系列的成员 .

  • 2

    您可以尝试PHP protect这是一个免费的PHP混淆器来混淆您的PHP代码 .
    它非常好用,易于使用,也是免费的 .

    至于其他人在这里写的关于不使用混淆的内容,因为它可以被破坏等等:
    我只有一件事要回答它们 - 不要锁住你的房门,因为任何人都可以拿起你的锁 .
    事实确实如此,混淆并不意味着防止100%的代码被盗 . 它只需要使它成为一项耗时的任务,因此支付原始编码器会更便宜 . 希望这可以帮助 .

  • 27

    我不确定你是否可以将解释语言的混淆标记为毫无意义(我无法在Schwern的帖子中添加评论,所以这里有一个新条目) .

    我认为假设您知道有人想要混淆代码的所有可能情况,并且您认为任何人实际上都愿意花费任何必要的长度来查看代码一旦被混淆,这有点短视 . 考虑我目前的情况:

    我在一家咨询公司工作,该公司正在开发一个大型且相当复杂的基于PHP的站点 . 该项目将托管在客户的服务器上,该服务器托管由其他咨询公司开发的其他网站 . 从技术上讲,我们编写的任何代码都归客户所有,因此我们无法对其进行许可 . 但是,任何其他可以访问服务器的咨询公司(竞争对手)都可以复制我们的代码,而无需先获得客户的许可 . 因此,我们有一个真正的混淆理由 - 为了让竞争对手更好地理解我们的代码,而不是从头开始创建我们的工作副本 .

  • 3

    请参阅我们的SD Thicket PHP Obfuscator了解混淆器,它适用于任意大的页面集 . 它主要通过加扰标识符名称来运行 . 对于适度到大型应用程序,这可能使代码极难理解,这是整个目的 .

    它不会浪费任何能量“eval(decode(encodedprodescode))" schemes, which a lot of PHP "编码器"s, not " obfuscator”,因为任何clod都可以找到该调用并自己执行eval-decode并获得解码后的代码 .

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

    是的,它会跨页面对标识符进行相同的混淆;如果不这样做,结果将无效 .

  • 20

    混淆只会为您的程序添加另一层潜在的错误和安全漏洞 . 请不要这样做 .

    编写混淆软件的人通常看起来非常粗略和非技术 .

    如果你的代码是“伟大的”,那么无论是否被混淆,破解者都将竭尽全力传播它 . 如果没有人知道/关心您的代码,他们可能也不会 .

  • -15

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

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

    我见过的最好的是Zend Guard .

相关问题