分析了一下此加密的思路

1、将原始文件gzcompress、base64_encode处理得到长度为X的加密串

2、将加密串按照M+4+1+N的长度进行分割,X=M+4+1+N,M和N有随机性,每次加密出来结果不一样

3、将长度为4的串加密处理,按照gzcompress、base64_encode、base64_encode、strtr(包含一个替换字典rpd)的步骤,得到加密后的串str4和替换字典rpd

4、将str4、rpd、strM、str1、strN明文显示在加密后的文件中,但自解析方法通过层层混淆加密隐藏起来。

完毕。

解密方法:

1、获取str4、rpd、strM、str1、strN

2、用第3步加密的逆向方法获取真正的str4

$str4 = gzuncompress(base64_decode(base64_decode(strtr($str4, $rpd, strrev($rpd)))));

3、拼接加密串

$str = $strM.$str4.$str1.$strN;

4、解密得到原始文件

$output = gzuncompress(base64_decode($str));

5、格式化并输出文件

初步的代码如下,可保存为utf8格式的de.php文件执行,欢迎将结果回帖告诉大家

<?php

//origenal data

//全文件倒数第5个字符串,函数的第1个参数

$str4 = "BU5vTOFFDU1ZjGdZ�bqtRRkWM�";

//全文件倒数第4个字符串,函数的第2个参数

$rpd = "ZOyQUbqDB";

//在return "J";}}else{global包含之内,J会变化

$str1 = "J";

//全文件倒数第3个字符串,和"之内(这是eval中嵌套的代码,只留有用部分)

$strM = "eNo1jkFqwzA�URK/iwoek8G�+Qkqx7hK6LI�YtQB5J0q3xLxrYcWbasWHF�kOVetNt3NMI�/HbHbbj91xf�0zS732WrD6T�";

//全文件倒数第2个字符串,"和之内(这是eval中嵌套的代码,只留有用部分)

$strN = "l/Z5W2�1+Z8uP6f0vI�YKwc4IN9Uj3�LvKIBR8EhzB�L/WgPELDWMe�qMQah7k9JJc�LsHkIuNc8RF�KPHoAemLULf�hSrQaOZrLHx�pAnde+dccJV�er+1JTIPOUOgoon7gLxH3h�xwi7sTNOUK1�MI+0iEF4tkf�FFPZWtbWWTv�8fbf284XrQ=�";

//serial data

$str4 = gzuncompress(base64_decode(base64_decode(strtr($str4, $rpd, strrev($rpd)))));

//decode data

echo "phpjm has encoded .php file as strM.str4.str1.strN<br>";

echo "the length is:strM+str4+str1+strN=".strlen($strM)."+".strlen($str4)."+".strlen($str1)."+".strlen($strN)."<br><br>";

$str = $strM.$str4.$str1.$strN;

$output = gzuncompress(base64_decode($str));

//output data

echo "decoded:<br>";

highlight_string($output);

echo "<br>eval:<br>";

eval($output);

?>

分类: 游戏攻略 标签: 暂无标签

评论

暂无评论数据

暂无评论数据

目录