解码javascript中的eval函数
decode eval function in javascript?
我在javascript中得到了一个函数eval-http://pastebin.com/E1PXQeKj但我不知道怎么读?这是如何生成或解码字符串的?或者简单地说,这个代码怎么样?
谢谢你的帮助!
粘贴http://jsbeautifier.org/它揭示了:
var secret = 'dDGSUW1QU01JaVZNTWFFN0pWcm2RZkE6MD';
要手动执行,请找到eval函数的末尾,并用alert
或您使用的任何调试函数替换eval
。2号线可以这样处理。
第3行的格式如下:var _9581
;
var _8438 = '196E84D180D984E928C920F980E928D988C652F768E652F680B924F808E924A724E916A872C1000A720A848E872F868D980E864C796E940A724B912F724B732B724B924C876C956D836C912C864A804E1008E840C868A800A740A832E848B680D760F';
var _5668 = /['x41'x42'x43'x44'x45'x46]/;
var _9413 = 2;
var _9565 = _8438.charAt(_8438.length - 1);
var _5032;
var _9978 = _8438.split(_5668);
var _4678 = [String.fromCharCode, isNaN, parseInt, String];
_9978[1] = _4678[_9413 + 1](_4678[_9413](_9978[1]) / 21);
var _6432 = (_9413 == 7) ? String : eval;
_5032 = '';
_11 = _4678[_9413](_9978[0]) / _4678[_9413](_9978[1]);
for (_9581 = 3; _9581 < _11; _9581++) _5032 += (_4678[_9413 - 2]((_4678[_9413](_9978[_9581]) + _4678[_9413](_9978[2]) + _4678[_9413](_9978[1])) / _4678[_9413](_9978[1]) - _4678[_9413](_9978[2]) + _4678[_9413](_9978[1]) - 1));
_6432(_5032);
现在自己分析一下。当事情可以执行时,应该小心。类似foo(bar)
的结构。
正在解码:
var _9581;
var _8438 = '196E84D180D984E928C920F980E928D988C652F768E652F680B924F808E924A724E916A872C1000A720A848E872F868D980E864C796E940A724B912F724B732B724B924C876C956D836C912C864A804E1008E840C868A800A740A832E848B680D760F';
var _5668 = /[ABCDEF]/;
var _9413 = 2;
var _9565 = "F";
var _5032;
var _9978 = [196, 84, 180, 984, 928, 920, 980, 928, 988, 652, 768, 652, 680, 924, 808, 924, 724, 916, 872, 1000, 720, 848, 872, 868, 980, 864, 796, 940, 724, 912, 724, 732, 724, 924, 876, 956, 836, 912, 864, 804, 1008, 840, 868, 800, 740, 832, 848, 680, 760, ];
var _4678 = [String.fromCharCode, isNaN, parseInt, String];
_9978[1] = "4"; //String(parseInt(84) / 21)
var _6432 = eval;
_5032 = '';
_11 = 49; //parseInt(196) / parseInt(4);
for (_9581 = 3; _9581 < _11; _9581++) {
//_5032 += (String.fromCharCode((parseInt(_9978[_9581]) + parseInt(180) + parseInt(4)) / parseInt(4) - parseInt(180) + parseInt(4) - 1));
_5032 += String.fromCharCode((parseInt(_9978[_9581]) + 184) / 4 - 177);
}
// so from here one, we can safely assume that the code is NOT executable
//_6432(_5032);
console.log(_5032);
收益率:
secret = 'dGd3bWw1QWVrUDh2a412dXl2aUFyOVE6MQ';
结论:
- 第一个打包器是为了迷惑那些设法解码它的人
- 第二个代码实际上更改了
secret
变量
以下是以这种方式编码的代码的解包程序http://www.strictly-software.com/unpacker.似乎这个代码唯一能做的就是:
ver secret = 'dGd3bWw1QWVrUDh1a242dXlNaUFyOVE6MQ';
相关文章:
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 调用绕过eval()的函数
- eval()读取函数参数有多糟糕
- Eval未声明函数
- 空引用错误 Eval(字符串) 将其传递给代码隐藏中的函数
- 如何在 jQuery 中使用 eval 从不同的文件调用另一个函数
- 使用 eval 从字符串创建函数的不同方法
- 如何在javascript中的eval函数中添加单引号
- eval调用函数,该函数调用定义函数的eval
- 箭头函数eval预处理器
- 此代码块的eval()函数的替代项
- eval函数-求值顺序
- 逗号分隔号在 JavaScript 中的 eval() 函数中有效
- Java 脚本 eval() 函数属于哪个对象?此外,在调用 eval() 函数时传递执行上下文
- 是否可以在不使用 eval() 的情况下以编程方式从字符串或其他技术定义函数
- 使用eval使用字符串输入按名称将函数分配给变量有什么风险
- 是否可以通过添加新参数而不使用 eval 将所有这三个函数合并为一个函数
- 不使用 eval/new 函数的 JavaScript 模板库
- 如何在使用 eval() 评估 JavaScript 时将回调函数定义作为参数传递
- 如何使用字符串引用闭包,就像我在不使用 eval 的情况下使用成员函数一样