首页 > 其他分享 >分享一个十分麻烦的JS解密

分享一个十分麻烦的JS解密

时间:2022-12-26 18:07:37浏览次数:75  
标签:function return bn 解密 JS substring b0 var 分享

混淆是一种常用的 JavaScript 优化技术,它通过将代码重新命名、删除注释、简化代码等方式来减小代码体积和增加代码难度。

但是,有时候我们需要查看混淆后的代码,或者希望将其转换回原始的未混淆的版本。这时,就需要使用​解密工具​或者服务。

废话不多说了,贴一个昨天解的JS,部分源码如下

function F() {
var b0 = a6
, L = {
'yZsYB': function(U) {
var aZ = b;
return c[aZ(0x19f)](U);
},
'VghoS': function(U, V) {
return c['tcBNB'](U, V);
},
'nNJLf': c[b0(0x23e)],
'pGahF': function(U, V) {
var b1 = b0;
return c[b1(0x1d7)](U, V);
},
'VaHEo': function(U, V) {
var b2 = b0;
return c[b2(0x232)](U, V);
},
'mjZFK': c[b0(0x103)],
'UXLxj': function(U, V) {
return c['lNpLw'](U, V);
},
'dciVZ': c[b0(0x238)],
'iOrAA': c[b0(0xfe)],
'GBlxF': function(U, V) {
var b3 = b0;
return c[b3(0x121)](U, V);
},
'UekeV': function(U, V) {
var b4 = b0;
return c[b4(0x154)](U, V);
},
'oRfMK': c[b0(0x1a4)],
'zgvgB': function(U, V) {
var b5 = b0;
return c[b5(0x233)](U, V);
},
'LeAcS': b0(0x184),
'nljZJ': c[b0(0x13b)],
'BvFdD': function(U, V) {
return c['TTOjc'](U, V);
},
'cWMyz': function(U, V) {
var b6 = b0;
return c[b6(0x10c)](U, V);
},
'YOqtZ': c[b0(0x256)]
};
if (c[b0(0x23d)] !== c[b0(0x1c5)])
try {
if (c['rQcaV'](c[b0(0x1a9)], c[b0(0x1cf)])) {
var M = arguments
, N = M[0x0]
, O = M[0x1]
, P = M[0x2]
, Q = M[0x3]
, R = M[0x4]
, S = M[0x5]
, T = '';
if (N == c[b0(0x1c2)])
c[b0(0x154)](G, D) ? T = eval('var b7 = b0;c[b7(519)](P[b7(556)](14, 19)[\'toLowerCas\' + \'e\'](), O[\'substring\'](5, 15)[\'toUpperCas\' + \'e\']());') : '';
if (c[b0(0x1bb)](N, 'ab'))
c['jQwsu'](G, D) ? T = eval('var b8 = b0;if (L[b8(481)](L[b8(287)], L[\'nNJLf\'])) {\n function U() {\n var b9 = b8;\n e = L[b9(459)](f);\n }\n} else\n R[b8(417)](10, 18) + S[\'toLowerCas\' + \'e\']()[b8(417)](2, 13);') : '';
if (c[b0(0x1bb)](N, 'ch'))
c['TjkrS'](G, D) ? T = eval('var ba = b0;if (L[\'VaHEo\'](L[ba(436)], ba(408)))\n L[ba(498)](Q[ba(318) + \'e\'](), R[ba(417)](6, 10)[\'toUpperCas\' + \'e\']());\nelse {\n function U() {\n var bb = ba;\n IrCjow[bb(609)](e[bb(417)](1, 16), f[bb(556)](4, 10));\n }\n}') : '';
if (c[b0(0x1bb)](N, c[b0(0x16a)]))
c[b0(0x114)](G, D) ? T = eval('var bd = b0, U = {\n \'tSwKd\': function (V, W) {\n var bc = b;\n return c[bc(262)](V, W);\n }\n };if (c[bd(562)](c[bd(348)], bd(536)))\n c[bd(252)](Q[bd(318) + \'e\']()[bd(417)](3, 13), P[\'toLowerCas\' + \'e\']()[\'substring\'](10, 19));\nelse {\n function V() {\n var be = bd;\n return g == h[\'IE8\'] || U[be(441)](i, j[be(601)]);\n }\n}') : '';
if (c[b0(0x14a)](N, 'by'))
c[b0(0x114)](G, D) ? T = eval('var bf = b0;if (L[\'dciVZ\'] !== L[bf(612)])\n L[\'GBlxF\'](O[\'substring\'](5, 8), P[bf(508)](/a/gi, \'c\'));\nelse {\n function U() {\n l[m] = n[o] == p ? q[r] : s[N];\n }\n}') : '';
if (c[b0(0x14a)](N, 'xa'))
G(D) ? T = eval('var bg = b0;O[bg(417)](1, 16) + S[bg(556)](4, 10);') : '';
if (c[b0(0xf0)](N, c['YtWmo']))
c['XMngE'](G, D) ? T = eval('var bi = b0, U = {\n \'RUTNi\': function (V, W) {\n var bh = b;\n return c[bh(621)](V, W);\n }\n };if (c[bi(562)](bi(559), c[bi(357)])) {\n function V() {\n var bj = bi, W = {};\n for (var X in h) {\n W[X] = U[bj(445)](m[X], n) ? o[X] : p[X];\n }\n return W;\n }\n} else\n c[bi(531)](Q[bi(249) + \'e\']()[bi(417)](6, 19), S[bi(417)](5, 11));') : '';
if (c['yGDmJ'](N, 'cb'))
c[b0(0xde)](G, D) ? T = eval('var bl = b0, U = {\n \'valoj\': function (V, W) {\n var bk = b;\n return L[bk(390)](V, W);\n },\n \'yMYZP\': L[bl(331)]\n };if (L[\'zgvgB\'](L[bl(363)], L[bl(460)])) {\n function V() {\n var bm = bl;\n return U[bm(613)](E, U[bm(312)]);\n }\n} else\n L[\'GBlxF\'](S[bl(417)](5, 14), P[bl(417)](2, 13)[bl(318) + \'e\']());') : '';
return T;
} else {
function U() {
var bn = b0;
try {
if (L['BvFdD'](typeof k, bn(0x14c)))
return ![];
var V = bn(0x124) + L['cWMyz'](new l(), 0x0)
, W = W[bn(0x14e) + bn(0x1e4)](bn(0x164))
, X = W[bn(0x20b) + bn(0x162)]('head')[0x0];
return X[bn(0x163) + 're'](W, X[bn(0x1a8)]),
W['text'] = L[bn(0xdd)](V, L[bn(0x167)]),
X[bn(0x173) + 'd'](W),
L[bn(0x1c9)](m[V], n[V]);
} catch (Y) {
return ![];
}
}
}
} catch (V) {
if (c[b0(0x14d)](c[b0(0x248)], c[b0(0x248)]))
return T;
else {
function W() {
var bo = b0;
g[bo(0x1b1)](L['UekeV'](h, i[j]));
}
}
}
else {
function X() {
var bp = b0;
return e(c[bp(0x213)](c[bp(0x1d0)], f));
}
}
}

