如何使代码不可读?

时间:2010-11-16 21:34:40

标签: php decode encode

就像,我们有这个:

<?php
$titles[3] = 'three'; 
$titles[2] = 'two'; 
$titles[1] = 'one'; 
print_r( $titles); 

foreach ($titles as $t ) { 
print "title=$t "; 
}
?>

如何将其变成某种东西,像这样?

<?php eval(gzinflate(str_rot13(base64_decode('PGRpdiBzdHlsZT0nPGRpdiBzdPGRpdiBzdHlsZT0nHlsZT0nandsoon')))); ?>

绝对不明白它是如何完成的。什么是魔术?

请描述一下。

感谢。

7 个答案:

答案 0 :(得分:4)

您要查找的术语是“obfuscate”。如果您只是在谷歌搜索“php obfuscators”,您将找到可以复制并粘贴代码的软件,它会为您进行模糊处理。

答案 1 :(得分:1)

尝试使用混淆器:http://www.fopo.com.ar/

答案 2 :(得分:1)

您正在寻找能够混淆代码的内容。

这是一个开源的PHP混淆器:http://www.raizlabs.com/software/phpobfuscator/

答案 3 :(得分:1)

好吧,只需对原始文本执行相反的操作,即按此顺序执行gzdeflate,str_rot13,base64_encode。

答案 4 :(得分:1)

如何使代码无法读取?这很简单:将它分配给我在这里工作的程序员之一。

答案 5 :(得分:1)

做这样的事情,你有意让你的代码执行时间更长,而不会增加任何好处。由于任何人都可以将此代码解码回原始代码,除了发现php的某些功能并且能够说“看起来像我!我现在是黑客”之外,它实际上没有用处。

如果你真的想阻止别人阅读你的代码,你需要像Zend编码器这样的东西,它会使你的代码不可读,仍然可以像php一样运行。

答案 6 :(得分:0)

看看http://www.ideone.com/vaAXz,了解这里发生了什么。

基本上,使用base64_encodestr_rot13gzdeflate会将您的字符串转换为混淆的字符串,然后通过反向顺序运行反向函数对其进行去混淆(再次gzinflatestr_rot13(它所做的只是*将字符串旋转13个位置,所以a&lt; - &gt; n,b&lt; - &gt; o等)和{{3} })。然后,未经模糊处理的代码通过eval运行,以便可以执行。

这不是实现“安全”代码的一种特别好的方法,如果这是你想要的,因为通过提供反混淆代码的步骤,你天生让任何人访问代码将其转换回纯文本。通常,代码混淆器通过用$a$b等替换有意义的变量名称,以及删除注释,空格以及我们通常用于使代码可读的任何其他便利来使您的代码不可读。