欧美另类日韩中文色综合,天堂va亚洲va欧美va国产,www.av在线播放,大香视频伊人精品75,奇米777888,欧美日本道免费二区三区,中文字幕亚洲综久久2021

淺談PHP神盾的解密過程 -電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.lotusphilosophies.com - 電腦資料】

   

    前些日子一個朋友丟了個shell給我,讓我?guī)兔饷埽蜷_源碼看了下寫著是 "神盾加密" , 其實網(wǎng)上早就有人分析過這個了,而且寫成了工具、但是我測試了很多個,沒一個能用,所以決定自己從頭分析一遍,

淺談PHP神盾的解密過程

    我們來做第一步解密處理吧。

    PS: 這只是我的解密思路,與大家分享一下,也許你有更好的方法還望分享

   

    $str = file_get_contents("1.php");

    // 第一步 替換所有變量

    // 正則 \$[a-zA-Z_\x7f-\xff][\w\x7f-\xff]*

    preg_match_all('|\$[a-zA-Z_\x7f-\xff][\w\x7f-\xff]*|', $str, $params) or die('err 0.');

    $params = array_unique($params[0]); // 去重復(fù)

    $replace = array();

    $i = 1;

    foreach ($params as $v) {

    $replace[] = '$p' . $i;

    tolog($v . ' => $p' . $i); // 記錄到日志

    $i++;

    }

    $str = str_replace($params, $replace, $str);

    // 第二步 替換所有函數(shù)名

    // 正則 function ([a-zA-Z_\x7f-\xff][\w\x7f-\xff]*)

    preg_match_all('|function ([a-zA-Z_\x7f-\xff][\w\x7f-\xff]*)|', $str, $params) or die('err 0.');

    $params = array_unique($params[1]); // 去重復(fù)

    $replace = array();

    $i = 1;

    foreach ($params as $v) {

    $replace[] = 'fun' . $i;

    tolog($v . ' => fun' . $i); // 記錄到日志

    $i++;

    }

    $str = str_replace($params, $replace, $str);

    // 第三步 替換所有不可顯示字符

    function tohex($m) {

    $p = urlencode($m[0]); // 把所有不可見字符都轉(zhuǎn)換為16進(jìn)制、

    $p = str_replace('%', '\x', $p);

    $p = str_replace('+', ' ', $p); // urlencode 會吧 空格轉(zhuǎn)換為 +

    return $p;

    }

    $str = preg_replace_callback('|[\x00-\x08\x0e-\x1f\x7f-\xff]|s', "tohex", $str);

    // 寫到文件

    file_put_contents("1_t1.php", $str);

    function tolog($str) {

    file_put_contents("replace_log.txt", $str . "\n", FILE_APPEND);

    }

    ?>

    (其中有一個記錄到日志的代碼,這個在之后的二次解密時有用。)

    執(zhí)行之后就會得到一個 1_t1.php 文件,打開文件看到類似這樣的代碼

    找個工具格式化一下,我用的 phpstorm 自帶了格式化功能,然后代碼就清晰很多了。

    進(jìn)一步整理后得到如下代碼:

   

    //Start code decryption《===

    if (!defined('IN_DECODE_82d1b9a966825e3524eb0ab6e9f21aa7')) {

    define('\xA130\x8C', true);

    function fun1($str, $flg="") {

    if(!$flg) return(base64_decode($str));

    $ret = '?';

    for($i=0; $i

    $c = ord($str[$i]);

    $ret .= $c<245 ? ( $c>136 ? chr($c/2) : $str[$i] ) : "";

    }

    return base64_decode($ret);

    }

    function fun2(&$p14)

    {

    global $p15, $p16, $p17, $p18, $p19, $p3;

    @$p17($p18, $p19 . '(@$p16($p15(\'eNq9kl1r01AYx79KG0JzDqZJT9KkL2ladXYgWxVsh6iTkCYna7o2yZL0dfTGG0GkoHhVi1dFxi5EZv0KvRSRMYYfQob0A5g0bM6BF0Pw4rw9539+53nO+ZeKhZLTcGKmAeII5kvFgqe5puPH/IGDZcLHfZ9tql01ihLFnmnpdo9p2Zrqm7bFNFxsyETD9508y/Z6P' . $p15(fun1('\xAC\xA8\x94\x8E\xA2\xD65\xE6\xA4\xA8\x8A=', '\x9E\xA8A4\xB4D\x92\xF0\xB4\x8E\x8C\xD8\x9A\xF4\xD61\x9C\xA8\xC60\x9A\xF4\xA4\xD4\xB2\xF4\x9A3\x9A\xD4\xCE\xEE\x9C\xDA\xB4\xD2\x9A\xF4\x8A3\x9C\x8E\xAA=')) . 'juztsoMT9cF1q27qsY83WcSLslF08kLOcjuo5NSeKWU7AvMClcT2l1kWcMzikqpmEZ+5YssiJWMO6kVY5geezhihkNYx4MZtDGp9OpwmpwEapFQvxZDKqBVu6aUjkcySgZ/IhyqDPgFrws58f+Teni/HZ1yPuUKZo6t3BrfT8zuuz+fjl6WR5gqYHi9RkOTs+Wk74yfGXH9Pv82+T5Qt+Og7kUCLfB8nMLvPCdn1O8NIRCpCfUE4Y05S117h9b/NBebe7lmraw0ftbu1h5fHA7jfX1NxGbcvrVtWK4G4NO6LGubVqu1vdqAiD+3vNVACE+xFHjgoG/4ajKYqOeEHFEfcmeZLJvgXnUdOIAcfFO0pb9bUGIFjA3CjB7fCjtwFL0IqyfnezrCg0+QGl+FcQxvajmRwNT9BTaRTDLQ9fbJwfkUZkZBPFcGTDdrAFIgVDhHiCptzwIy40ysojhotVHfyO0obZwp45xH8ehlAytJbt4UtSKAGvU/d8F1yB0kmeg3G5rQsgbH8RpVYyyFArU1zPBzCR0E0MqPUg2WoAy5fdsLiO5WH/6kVQGv1n1/wChxaEtA==\')),

電腦資料

淺談PHP神盾的解密過程》(http://www.lotusphilosophies.com)。$p16($p15($p3)))', "82d1b9a966825e3524eb0ab6e9f21aa7");

    }

    }

    global $p15, $p16, $p17, $p18, $p19, $p3;

    $p17 = 'preg_replace';

    $p18 = '/82d1b9a966825e3524eb0ab6e9f21aa7/e';

    $p15 = 'base64_decode';

    $p19 = 'eval';

    $p16 = 'gzuncompress';

    $p3 = '';

    @$p17($p18, $p19 . '(@$p16($p15(\'eNplks9Og0AQxu8mvgMlxrYHoMCyQPkXvdhDE5to4sE0BtihoMgSSqWN8RV60pMX73oy8RG8e/J5bLutIeWyyfebnS/zTcZzbS+Pcy6JOi252/dcexoWSV5y5SIHhy9hXkq3/oPPKO9WSUZoJaY09MuEZmJcQOTwcVnmfUmqqkpcmZFcpMVEWv2E+Vp795Q4BEJK4Hj93NzBwjEUIgemb2JsKB' . $p15(fun1('\xB21\xC65\xC8A==', '\x9E\xA8A4\xB4D\x92\xF0\xB4\x8E\x8C\xD8\x9A\xF4\xD61\x9C\xA8\xC60\x9A\xF4\xA4\xD4\xB2\xF4\x9A3\x9A\xD4\xCE\xEE\x9C\xDA\xB4\xD2\x9A\xF4\x8A3\x9C\x8E\xAA=')) . 'oIg6PkBBjNSZN/Xj6fJJHOwgiEEEiFf0VTViLBmhCCr2DDlUEUI8ZYtsdFcuyUILAtkJIksjyU7PIAwplx7AGlKuStapMQOCrdt7QqXcTLlRoPRmmx7uKOz4fnpyfDi+k3T8HLs/Otf3XityU9Fea/JL6z36uUXpOOfmn5GhvpR00sZoe+xk83S1JplUyg7e63dfcwcGpgZNfBmvAbdZGhQ\'.($p20.=fun2($p20)))))', "82d1b9a966825e3524eb0ab6e9f21aa7" . ($p20 = 'x\xDA\xCB)

    vnqhBNLREkvC0jozYmvTWMZyoxjCa9KTUsvSaM5rUzu6c2rTSmvSKM5yOqj0=

    O\FF.\xADH5\xCF2\x88\xF0u\x8BL*\xCD\xF2223.

    \xB1\xF0\FF1\xCF+\x02\x00\xB6\xCA

    \xBE'));

    //End of the decryption code===》

    return true;?>76cde264ef549deac4d0fae860b50010

    是不是很清晰了,剩下的就是基本代碼了,還有個知識點 preg_replace 當(dāng)正則修飾符含有e的時候,就會把第二個參數(shù)當(dāng)作 php 代碼解析執(zhí)行,$p18 變量里就是那個正則,末尾的 e 在閃閃發(fā)光。

    還有 fun2 里的內(nèi)容最好再次輸出一個文件,然后用上面的方法替換下變量。

    @$p17 那一行的才是我們真正的源碼,但是尾部有一部在 fun2 函數(shù)里,因為 fun2 里才是真正的驗證和輸出尾部base64代碼。

最新文章