有没有人用过PHP的好混淆器?我尝试了一些,但他们不适用于非常大的项目.例如,它们无法处理包含在一个文件中并在另一个文件中使用的变量.
或者你有任何其他技巧来阻止代码的传播?
1> yossi..:
您可以尝试PHP保护,这是一个免费的PHP混淆器来混淆您的PHP代码.
它非常好用,易于使用,也是免费的.
至于其他人在这里写的关于不使用混淆的内容,因为它可以被破坏等等:
我只有一件事要回答它们 - 不要锁住你的房门,因为任何人都可以拿起你的锁.
事实确实如此,混淆并不意味着防止100%的代码被盗.它只需要使它成为一项耗时的任务,因此支付原始编码器会更便宜.希望这可以帮助.
+1指出混淆是关于使它更难,而不是不可能的事实.
尝试过,但不喜欢它.它只更改变量名称,它既不删除注释也不删除注释.
Windows版本:(
请注意,对源代码进行加密而不是对其进行模糊处理并不会使其无法解密,这真的很难做到.
2> Schwern..:
人们会为你提供混淆器,但是没有多少混淆可以阻止某人使用你的代码.没有.如果您的计算机可以运行它,或者如果它可以播放电影和音乐,则用户可以使用它.即使将其编译为机器代码也会使工作变得更加困难.如果你使用混淆器,你只是在欺骗自己.更糟糕的是,您也不允许用户修复错误或进行修改.
音乐和电影公司还没有达成协议,他们仍然花费数百万美元用于DRM.
在像PHP和Perl这样的解释语言中,它是微不足道的.Perl曾经有很多代码混淆器,然后我们意识到你可以轻松地反编译它们.
perl -MO=Deparse some_program
PHP有像DeZender和Show My Code这样的东西.
我的建议?写一张执照并找一位律师.唯一的另一种选择是不提供代码而是运行托管服务.
另请参阅有关该主题的perlfaq条目.
我主要同意你的意见,但是OP要求提供产品推荐,而不是关于开源优点的讲座.
与开源无关,这是关于混合代码而不仅仅是能够看到它.实际情况是,无论您如何编译或混淆或加密,完全停止,在用户机器上运行的任何代码或数据最终都是透明的.OP需要了解这一点.
问题:如何,答案:你不应该=没有帮助
@cmc我很有信心很多人会直接回答这个问题,所以我采取不同的策略并没有任何损失.询问专家的一半是他们知道你什么时候提出错误的问题来解决真正的问题.这是"5 Whys"的应用.http://en.wikipedia.org/wiki/5_Whys真正的问题是"如何阻止人们阅读/窃取我的PHP代码".答案是,如果您发送的代码不能,但是您可能会浪费大量的时间和金钱来尝试并获得错误的安全感.比混淆器列表更有用吗?
@JamShady:混淆并不意味着您无法修复错误或进行修改.如果你愚蠢地混淆了源代码,扔掉原来的东西,并坚持保持混淆的结果,是的,你将无法做任何事情.好的混淆器坚持你保留你的代码*和*映射到obufscated结果; 您可以调试/修改原始代码,将混淆的补丁发送给客户,甚至通过使用映射将混淆的投诉转换回可读的问题来诊断问题.他没有地图,这使得这个安全.
@cmc OP有一个特定的场景:他们希望停止代码的传播.想要作为解决方案混淆是一个红旗,有一个[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem).OP想要X.他们认为Y会解决它.他们询问的是Y而不是X.当它是X的一个糟糕的解决方案时,我们在Y上浪费了很多时间.如果你能弄清楚X是什么,你可以为每个人节省大量的时间和挫折.在删除的答案中,OP显示他们在共享服务器上.他们的X的非常简单的解决方案是获得私人服务器!
@cmc因为OP的问题是如此常见,而且总是以同样的方式出现.如果"我需要一个混淆器"并没有紧接着"并且我明白混淆器实际上不能阻止一个温和的专用攻击者"那么我很确定他们没有想到它.我可以花很多时间和OP一起来回询问每个为什么然后回到预期的反应只是为了确定...或者我可以拯救我们所有的时间,采取一个逻辑的跳跃(短暂的跳跃在这种情况下)并跳到最后.
一旦拥有许可证,您如何有效地执行许可?引入律师通常是最后的手段.我想可以模糊你的代码以防止许可证侵权比每次依靠支付律师更便宜和更有效.此外,依靠您的律师意味着您需要了解侵权行为.如果我无能为力并且有40%的侵权行为,许可证/律师有20%的侵权行为,或许可/律师/混淆5%的侵权行为,那么我可能会选择后一种选择.无论如何,这都是OP提出的问题的主题.
@Schwerm:够公平的.我对这种情况的最佳做法表示拙见:问题:不合格 - 如何.答:这是+当心的方式.
@Schwerm:我一直在思考代码混淆是否浪费时间,而且我得出的结论是它不是.如果可以,请取消以下论点.
3> 小智..:
没有什么是完美的.如果你只是想要阻止非程序员,那么这里有一个我写的你可以使用的小脚本:
真棒?每个页面都带有获取源代码的完整解决方案:运行"gzuncompress(base64_decode($ a))".是的,这将阻止非程序员.但是原始的源代码会阻止那些需要编码的非程序员吗?唯一一个打算对此进行逆向工程的人*是一名PHP程序员.
大多数情况下非程序员尝试通过搜索他们想要更改的源代码中的一些字符串,我也在寻找这样的解决方案,只能阻止非程序员更改源代码,例如域名,数据库名称,用户等.
4> tomfumb..:
我不确定你是否可以将解释语言的混淆标记为毫无意义(我无法在Schwern的帖子中添加评论,所以这里有一个新条目).
我认为,假设您知道有人想要混淆代码的所有可能情况,并且您认为任何人实际上愿意花费任何必要的长度来查看代码一旦被混淆,这有点短视.考虑我目前的情况:
我在一家咨询公司工作,该公司正在开发一个大型且相当复杂的基于PHP的站点.该项目将托管在客户的服务器上,该服务器托管由其他咨询公司开发的其他网站.从技术上讲,我们编写的任何代码都归客户所有,因此我们无法对其进行许可.但是,任何其他可以访问服务器的咨询公司(竞争对手)都可以复制我们的代码,而无需先获得客户的许可.因此,我们有一个真正的混淆理由 - 让竞争对手理解我们的代码所需的努力超过了从头开始创建我们的工作副本的努力.
5> Ira Baxter..:
请参阅我们的SD Thicket PHP Obfuscator,了解混淆器,它适用于任意大的页面集.它主要通过加扰标识符名称来运行.对于适度到大型应用程序,这可能使代码极难理解,这是整个目的.
它并没有浪费任何能量"eval(decode(encodedprogramcode))"方案,许多PHP"混淆器"做[这些是"编码器",而不是"混淆器"),因为任何clod都可以找到那个电话并自己执行eval-decode并获得解码后的代码.
它使用语言精确的解析器来处理PHP; 它会告诉你程序在语法上是否无效.更重要的是,它准确地了解整个语言; 它不会丢失或混淆,并且它不会破坏您的代码(其他如果您"错误地"混淆会发生什么,例如,无法正确识别代码的公共API).
是的,它会跨页面对标识符进行相同的混淆; 如果不这样做,结果将无效.
6> CMS..:
我见过的最好的是Zend Guard.
SD PHP Obfuscator同样出色,成本约为1/5.
7> PatlaDJ..:
试试这个:http://www.pipsomania.com/best_php_obfuscator.do
最近我用Java编写它来混淆我的PHP项目,因为我没有找到任何好的和兼容的写在网上,我决定把它作为saas在线,所以每个人都免费使用它.它不会更改不同脚本之间的变量名称以获得最大的兼容性,但是使用随机逻辑,每条指令都可以很好地混淆它们.弦乐......一切.我相信它比这个错误的codeeclipse好得多,就像用PHP编写的方式而且非常慢:)
"我可以向你保证,到目前为止,NOBODY可以对代码进行去混淆"甚至PHP?如果PHP可以这样做,那么其他人也可以.在您的站点上查看示例代码,某处您将拥有一个将代码转储出来的eval语句,将其更改为echo并显示您的代码.
[引证需要] - 自制加密是通过默默无闻的安全,这根本不是安全.
警告:此方法可以简单地解码回原始变量名称,请参阅:http://lombokcyber.com/en/detools/decode-pipsomania