对于ZEND编译过的代码,用记事本打开是完全是乱码,除了前面的很小的头部,后面不是可见ASCII字符,有点像打开一个EXE文件的效果,是无法阅读的。这类处理的文件一般认为是无法还原的,网上有DEZEND工具,你可以下载来试试薯派看,能还原早期ZEND版本编译后的代码。
对于使用BASE64等编码后的PHP文件,可以用记事本打开查看,所有字符都是可见ASCII字符,一般使用两种方法加大阅读难度:一是使用$ll111、$ooo000这样的变量,字母L的小写与1混在一起、字母O的小写与数字0混在一起,不容易分辨变量名称。二是使用BASE64编码对原始代码进行转换,最后使用eval进行处理。往往两种方式结合在一起。
第二种方式处理后的代码是很容易还原的,方旅嫌法就是把eval换为exit,在CLI(命令提示符)下执行就会显示出eval那个语句对应的等效代码,替换原始语句即可。有时候还原一次后还是eval语句,那需要按照同样的方法反复处理。
可以用黑刀Dezender来试试,我不担保可以解出来的哦,从黑刀Dezender4.3版之后,将着力对混淆函数以及自定义函数的解密进行应对。
大家下载压缩包并解压后,会发现有一个“config.ini”的文件,这就是混淆函数库啦!
打开后,可自行编辑其中的内容,当然,也可以通过黑刀Dezender的升级程序直接下载官方最新的混淆函数库文件。这个混淆函数库就相当于是一个字典文件了,在保证格式不变的情况下,大家可以在【黑刀部落】下载《黑刀超级字典生成器》生成字典来挂入主程序进行解密,正确步骤为:先备份、改名自己的config.ini文件,生成的字典文件在第一行加入“[OBFUSCATE_NAME]”,将字典文件改名为config.ini,开始解密。
同时,黑刀部落网站的“项目中心”栏目也开设了用户提交自己已知程序被混淆的函数列表,这样的话,就能让Dezender变得越来越强了。再也不怕混淆函数了。呵呵。
什么是混淆函数?混淆吵指函数,是从Zend Guard 4.0之后新增的一项功能,能把PHP文件中的所有函数名都进行混淆,混淆后变成以“_OBFUSCATE_”开头的一串“乱码”,这种加密方式感觉有点类似Md5,因为函数名已经不是原来的样子了,所以解密出来的PHP文件是毕碰皮不能正常执行的。黑刀Dezender在4.3版之后,新增加了挂入混淆函数库参与解密的功能,而混淆函数库,就像是一个包含了已知函数名的字典,利用这个字典,来与被混淆了的函数名(就是所谓的“乱码”)进行比对,如果比对结果相同,则解密出来的文件,基本上就可以恢复到加密前的样子了。如果混淆函数库中没有包含该PHP文件中使用的函数名,那么解密结果依然还是会存在“乱码”的。掌握了这个原理,我们就可以去想办法解决问题了。
方式有以下几种:
第一,使用黑刀超级字典生成器产生一个字典,字典的内容可以自己把握,修改字典文件名为“config.ini”,然后打开字典文件,在第一行插入“[OBFUSCATE_NAME]”标记(注意,方括号也是需要的,也就是引号内的内容都要加进去)手差,将字典文件拷贝入黑刀Dezender主程序所在目录,同时注意备份原有的config.ini文件。这种办法费时费力,也要看运气,不过却是最实际的解决办法。
第二,常看别人源代码的朋友,可以把自己已经掌握了的混淆函数的真实函数名提交到我的网站上来。 *** 作步骤:进入网站首页,进入项目中心的“DeZender混淆函数库更新表”,提交。我会定期查看大家提交上来的数据,加入到官方的混淆函数库中,不断的增强和完善官方混淆函数库,大家可以利用黑刀Dezender的自动升级功能对其进行升级!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)