首页
社区
课程
招聘
[原创]一次加密的js插件解码
发表于: 2018-8-17 13:58 3186

[原创]一次加密的js插件解码

2018-8-17 13:58
3186

昨儿部门头在群里反馈,自家平台主页被人插了广告,用户还以为是我们的广告,遂出于好奇就打开看看,发现都是密文,如下:

插件源码样图

遂出于好奇,尝试进行一番调戏(过程简单)
插件地址: https://pexy.hrt360.com/js/xy_1.js

过程描述


插件头部第一行是一个很大的数组变量,数组经过处理,这个数组里主要存的是其他地方要用的函数,成员属性,变量的值等等,类似字典功能
字典样图

校正数组的代码(3~10行)

(function(_0xc7d02b, _0x91fb3b) {
    var _0x423ad0 = function(_0x3cc810) {
        while (--_0x3cc810) {
            _0xc7d02b['push'](_0xc7d02b['shift']());
        }
    };
    _0x423ad0(++_0x91fb3b);
} (_0x2257, 0xd2));

处理方式就是将头部一部分元素移除追加到数组的结尾,然后通过函数获取数组中的元素替换到后续代码中进行使用(12~16行)

var _0x494e = function(_0x49d74a, _0x46aee5) {
    _0x49d74a = _0x49d74a - 0x0;
    var _0x1e647d = _0x2257[_0x49d74a];
    return _0x1e647d;
};

取字典样图

Decode


 

插件中的字符串部分都转换成了字节码格式的表达方式,需要进行字符化,还有一些进行了unicode格式转换也需要转换出来

<?php

// 这里就是把插件的第一行数组的值
$dict =["\x65\x67\x61\x6d\x65\x2e\x71\x71\x2e\x63\x6f\x6d\x2f\x34\x32\x36\x36\x30\x32\x33\x33", "\x65\x67\x61\x6d\x65\x2e\x71\x71\x2e\x63\x6f\x6d\x2f\x32\x31\x34\x33\x34\x30\x30\x38\x36", ...];

for($i = 0; $i < 0xd2; $i++) {
    array_push($dict, array_shift($dict));
}

$o = file_get_contents('xy_1.js');

$n = preg_replace_callback('/\\\\x([0-9a-zA-Z]{2})/', function($matches) {
    return chr(hexdec($matches[1]));
}, $o);

$n = preg_replace_callback('/_0x494e\(\'0x([^\']+)\'\)/', function($matches) use($dict) {    
    return "'". $dict[hexdec($matches[1])] . "'";
}, $n);

$n = preg_replace_callback('/%([0-9a-zA-Z]{2})/', function($matches) {
    return rawurldecode($matches[0]);
}, $n);

$n = preg_replace_callback('/\\\\u[0-9a-z]{4}/', function($matches) {
    return json_decode("{\"unicode\": {$matches[0]}}")->unicode;
}, $n);

file_put_contents('./xy.js', $n);

结果


 

源码(这是经过格式化后的,不然只有一行):
源码

 

转换后:
decode

 

过程简单,大神勿喷


[课程]Linux pwn 探索篇!

最后于 2018-8-17 14:01 被KamiBoy编辑 ,原因: 内容有遗漏
收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 1999
活跃值: (86)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
很强
2019-7-22 16:15
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
对于我这个新手来说挺好的。。。今天我也在看这类东西,由于不做前端,看着那一堆处理后的JS真是难受,特别是有的地方你一旦格式化后,会影响JS的执行结果。。。
2019-8-6 16:16
0
游客
登录 | 注册 方可回帖
返回
//