共计 2538 个字符,预计需要花费 7 分钟才能阅读完成。
明天拿到手的 JS 加密源代码如下
function enterKeyDown(_0x28623b) {
const _0x32979d = _0x58fe;
const _0xde64a8 = _0x1d66;
try {let _0x1f57e5 = msgInput['previousSibling'];
let _0x595e47 = _0x1f57e5['value'];
sendLock = ![];
if ((msgInput['childNodes'][0x2cf1a ^ 0x2cf1a]['nodeName'] === _0xde64a8(0x98, '(Vjy') || msgInput['innerHTML']['indexOf'](_0x32979d(0x1f)) === (0x3995f ^ 0x3995f)) && msgInput['childNodes']['length'] !== 0x1) {InputTipsMsg(_0xde64a8(0xa9, 'K^s['), _0xde64a8(0x7f, 'xtHf'));
return;
}
if (!__DisableSendTT) {if (!IsEmpty(_0x595e47)) {InputTipsMsg(_0x32979d(0xa1), _0x32979d(0xa8));
TranslateMessagesDirectly(_0x595e47, function (_0x37519a) {
const _0x4c0c26 = _0x58fe;
const _0x504cb8 = _0x1d66;
let _0x1b155d = GetRetStr(_0x37519a);
if (_0x1b155d['indexOf'](_0x504cb8(0x6d, 'epCC')) === 0x0) {sendLock = ![];
InputTipsMsg(_0x37519a['msg'] === undefined ? _0x4c0c26(0x90) : _0x37519a['msg'], _0x4c0c26(0x1c));
} else {_0x1f57e5['value'] = _0x1b155d;
msgInput['innerHTML'] = _0x1b155d;
FireMessageInputEvent(_0x1f57e5);
sendLock = !![];
setTimeout(() => {
const _0x1313e1 = _0x58fe;
sendLock = ![];
if (hasChinese(msgInput['innerText']) && zh_translation_switch === ![]) { } else {sendButton['click']();
InputTipsMsg(_0x1313e1(0x9b), _0x1313e1(0xa8));
}
}, 0x1);
}
}, send_from, send_to);
}
} else {setTimeout(() => {
const _0x133bc1 = _0x1d66;
const _0xe44700 = _0x58fe;
sendLock = ![];
InputTipsMsg(_0xe44700(0x6a), _0x133bc1(0x73, 't)Zd'));
sendButton['click']();}, 0x808b2 ^ 0x808b8);
}
} catch (_0x21b8b7) {sendLock = ![];
console['error'](_0x21b8b7);
}
}
我手工解密后如下
function enterKeyDown() {
try {
let previousSibling = msgInput.previousSibling;
let psValue = previousSibling.value;
sendLock = false;
if ((msgInput.childNodes[0].nodeName === "IMG" || msgInput.innerHTML.indexOf("<img") === 0) && msgInput.childNodes.length !== 1) {InputTipsMsg("表情不能在最后面翻译", "error");
return;
}
if (!__DisableSendTT) {if (!IsEmpty(psValue)) {InputTipsMsg("正在翻译中", "info");
TranslateMessagesDirectly(psValue, function (res) {let retStr = GetRetStr(res);
if (retStr.indexOf("error:") === 0) {
sendLock = false;
InputTipsMsg(res.msg === undefined ? "服务谬误" : res.msg, "error");
} else {
previousSibling.value = retStr;
msgInput.innerHTML = retStr;
FireMessageInputEvent(previousSibling);
sendLock = true;
setTimeout(() => {
sendLock = false;
if (!(hasChinese(msgInput.innerText) && zh_translation_switch === false)) {sendButton.click();
InputTipsMsg("翻译胜利", "info");
}
}, 1);
}
}, send_from, send_to);
}
} else {setTimeout(() => {
sendLock = false;
InputTipsMsg("未开启翻译, 发送原文", "info");
sendButton.click();}, 10);
}
} catch (e) {
sendLock = false;
console.error(e);
}
}
解密思路
1. 咱们解密啥都不必想,首先将加密的 JS 代码丢到 在线 JS 加密解密工具站 一键解一遍。
2. 在工具站解完了后,人工剖析代码加密逻辑手工挨个改回来
3. 解密结束
论断
这个我看了下,这个 js 应该是翻译某游戏客户端的阐明正文的,将英文版的客户端数据通过调用翻译接口翻译成汉语,应该是某些人想把国外的开源代码搬运进来,初步做一个汉译。
正文完
发表至: javascript
2022-12-14