php 加密文件解密
加密后的源文件长这个样:
<?php $O00OO0=urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%75%71%79%2A6%6C%72%6B%64%679%5F%65%68%63%73%77%6F4%2B%6637%6A");$O00O0O=$O00OO0{3}.$O00OO0{6}.$O00OO0{33}.$O00OO0{30};$O0OO00=$O00OO0{33}.$O00OO0{10}.$O00OO0{24}.$O00OO0{10}.$O00OO0{24};$OO0O00=$O0OO00{0}.$O00OO0{18}.$O00OO0{3}.$O0OO00{0}
.$O0OO00{1}.$O00OO0{24};$OO0000=$O00OO0{7}.$O00OO0{13};$O00O0O.=$O00OO0{22}.$O00OO0{36}
.$O00OO0{29}.$O00OO0{26}.$O00OO0{30}.$O00OO0{32}.$O00OO0{35}.$O00OO0{26}.$O00OO0{30};
eval($O00O0O("JE8wTzAwMD0iWmZERXp2eG.....这里省略了很多字符......E8wMDAsMCwkT08wMDAwKSkpKTs="));?>
开始解密:
- 新建一个php文件 如 a.php
- 在解密文件中引入加密文件,需要注意的是解密的文件格式必须固定如下格式
格式
// 要解密的文件,去掉php标识
$path = __DIR__ . "/a.php"; // 引入加密文件
$encode_sourcecode = file_get_contents($path);
$encode_sourcecode = str_replace('<?php','', $encode_sourcecode);
$encode_sourcecode = str_replace('?>','', $encode_sourcecode);
// 提取第一次需要解密的内容
// 即JE8wTzAwMD0iTmV5SElCamZRdk......1UYVNuUUpnY21UYVVoOCtoTm89IjtldmFsKCc/==
echo '</br></br>------------------------------$encode_sourcecode_content</br>';
$start = strripos($encode_sourcecode, '("') + 2;
$end = strripos($encode_sourcecode, '")');
$encode_sourcecode_content = substr($encode_sourcecode, $start, $end - $start);
echo $encode_sourcecode_content;
// 解密加密部分的代码后的内容
// $O0O000="NeyHIBjfQvDMwo......JoSptgMdl3M3JgSKQTiB0nuh8+hNo="; eval('......OO0000))));
echo '</br></br>------------------------------$decode_sourcecode_content</br>';
$decode_sourcecode_content = base64_decode($encode_sourcecode_content);
echo $decode_sourcecode_content;
// 解密后还是一个加密的代码,需要再次解码,所以要再次提取需要被解密的内容出来
// 即NeyHIBjfQvDMwo......JoSptgMdl3M3JgSKQTiB0nuh8+hNo=
echo '</br></br>------------------------------$decode_sourcecode_content_encode_content</br>';
$start = stripos($decode_sourcecode_content, '"') + 1;
$end = strripos($decode_sourcecode_content, '"') ;
$decode_sourcecode_content_encode_content = substr($decode_sourcecode_content, $start, $end - $start);
echo $decode_sourcecode_content_encode_content;
// 根据加密规则,替换字符并解码,即可得到原文件
echo '</br></br>------------------------------$decode_sourcecode_content_encode_content</br>';
$origin_content = base64_decode(strtr(
substr($decode_sourcecode_content_encode_content, 104),
substr($decode_sourcecode_content_encode_content, 52, 52),
substr($decode_sourcecode_content_encode_content, 0, 52)));
var_dump($origin_content);
// 把解密后的文件写入到b.php 文件中
file_put_contents(__DIR__ . "/b.php", $origin_content);
- 通过上面的解密,我们看一下得到的解密文件是什么样子的
<?php
function jIaCy($SRepU){
$SRepU=gzinflate(base64_decode($SRepU));
for($i=0;$i<strlen($SRepU);$i++){
$SRepU[$i] = chr(ord($SRepU[$i])-1);
}
return $SRepU;
}
eval(jIaCy("7T1rVxtH....这里省略了很多字符....PL/"));?>
- 使用当前解密出来的函数,执行获取内容,导出到 c.php 文件,即可获取加密之前的文件,改造后运行
<?php
function jIaCy($SRepU){
$SRepU=gzinflate(base64_decode($SRepU));
for($i=0;$i<strlen($SRepU);$i++){
$SRepU[$i] = chr(ord($SRepU[$i])-1);
}
return $SRepU;
}
echo $data = jIaCy("7T1rVxtH....这里省略了很多字符....PL/");
file_put_contents(__DIR__ . "/c.php", $data);
?>
- c.php 就是你要的结果
网友评论