我是靠谱客的博主 高高镜子,最近开发中收集的这篇文章主要介绍phpjm解密程序,也适用于其他混淆加密的破解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


<?php
$file = 'plugin.php';  //要破解的文件
 
 
$fp = fopen($file, 'r');
$str = fread($fp, filesize($file));
fclose($fp);
 
copy($file, '0_'.$file);
 
$n = 1;
while($n < 10){
    $code = strdecode($str);
    if($n == 1){
        $code = str_replace("__FILE__", "'0_$file'", $code);
    }
     
    $replace = '$decode'.$n.'=trim';
    if(strpos($code, 'eval(') > 0){
        $code = str_replace('eval(', $replace.'(', $code);
    }else{
        preg_match("/@\$(.*)(\$(.*),(.*)(/isU", $code, $res);
        $code = str_replace($res[3], "'$replace", $code);
    }
     
    $code = preg_replace('/\$(.*)=false;(.*?)();/', '', $code); //上一版本
    $code = preg_replace('/||@\$(.*?)();/', '|| print("ok");', $code);
     
    $code = destr($code);
    $tmp_file = 'detmp'.$n.'.php';
    file_put_contents($tmp_file, $code);
    include($tmp_file);
 
    $val = 'decode'.$n;
    $str = $$val;
     
    unlink($tmp_file);
     
    if(strpos($str, ';?>') === 0){
        $decode = $str;
        break;
    }
     
    $str = "<?phprn". $str;
    $n++;
}
 
 
$decode = preg_replace("/^(.*)exit('Access Denied'); /", "<?phprn", $decode);
$del = strrchr($decode, 'unset');
$decode = str_replace($del, "rn?>", $decode);
file_put_contents($file.'.de.php' ,$decode);
unlink('0_'.$file);
echo 'done';
 

function val_replace($code, $val, $deval){
    $code = str_replace('$'.$val.',', '$'.$deval.',', $code);
    $code = str_replace('$'.$val.';', '$'.$deval.';', $code);
    $code = str_replace('$'.$val.'=', '$'.$deval.'=', $code);
    $code = str_replace('$'.$val.'(', '$'.$deval.'(', $code);
    $code = str_replace('$'.$val.')', '$'.$deval.')', $code);
    $code = str_replace('$'.$val.'.', '$'.$deval.'.', $code);
    $code = str_replace('$'.$val.'/', '$'.$deval.'/', $code);
    $code = str_replace('$'.$val.'>', '$'.$deval.'>', $code);
    $code = str_replace('$'.$val.'<', '$'.$deval.'<', $code);
    $code = str_replace('$'.$val.'^', '$'.$deval.'^', $code);
    $code = str_replace('$'.$val.'||', '$'.$deval.'||', $code);
    $code = str_replace('($'.$val.' ', '($'.$deval.' ', $code);
    return $code;
}
 
function fmt_code($code){
    global $vals,$funs;
    preg_match_all("/\$[0-9a-zA-Z[]']+(,|;)/iesU", $code, $res);
    foreach($res[0] as $v){
        $val = str_replace(array('$',',',';'), '', $v);
        $deval = destr($val, 1);
        $vals[$val] = $deval;
        $code = val_replace($code, $val, $deval);
    }
 
    preg_match_all("/\$[0-9a-zA-Z[]']+=/iesU", $code, $res);
    foreach($res[0] as $v){
        $val = str_replace(array('$','='), '', $v);
        $deval = destr($val, 1);
        $vals[$val] = $deval;
        $code = val_replace($code, $val, $deval);
    }
 
    preg_match_all("/functions[0-9a-zA-Z[]]+(/iesU", $code, $res);
    foreach($res[0] as $v){
        $val = str_replace(array('function ','('), '', $v);
        $deval = destr($val, 1);
        $funs[$val] = $deval;
        $code = str_replace('function '.$val.'(', 'function '.$deval.'(', $code);
        $code = str_replace('='.$val.'(', '='.$deval.'(', $code);
        $code = str_replace('return '.$val.'(', 'return '.$deval.'(', $code);
    }
    return $code;
}
 
function strdecode($str){
    $len = strlen($str);
    $newstr = '';
    for($i=0; $i<$len; $i++){
        $n = ord($str[$i]);
        $newstr .= decode($n);
    }
    return $newstr;
}
 
function decode($dec){
    if(($dec > 126 || $dec<32) && $dec<>13 && $dec<>10){
        return '['.$dec.']';
    }else{
        return chr($dec);
    }
}
 
