|
|
|
最近得到一套叫PHP魔方加密的样本,看介绍是DZ平台上的加密工具,简单分析,对代码进行了转换,比较易读,有兴趣的可以自行分析,也欢迎大家参与交流。 通过PHP魔方样本研究PHP解密,对DZ魔方加密的解密,算法研究分析。分析一下PHP魔方算法,多写一些与PHP魔方算法相关的内容。 这个PHP魔方DZ加密,还是很有特点的。有兴趣大家研究! 
- <?php
- $fun_array = array(
- "\xbc\xae\xc2\x87\x80\x83\x86" => "fun_1",
- "\xbc\xae\xc2\xd7\x8a\x85\x83" => "fun_2",
- "\xbc\xae\xc2\x82\x92\x82\x80" => "fun_3",
- "\xbc\xae\xc2\x8b\x9a\x80\x80" => "fun_4",
- "\xbc\xae\xc2\xc0\xa0\x84\x80" => "fun_5",
- "\xbc\xae\xc2\xa2\xaa\x86\x83" => "fun_6",
- "\xbc\xae\xc2\xad\xb1\x83\x83" => "fun_7",
- "\xbc\xae\xc2\xcf\xbe\x85\x87" => "fun_8",
- "\xbc\xae\xc2\xb9\xc2\x80\x84" => "fun_9",
- "\xbc\xae\xc2\xbb\xce\x81\x85" => "fun_10",
- "\xbc\xae\xc2\xc0\x87\x8f\x80" => "fun_11",
- "\xbc\xae\xc2\xc7\x8f\x8b\x83" => "fun_12",
- "\xbc\xae\xc2\x80\x96\x8b\x86" => "fun_13",
- "\xbc\xae\xc2\xc2\x98\x8e\x86" => "fun_14",
- "\xbc\xae\xc2\x90\xa2\x8d\x84" => "fun_15",
- "\xbc\xae\xc2\x9b\xa9\x8a\x80" => "fun_16",
- "\xbc\xae\xc2\xdc\xb5\x89\x85" => "fun_17",
- "\xbc\xae\xc2" => "fun_18"
- );
- function fixstr($mystr)
- {
- global $fun_array;
- foreach ($fun_array as $k => $v) {
- $mystr = str_ireplace($k, $v, $mystr);
- }
- return $mystr;
- }
- function fun_1(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $v_3[$v_4] = !$v_3[$v_4];
- }
- function fun_2(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $v_3[$v_4] =& $_GET;
- }
- function fun_3(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $v_3[$v_4 - 1] = $v_3[$v_4 - 1] == $v_3[$v_4];
- }
- function fun_4(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $v_3[$v_4 + 1] = NULL;
- $v_4 = $v_4 + 1;
- }
- function fun_5(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $v_3[$v_4] = "";
- $var_1 = (int) ($v_1[$v_2++]);
- $var_2 = $v_1[$v_2++];
- for ($var_3 = 0; $var_3 < $var_1; $var_3++) {
- $v_3[$v_4] .= $v_1[$v_2++] ^ $var_2;
- }
- }
- function fun_6(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $v_3[++$v_4] = NULL;
- }
- function fun_7(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $var_4 = $v_3[$v_4];
- unset($v_3[$v_4]);
- $v_3[$v_4] = $var_4;
- }
- function fun_8(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- if ($v_3[$v_4]) {
- $var_5 = $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++];
- $v_2 += (int) $var_5;
- } else {
- $v_2 += 12;
- }
- }
- function fun_9(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $v_4 = $v_4 + ((int) $v_1[$v_2++]);
- }
- function fun_10(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $var_6 = $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++] . $v_1[$v_2++];
- $v_2 += (int) $var_6;
- }
- function fun_11(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $var_7 =& $v_3[$v_4 - 1];
- unset($v_3[$v_4 - 1]);
- $v_3[$v_4 - 1] =& $var_7[$v_3[$v_4]];
- }
- function fun_12(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $v_3[$v_4] = "";
- $var_8 = (int) ($v_1[$v_2++] . $v_1[$v_2++]);
- $var_9 = $v_1[$v_2++];
- for ($var_10 = 0; $var_10 < $var_8; $var_10++) {
- $v_3[$v_4] .= $v_1[$v_2++] ^ $var_9;
- }
- }
- function fun_13(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- echo $v_3[$v_4];
- }
- function fun_14(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- unset($v_3[$v_4]);
- $v_4 = $v_4 - 1;
- }
- function fun_15(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $v_4 = $v_4 + 1;
- $v_3[$v_4] = NULL;
- }
- function fun_16(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- unset($v_3[$v_4--]);
- }
- function fun_17(&$v_1, &$v_2, &$v_3, &$v_4, &$v_5, &$v_6, &$v_7)
- {
- $v_2 = $v_3[$v_5 - 1];
- $v_5 = $v_3[$v_5];
- }
- function fun_18($v_1, $v_2)
- {
- static $var_11;
- if (strlen($var_11) == 0) {
- $var_11 = "\x12\xab\xd0\x14\x92\x96\x30\xa0+\x3a\xa6\x20\x20\x1a\xcd\x90\x1c\x9f\x99\x9c\x17\x06\x9a\x1c\x1c\xe9)I\xefmi\x36\x23NLEBMD\xdb\x1b\x5c\xddT\x5bF\xdd\xef\x40\xcc\xc6\xba\x17\x0b\xbc\x39\x39d\xf4\xc6b\xe9\xe0\xf9\x39Y\xff}y\x33\xcf\xb6\xaa\xbc\x06\x84\x94\x00\x84\x86\x0b\x90\xa2\x0d\x81\x8bj\xed\xeal\xe9\xec\xed\x22S\xebhj\x36\x31\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc1Zh\xc7KA\xa5\x35\x07\xa3(\x21i\xae\xe6o\xe2\xea\x31\x30u\xa3\xd0\xb7\x9c\xa7\xa4\xca\xdf\xb6\xb0\x15\x95\x83\x13\x9e\x93\xbe\x7c\x26\xb8\x30\x38h\xd3\xa6n\xe9\xed\x35\x33\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00i\xab\xf1o\xe7\xef\x9e\x15\x04\x98\x1e\x1e\xc7\x00H\xc1LD\x32\x30/\xe5\x9d\xec\x9b\x9d\xe1\xe5\xd2\x9d\xea\xeb\xf3\x9b\xdd\x90\x85\xe1\xfd\xeb\xf7\xa4\x24\x32\xa2/\x22\xf1jX\xf7{q\x8c.\x26\x8a\x0a\x0f\xa8j\x30\xae\x26.\x3c\x9e\x96\x3a\xba\xbf\xb9e\x0c\xbf\x30\x3c";
- }
- $var_12 = array();
- $var_13 = array();
- $var_14 = $var_15 = 0;
- foreach ($v_1 as $var_16) {
- $var_12[++$var_14] = $var_16;
- }
- $var_12[++$var_14] = count($v_1);
- $var_12[++$var_14] = -1;
- $var_12[++$var_14] = 0;
- $var_17 = $var_14;
- while ($v_2 >= 0) {
- $var_16 = "\xbc\xae\xc2" . ($var_11[$v_2] ^ $var_11[$v_2 + 1]) . ($var_11[$v_2] ^ $var_11[$v_2 + 2]) . ($var_11[$v_2] ^ $var_11[$v_2 + 4]) . ($var_11[$v_2] ^ $var_11[$v_2 + 5]);
- $v_2 += ord($var_11[$v_2] ^ $var_11[$v_2 + 3]);
- $var_16 = fixstr($var_16);
- $var_16($var_11, $v_2, $var_12, $var_14, $var_17, $var_13, $var_15);
- }
- return $var_12[$var_14];
- }
- fun_18(array(), 0);
- ?>
复制代码
|
|