剖析了一下此加密的思路
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);
?>