全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1121|回复: 4

[疑问] 求这段js的加密混淆方法

[复制链接]
发表于 2022-11-18 17:04:00 | 显示全部楼层 |阅读模式
  1. const _0x31b1 = ['substring', 'value', 'getElementsByTagName', 'del', 'input', 'toFixed', 'button', 'length', 'indexOf'];
  2.     const _0x2055 = function (_0x31b18a, _0x2055dd) {
  3.         _0x31b18a = _0x31b18a - 0x0;
  4.         let _0x21f50d = _0x31b1[_0x31b18a];
  5.         return _0x21f50d;
  6.     };
  7.     let btns = document[_0x2055('0x2')](_0x2055('0x6'));
  8.     let input = document['querySelector'](_0x2055('0x4'));
  9.     let len = btns['length'];
  10.     let a, b, result, type;
  11.     for (let i = 0x0; i < len; i++) {
  12.         btns[i]['addEventListener']('click', () => {
  13.             let _0x333eea = btns[i]['innerHTML'];
  14.             let _0x5a16eb = input[_0x2055('0x1')];
  15.             if (_0x333eea >= 0x0 && _0x333eea <= 0x9 || _0x333eea === '.' && _0x5a16eb[_0x2055('0x8')]('.') === -0x1) {
  16.                 input['value'] += _0x333eea;
  17.             }
  18.             if (_0x5a16eb === '' && _0x333eea === '.') {
  19.                 input[_0x2055('0x1')] = '';
  20.             }
  21.             if (_0x5a16eb !== '') {
  22.                 switch (_0x333eea) {
  23.                     case _0x2055('0x3'):
  24.                         let _0x3acdc1 = _0x5a16eb[_0x2055('0x0')](0x0, _0x5a16eb[_0x2055('0x7')] - 0x1);
  25.                         input['value'] = _0x3acdc1;
  26.                         break;
  27.                     case'C':
  28.                         input['value'] = '';
  29.                         break;
  30.                     case'+':
  31.                         a = _0x5a16eb;
  32.                         input['value'] = '';
  33.                         type = '+';
  34.                         break;
  35.                     case'-':
  36.                         a = _0x5a16eb;
  37.                         input[_0x2055('0x1')] = '';
  38.                         type = '-';
  39.                         break;
  40.                     case'*':
  41.                         a = _0x5a16eb;
  42.                         input[_0x2055('0x1')] = '';
  43.                         type = '*';
  44.                         break;
  45.                     case'/':
  46.                         a = _0x5a16eb;
  47.                         input[_0x2055('0x1')] = '';
  48.                         type = '/';
  49.                         break;
  50.                     case'=':
  51.                         if (a !== undefined) {
  52.                             b = _0x5a16eb;
  53.                             if (type === '+') {
  54.                                 result = parseFloat(a) + parseFloat(b);
  55.                             }
  56.                             if (type === '-') {
  57.                                 result = parseFloat(a) - parseFloat(b);
  58.                             }
  59.                             if (type === '*') {
  60.                                 result = parseFloat(a) * parseFloat(b);
  61.                             }
  62.                             if (type === '/') {
  63.                                 result = parseFloat(a) / parseFloat(b);
  64.                             }
  65.                             let _0x20ce68 = result + '';
  66.                             let _0x136fde = _0x20ce68['split']('.');
  67.                             input['value'] = _0x136fde['length'] === 0x2 ? result[_0x2055('0x5')](0x2) : result;
  68.                         }
  69.                         break;
  70.                 }
  71.             }
  72.         });
  73.     }
复制代码



有大佬知道这是什么加密混淆方法吗?顺便问下怎么逆向解密出来
发表于 2022-11-18 17:12:17 来自手机 | 显示全部楼层
混淆方法不是很重要,js函数方法是固定的,跟栈即可。
发表于 2022-11-18 17:13:00 | 显示全部楼层
你这应该发看雪去。MJJ都不学无术,只会搞机
发表于 2022-11-18 17:30:03 | 显示全部楼层
  1. const funcNames = ['substring', 'value', 'getElementsByTagName', 'del', 'input', 'toFixed', 'button', 'length', 'indexOf'];
  2. const _0x2055 = function (_0x31b18a, _0x2055dd) {
  3.     return funcNames[_0x31b18a];
  4. };
  5. let btns = document['getElementsByTagName']('button');
  6. let input = document['querySelector']('input');
  7. let len = btns['length'];
  8. let a, b, result, type;
  9. for (let i = 0; i < len; i++) {
  10.     btns[i]['addEventListener']('click', () => {
  11.         let btnName = btns[i]['innerHTML'];
  12.         let inputValue = input['value'];
  13.         if (btnName >= 0 && btnName <= 0x9 || btnName === '.' && inputValue['indexOf']('.') === -1) {
  14.             input['value'] += btnName;
  15.         }
  16.         if (inputValue === '' && btnName === '.') {
  17.             input['value'] = '';
  18.         }
  19.         if (inputValue !== '') {
  20.             switch (btnName) {
  21.                 case 'del':
  22.                     let _0x3acdc1 = inputValue['substring'](0, inputValue['length'] - 1);
  23.                     input['value'] = _0x3acdc1;
  24.                     break;
  25.                 case 'C':
  26.                     input['value'] = '';
  27.                     break;
  28.                 case '+':
  29.                     a = inputValue;
  30.                     input['value'] = '';
  31.                     type = '+';
  32.                     break;
  33.                 case '-':
  34.                     a = inputValue;
  35.                     input['value'] = '';
  36.                     type = '-';
  37.                     break;
  38.                 case '*':
  39.                     a = inputValue;
  40.                     input['value'] = '';
  41.                     type = '*';
  42.                     break;
  43.                 case '/':
  44.                     a = inputValue;
  45.                     input['value'] = '';
  46.                     type = '/';
  47.                     break;
  48.                 case '=':
  49.                     if (a !== undefined) {
  50.                         b = inputValue;
  51.                         if (type === '+') {
  52.                             result = parseFloat(a) + parseFloat(b);
  53.                         }
  54.                         if (type === '-') {
  55.                             result = parseFloat(a) - parseFloat(b);
  56.                         }
  57.                         if (type === '*') {
  58.                             result = parseFloat(a) * parseFloat(b);
  59.                         }
  60.                         if (type === '/') {
  61.                             result = parseFloat(a) / parseFloat(b);
  62.                         }
  63.                         let _0x20ce68 = result + '';
  64.                         let _0x136fde = _0x20ce68['split']('.');
  65.                         input['value'] = _0x136fde['length'] === 2 ? result['toFixed'](2) : result;
  66.                     }
  67.                     break;
  68.             }
  69.         }
  70.     });
  71. }
复制代码





闲的蛋疼 给你解密一下
其实就是 找到所有 btn,然后 都加上 事件, 判断按钮的内容, 然后 也不知道到干嘛了
 楼主| 发表于 2022-11-18 19:15:20 | 显示全部楼层
一直小蜗牛 发表于 2022-11-18 17:30
闲的蛋疼 给你解密一下
其实就是 找到所有 btn,然后 都加上 事件, 判断按钮的内容, 然后 也不知道到 ...

多谢大佬
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-11-26 10:39 , Processed in 0.059353 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表