首页 > 其他分享 >解一个webpack打包后加密的JS代码

解一个webpack打包后加密的JS代码

时间:2022-12-08 18:03:08浏览次数:49  
标签:function 加密 0x28aee6 JS webpack ws const startWsCount

源码过长,只贴部分加密的源代码如下

0x1fc9: function (_0x2715a2, _0x5a118b, _0x344094) {
const _0x23ae3e = _0x344094(`611c`);

class _0x2e9b72 {
static [`getInstance`]() {
if ('\x6f\x64\x74\x56\x66' === `odtVf`) return new _0x23ae3e(); else {
function _0x2198cd() {
_0x12eae5[`log`](`ws\u8FDE\u63A5\u5931\u8D25`);
const _0x28aee6 = this;
_0x28aee6[`startWsCount`] < 0x5 ? (this[`$message`]('\u6b63\u5728\u542f\u52a8\x77\x73\u670d\u52a1\x2e\x2e\x2e'), _0x4bc899(function () {
_0x28aee6[`startWsCount`] += 0x1, _0x28aee6[`startWsCount`] >= 0x3 ? (_0x28aee6[`startWs`](), _0x28aee6[`startWsCount`] = 0x0) : _0x28aee6[`initWs`]();
}, 0x7d0)) : (_0x28aee6[`ws_tips`] = `ws\u5DF2\u5C1D\u8BD5\u542F\u52A8\u5931\u8D255\u6B21\uFF0C\u8BF7\u68C0\u67E5ws\u6587\u4EF6\u8DEF\u5F84\u662F\u5426\u6B63\u5E38\uFF0C\u6216\u624B\u52A8\u542F\u52A8`, _0x3feb67(function () {
_0x28aee6[`not_start_ws`] = !0x0;
}, 0x7d0));
}
}
}
}

const _0x189052 = _0x2e9b72[`getInstance`]();
_0x2715a2[`exports`] = _0x189052;
}

我手动解密后如下

8137: function(ref, model, expt) {
const encipher = expt(`611c`);

class Encipher {
static[`getInstance`]() {
return new encipher();
}
}
const exa = Encipher.getInstance();
ref.exports = exa;
}

说一下解密思路

1.加密的源代码整体结构,只要是做过前端的,基本上一眼就可以看出来,这是经过webpack打包过的,然后经过了混淆加密变成了最终这个结构。PS:在把最外层的加密解开后,我发现里边除了webpack,可能还有用其他的加密代码先加密过一遍再用webpack打包的。

2.好了,现在先了解了这个源码的基本加密流程,我们开始着手解密。

3.先把源代码丢在线一键加密解密JS代码用一键解密功能先解一遍,得到如下代码。

0x1fc9: function(_0x2715a2, _0x5a118b, _0x344094) {
const _0x23ae3e = _0x344094(`611c`);

class _0x2e9b72 {
static[`getInstance`]() {
if ('odtVf' === `odtVf`) return new _0x23ae3e();
else {
function _0x2198cd() {
_0x12eae5[`log`](`ws连接失败`);
const _0x28aee6 = this;
_0x28aee6[`startWsCount`] < 0x5 ? (this[`$message`]('正在启动ws服务...'), _0x4bc899(function() {
_0x28aee6[`startWsCount`] += 0x1, _0x28aee6[`startWsCount`] >= 0x3 ? (_0x28aee6[`startWs`](), _0x28aee6[`startWsCount`] = 0x0) : _0x28aee6[`initWs`]();
}, 0x7d0)) : (_0x28aee6[`ws_tips`] = `ws已尝试启动失败5次,请检查ws文件路径是否正常,或手动启动`, _0x3feb67(function() {
_0x28aee6[`not_start_ws`] = !0x0;
}, 0x7d0));
}
}
}
}

const _0x189052 = _0x2e9b72[`getInstance`]();
_0x2715a2[`exports`] = _0x189052;
}

4.由此可见,这段代码有用到websocket功能,这一小段是启动websocket服务的。

5.接下来就是我手工解密啦,没什么说的,按部就班就行。

6.最后得到的结果就是上边的了,在文章开头已经贴出来过了。

结语

对文章内容有疑问或者有建议的朋友欢迎在评论区说出来,或者使用私信功能给我留言。



标签:function,加密,0x28aee6,JS,webpack,ws,const,startWsCount
From: https://blog.51cto.com/u_15781271/5922991

相关文章

  • JSON学习
     作者:MiloYip1、 JSON是什么JSON(JavaScriptObjectNotation)是一个用于数据交换的文本格式,现时的标准为ECMA-404。虽然JSON源至于JavaScript语言,但它只是一种数据......
  • Windows10 gitbook本地搭建(nodejs v10.23.0)
    1.下载Nodejs并安装,默认路径即可。(用最新的版本没成功,按照一篇博客里提示的版本nodejsv10.23.0,成功创建gitbook)https://nodejs.org/download/release/v10.23.0/node-v1......
  • 加密库选择
    加密库使员工选择:nginxopensslpolarssllyassl(wolfssl)matrixssl上周折腾加密与解密,用了openssl,crypto++,polarssl,cyassl,说起真的......
  • JS方法——Number&parseInt(数值转换)
    Number(转换为数值)无法转换的为NaN类型x=true;Number(x);//返回1x=false;Number(x);//返回0x=newDate();Number(x);//......
  • json.load 和json.dump的转换区别
     示例如下:importjson"""当进行预期和时间结果比对是,有些参数结果为null,但是python语言是不认识null的,只认识None,所以,要进行转换;"""ss='{"user":"python","passwd":"1......
  • toString转化成Json或实体对象
    废话不多说,代码上一波!!! 实体中生成的toSting转json格式或者转实体类格式packagecom.xxx.util;importcom.alibaba.fastjson.JSON;importjavafx.util.Pair;importo......
  • 飞机游戏三 JSBSim介绍
    飞机游戏三JSBSim介绍目录飞机游戏三JSBSim介绍1介绍2xml配置文件解析3气动力模型4基本状态和动作1简易demo2获取状态空间(状态空间)3直接设置初始状态4控制指......
  • js Promise用法示例
    1.情景展示在前端js源码时,遇到了大量的Promise对象的用法,看得是一脸懵逼,Promise到底是个什么?2.具体分析在实际开发过程中,我们往往会遇到这样的场景:以ajax请求为例,我......
  • js ajax
    导入  下载或引入jquery https://code.jquery.com/<scriptsrc="https://code.jquery.com/jquery-3.6.0.min.js"</script> 使用jqueryajaxajax是异步js和xml的意思Ge......
  • 【js】事件循环evenloop
    先上题目console.log(1)setTimeout(()=>{console.log(2)},0)console.log(3)答案:132console.log(1)setTimeout(()=>{console.log(2)......