function destr($str, $val=0){
    $k = 0;
    $num = '';
    $n = strlen($str);
    $code = '';
    for($i=0; $i<$n; $i++){
        if($str[$i] == '[' && ($str[$i+1]==1 || $str[$i+1]==2)){
            $k = 1;
        }elseif($str[$i] == ']' && $k==1){
            $num = intval($num);
            if($val==1){
                $num = 97 + fmod($num, 25);
            }
            $code .= chr($num);
            $k = 0;
            $num = null;
        }else{
            if($k == 1){
                $num .= $str[$i];
            }else{
                $code .= $str[$i];
            }
        }
    }
    return $code;
}
?>


<?php
//解密 PHP神盾
 
$file = 'Code2.php';
 
$fp = fopen($file, 'r');
$str = fread($fp, filesize($file));
fclose($fp);
 
$code = strdecode($str);
 
//for func de1
preg_match("/;(.*)]='(.*?)';for(/e", $code, $res);
$c1 = $res[2];
 
//for func de1
preg_match("/;(.*)=(.*)('(.*)');(.*);(.*)$/e", $res[1], $rs);
$c2 = $rs[3];
 
//for func de2
preg_match("/'(@(.*?)(\'(.*?)\'))/e", $code, $res);
$c3 = $res[2];
 
preg_match("/'.(.*?).'/e", $c3, $r);
preg_match("/('(.*?)','/e", $r[1], $r2);
$c4 = $r2[1];
$c4 = base64_decode(de1(destr($c4), 1));
$c3 = str_replace($r[0], $c4, $c3);
 
$funstr = gzuncompress(base64_decode($c3)).base64_decode($c1);
preg_match("/if(.*),'(.*?)'))/e", $funstr, $res);
$c5 = $res[2];
 
//find main code
preg_match("/'(@(.*)(\'(.*?)\'.(/e", $code, $res);
$c = $res[2];
preg_match("/'.(.*?).'/e", $c, $r);
preg_match("/('(.*?)','/e", $r[1], $r2);
$c6 = base64_decode(de1(destr($r2[1]), 1));
$c = str_replace($r[0], $c6, $c);
 
//find $de2
preg_match("/".((.*)='(.*?)'));/e", $code, $res);
$de2 = destr($res[2]);
$x = ($de2.=de2($de2));
$c .= $x;
$decode = gzuncompress(base64_decode($c));
 
$str = explode('<!--<?php endif;?>', $decode);
$str = explode('?><?php $GLOBALS', $str[1]);
$decode = $str[0].'?>';
 
echo $decode;
 
file_put_contents($file.'.de.php' ,$decode);
 
//
 
function de1($de1,$str2=''){
    global $c1,$c2;
    if(!$str2)return(base64_decode(destr($de1)));
    $s9=de1($c2);
    for($i=0;$i<strlen($de1);$i++)
        $s9.=ord($de1{$i})<245?((ord($de1{$i})>140&&ord($de1{$i})<245)?chr(ord($de1{$i})/2):$de1{$i}):"";
    return(base64_decode($s9));
}
 
function de2(&$de2){
    global $c5;
    if(strstr($de2,$c5)){
        $de2=str_replace($c5,'',$de2);
        $de2=gzuncompress($de2);
    }
    if(strstr($de2,$c5)){
        $de2=str_replace($c5,'',$de2);
        de2($de2);
    }
     
}
 
/
 
function strdecode($str){
    $len = strlen($str);
    $newstr = '';
    for($i=0; $i<$len; $i++){
        $n = ord($str[$i]);
        $newstr .= decode($n);
    }
    return $newstr;
}
 
function decode($dec){
    if(($dec > 126 || $dec<32)){
        return '['.$dec.']';
    }else{
        return chr($dec);
    }
}
 
function destr($str){
    $k = 0;
    $num = '';
    $n = strlen($str);
    $code = '';
    for($i=0; $i<$n; $i++){
        if($str[$i] == '['){
            $k = 1;
        }elseif($str[$i] == ']'){
            $num = intval($num);
            $code .= chr($num);
            $k = 0;
            $num = null;
        }else{
            if($k == 1){
                $num .= $str[$i];
            }else{
                $code .= $str[$i];
            }
        }
    }
    return $code;
}
?>




最后

以上就是高高镜子为你收集整理的phpjm解密程序,也适用于其他混淆加密的破解的全部内容,希望文章能够帮你解决phpjm解密程序,也适用于其他混淆加密的破解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部