解码GL\x4f\x42A\x4c\x53类加密实例

网上有很多PHP的加密文件,类似GL\x4f\x42A\x4c\x53格式的,下面我们给出解密的方法:

这里要解密的文件命名为:aaa.php 。

<?php
//laoji.org 解码GL\x4f\x42A\x4c\x53类加密
$fn='aaa.php';
$t='0123456789abcdefABCDEF';
$r=$p=$qt=$s='';
$slash=false;
$i=$j=0;
if ($f=fopen($fn,"rb")){
    $s=fread($f,filesize($fn));
    fclose($f);
    for ($i=0;$i<strlen($s);$i++){
        $slash=false;
        $p=sprintf("&nbsp;%06d,%06d",$i,$j);
        if ($s[$i]=='\\'&&$s[$i + 1]=='x'
            &&strpos($t,$s[$i+2])!==false&&strpos($t,$s[$i+3])!==false){
            $qt=strtolower(substr($s,$i,4));
            $slash=(($qt=='\\x22'||$qt=='\\x5c')&&$s[$i-1]!='\\') //引号\x22 斜杠\x5c,前面不是斜杠,需补充斜杠
                 ||(($qt=='\\x22'||$qt=='\\x5c')&&substr($s,$i-2,2)=='\\\\');//前面是2+个斜杠,需要补充斜杠
            if ($slash) {
                $p=sprintf("<font color=red>%s",$p);
                $j++;
            }
            //echo 'H:'.$qt.'=>&nbsp;'.chr(hexdec($s[$i+2].$s[$i+3])).$p.'<br />';
            $qt=($slash)?'\\':'';
            $r.=$qt.chr(hexdec($s[$i+2].$s[$i+3]));
            $i=$i+3;
        }else{
            //echo 'C:=====>&nbsp;'.$s[$i].$p.'<br />';
            $r.=$s[$i];
        }
        $j++;
    }
	$i=0;
	$ra=array();
    preg_match_all('/(?P<item>\$\{"[a-zA-Z_0-9]+"\}\s*\[\"[a-zA-Z_0-9]+\"\])\s*=\s*"(?P<value>[a-zA-Z_0-9]+)";/i',$r,$ra);
	
    foreach ($ra['item'] as $i=>$a){  //$a = ${"GLOBALS"}["mqhformwegp"]
        $b=$a.'="'.$ra['value'][$i].'";';
        if (strpos($r,$b)!==false) {
			//print_r($b);exit;
            $r=str_replace($b,'',$r);
            $r=str_replace('{'.$a.'}',$ra['value'][$i],$r);
			
        }
    }
    preg_match_all('/(?P<item>\$[a-zA-Z_0-9]+)\s*=\s*"(?P<value>[a-zA-Z_0-9]+)";/i',$r,$ra);
    foreach ($ra['item'] as $i=>$a){
        $b=$a.' = "'.$ra['value'][$i].'";';
        $a1='${'.$a.'}';
        if (strpos($r,$b)!==false&&strpos($r,$a1)!==false) {
            $r=str_replace($b,'',$r);
            $r=str_replace('{'.$a.'}',$ra['value'][$i],$r);
        }
    }
    preg_match_all('/(?P<item>\$\{(?P<value>\$[a-z]+)\})/i',$r,$ra);
    foreach ($ra['item'] as $i=>$a){  //$a = ${$mqhformwegp}		
            //$b=$a.'="'.$ra['value'][$i].'";';
            $b='/\\'.$ra['value'][$i].'=\"([a-zA-Z_0-9]+)\";/';
            //print_r($b);
            //if(preg_match($b, $r, $c)){
            if( preg_match($b,$r, $c) ){
                    $r=str_replace($c[0],'',$r);
                    $r=str_replace($a,'$'.$c[1],$r);
            }
    }

    $r= str_replace("{","{\r\n\t",$r);
    $r= str_replace("}","}\r\n\t",$r);
    $r= str_replace(";",";\r\n\t",$r);
    
    $fn='aaa1.php';
    $f=fopen($fn,"wb");
    fwrite($f,$r);
    fclose($f);
    echo 'done...';
    exit;
}

解密完成后会新建一个文件aaa1.php。 这里就是解密好的文件了。

链接到文章: https://vpsum.com/43461.html

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注