开发者社区 问答 正文

求php文件解密方法

类似这样的文件 不知道是用什么加密的?
screenshot

展开
收起
落地花开啦 2016-06-16 13:26:27 2153 分享 版权
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    把代码格式化一下,大概可以变成这样子:

    global $ar;
    
    $ar = array('眴暓簨亸悓' => __FILE__);
    
    if(!defined('AAFEEBDEDCC')) {
        define("AAFEEBDEDCC", 1378718929);
        function f($a, $b="") {
            global $ar;
            $a = base64_decode($a);
            if(empty($a))
                return "";
            if($b == "") {
                return ~$a;
            } else {
                $c = $ar['2']($a);
                $b = $ar['3']($b, $c, $b);
                return $a^$b;
            }
        }
    }
    
    $ar['1'] = f('mpKPi4Y=', ''); // empty
    $ar['2'] = f('jIuNk5qR', ''); // strlen
    $ar['3'] = f('jIuNo肐+emw==', '');
    echo $ar['3'];
    $ar['睅斀垞Г潑'] = f('nZ6Mmsn↙oJuanJbmg==', '');
    $ar['迁憛皶尰'] = f('HjgiKD繟/KiECKyQq', 'nJGOoMOQ');
    $ar['幎紮厞璃Г'] = f('FxQEWQ==', 'rbe5tYGWl8aA');
    $ar['膰摜忱'] = f('0M/H儂8men箂7Iz5nHsea弞p2bysma梲8fHm8bJx?7Nxpyc?Jo=', '');
    $ar['潊粋暦泉'] = f('DTEcCBQNBB獻BLwBO', 'jKifwbibsJs=');
    @$ar['迁憛皶尰']($ar['膰摜忱'], $ar['幎紮厞璃Г'].'('.$ar['潊粋暦泉'].'('.$ar['睅斀垞Г潑'].'......', ,'毝徚0806aa170f8e8e1bd56e088d968129cc嫏憛');
    return;

    我已经把变量名替换了,它加密的方法大概就是 base64 之后按位取反。

    解密的方法很简单,就是跟着代码走,不断地加入 echo 语句,把中间的结果打印出来。

    比如我在上面的代码中已经注释了,mpKPi4Y= -> empty 和 jIuNk5qR -> strlen 。我估计中间有一个地方会出现 eval 之类的东西,然后后面那个超大的字符串的就是用来 eval 的。

    无奈的是上面的 ar['3'] 在我的 php 5.5.6 下运行不了。jIuNo肐+emw== 这个字符串本身也不是合法的 base64 串。如果这里不是编码问题的话,那估计是旧版本的 php 可以支持这个。楼主如果可以运行,可以沿着这个思路继续,就可以解密了。

    2019-07-17 19:40:43
    赞同 展开评论