现在很多程序作者为了保护自身利益越来越喜欢把代码进行各种各样的加密处理,(例如:<?php eval(gzinflate(base64_decode(’encoded text’))); ?>),但是这样做的一个缺点就是,当你希望修改其中一部分代码时就无法进行,对于追求完美的朋友来说这样做是不能容忍的,怎样才能让这些被搞乱的代码还原呢?
<?php
$code_file = coded.txt; //加密后文件
$decode_file = decoded.txt; //解密后代码存放文件
echo <pre>;
echo "\nDECODE nested eval(gzinflate()) by DEBO Jurgen AND modify By jayeeliu\r\n";
echo "1. Reading coded file\n";
$contents = file_get_contents($code_file);
echo "2. Decoding\n";
$i=1;
while (preg_match("/eval[ ]*\([ ]*gzinflate/",$contents)) {//在eval(的(两边加入多空格匹配
echo $i++."\r\n";//显示解密次数
$contents=preg_replace("/<\?php|\?>/", "", $contents);
$contents=preg_replace("/<\?|\?>/", "", $contents);
eval(preg_replace("/eval/", "\$contents=", $contents));
}
$contents = substr(substr($contents, 2), 0, -2);//去除开始的\?\>(\只是转义,文件中没有)和结尾的<?
echo "3. Writing decoded file\n";
echo file_put_contents($decode_file, $contents);
echo </pre>;
?>
新建记事本,把以上代码粘贴到新建记事本然后改为PHP文件,把需要解密的文件改为coded.txt,TXT文件必须和刚建的PHP文件在同一目录,在浏览器中打开刚建的PHP文件,解密就完成了,解密后的文件自动生成为decoded.txt文件。