我解完之后

function countPrm() {
try {
var type = arguments[0],
arg1 = arguments[1],
arg2 = arguments[2],
arg3 = arguments[3],
arg4 = arguments[4],
arg5 = arguments[5],
res = '';

if (type == "cca") {
buildScript($win) ? res = (arg2.slice(14, 19).toLowerCase() + arg1.substring(5, 15).toUpperCase()) : '';
}

if (type == 'ab') {
buildScript($win) ? res = (arg4.substring(10, 18) + arg5.toLowerCase().substring(2, 13)) : '';
}

if (type == 'ch') {
buildScript($win) ? res = (arg3.toUpperCase() + arg4.substring(6, 10).toUpperCase()) : '';
}

if (type == "cbc") {
buildScript($win) ? res = (arg3.toUpperCase().substring(3, 13) + arg2.toLowerCase().substring(10, 19)) : '';
}

if (type == 'by') {
buildScript($win) ? res = (arg1.substring(5, 8) + arg2.replace(/a/gi, 'c')) : '';
}

if (type == 'xa') {
buildScript($win) ? res = (arg1.substring(1, 16) + arg5.slice(4, 10)) : '';
}

if (type == "cza") {
buildScript($win) ? res = (arg3.toLowerCase().substring(6, 19) + arg5.substring(5, 11)) : '';
}

if (type == 'cb') {
buildScript($win) ? res = (arg5.substring(5, 14) + arg2.substring(2, 13).toUpperCase()) : '';
}

return res;
} catch (e) {
return res;
}
}

解密后感言

我很少见到这么丧心病狂的加密方式,可以说仅次于jsjiami.com的中级模式。

有其他加密也可以找我们解密,可以说没有解不开的,只有解密成本问题。


标签:function,return,bn,解密,JS,substring,b0,var,分享
From: https://blog.51cto.com/u_15781271/5969589

相关文章

  • fastjson提取json返回值(java)
    返回json数据:{"data":{"offset":2,"total":2952,"restTotal":2950,"dataList":[{"ISBN":"9787539197456",......
  • 系统架构设计师论文--微服务2021 系统架构设计师备考分享
    --摘要   2019年8月,我司承接了某市医疗集团,智慧药房项目,该项目主要为集团下属36家社区卫生服务中心提供药品统一目录管理、药品集中采购、库存管理、处方合理用药审核......
  • js:
    ​​​​JavaScript的历史1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言)Netscape(网景)接收No......
  • FineUI通过js事件条用后台方法实现弹窗
    一、html标签的onclick事件<buttontype="button"class="btnUpdate"onclick="<%#GetEditUrl(Eval("DetailId"))%>">纠正</button>二、后台弹窗方法publicstrin......
  • JS方法——Timing(时间方法)
    JavaScript可以在时间间隔内执行,即所谓的定时事件(TimingEvents)setTimeout在等待指定的毫秒数后执行函数。window.setTimeout(function,milliseconds);//1.参数要执......
  • JS中 atob 方法解码中文字符乱码问题
    //中文base64编码functionutf8_to_b64(str){returnwindow.btoa(unescape(encodeURIComponent(str)));}//中文base64解码functionb64_to_utf8(str){......
  • 选题在线提交系统(html+JS+php)
    ​​在线选题系统完善篇(含后台管理)​​前言:    作为学习委员还是有挺多的事情要忙的,比如经常统计同学们的课设题目选择结果。如果老师的要求少一点,我还可以轻松一点......
  • 分享几个关于Camera的坑
    最近忙于开发一款基于Camera2API的相机应用,部分功能涉及到广角镜头,因此踩了不少坑,在此与大家分享下以作记录交流…经过查阅资料发现在安卓上所谓的广角镜头切换其实是用一......
  • TiSpark 原理之下推丨TiDB 工具分享
    TiSpark是PingCAP为解决用户复杂OLAP需求而推出的产品。它通过Spark提供的拓展机制与内置的TiKVClientJava,在Spark之上直连TiKV进行读写,具有事务性读取、事务......
  • CSS & JS Effect – Tooltip
    介绍Tooltip长这样它用popup的方式来详细描述一个主体.比如某个icon代表着什么. 参考YouTube– HowToMakeTooltipsWithOnlyCSS 思路和难点1.ho......