破解php代码混淆加密的程序
代码混淆加密——虽然是雕虫小技的加密方式,但手工解出来还是蛮费时间,尤其是有一大堆加密程序的时候。
今天兴致还不错,写了个php解密程序,解密效果完美,批量解密也是一个爽!
注意:程序会在同目录生成和删除 tmp.php
<?php /* * by 267014855 * 2011-7-18 */ //$file = 'global.func.php'; $hd = opendir('./'); while($f=readdir($hd)){ if($f == '.' || $f == '..') continue; $file = $f; $strs = file($file); $code = $strs[1]; if(strpos($code, '$OOO0O0O00') === 0){ $arr=decode($code); $arr = checkagain($arr); //加密很深的话多checkagain几次 /* //输出文件所有代码 $arr = checkagain($arr); echo '<pre>'; print_r($arr); echo '</pre>'; */ //输出文件有用代码 $arr = checkagain($arr, 1); file_put_contents('jm_'.$file, "<?php\r\n".$arr."\r\n?>"); //echo $arr; }else echo '无需解密'; } ////////////////////////////////////////////////////////// function checkagain($arr, $out =0){ //没有这个函数也差不多了,保留一点,给开发者留碗饭! } function getrlcode($arr, $key){ $str = '<?php'."\r\n"; foreach($arr as $v){ $str.=$v; } $str.="?>"; file_put_contents('tmp.php', $str); include 'tmp.php'; unlink('tmp.php'); return $$key; } function decode($str){ global $file; $codearr = $tmpcodearr = array(); $arr = explode(';', trim($str)); $i=1; foreach($arr as $v){ $v = trim($v); $v = str_replace('__FILE__', '\''.$file.'\'', $v); if($v=='?>') break; if($v=='return') continue; if(strpos($v, 'eval') === 0){ unset($tmpcodearr); $tmpcodearr = $codearr; $key = 'str'.$i; $tmpcodearr[] = '$'.$key.'='.findstr($v).";\r\n"; $newstr = getrlcode($tmpcodearr, $key); unset($tmpcodearr); $tmpcodearr = explode(';', trim($newstr)); foreach($tmpcodearr as $v){ trim($v) && $codearr[] = trim($v).";\r\n"; } $i++; }else{ $codearr[] = $v.";\r\n"; } } return $codearr; } //gbk的文件格式 function findstr($str){ $i = 4; while($str[$i] == '('){ $i++; } return substr($str, $i, strlen($str)-$i-($i-4)); } ?>
转载请注明来自WebShell'S Blog,本文地址:https://www.webshell.cc/1892.html
再次呼吁站长告诉如何运行呀,小白一个,谢谢先!
这个具体怎么用啊
@啊啊啊, 同楼上呀,这个如何用呀,给小白讲一下呀,上面的老板!