在javascript中解码eval函数?

在javascript中解码eval函数?,javascript,encoding,eval,decode,Javascript,Encoding,Eval,Decode,我在javascript中得到了一个函数eval- 但我不知道怎么读?这是如何生成或解码字符串的? 或者简单地说,这个代码是什么 谢谢你的帮助 粘贴它,它会显示: var secret = 'dDGSUW1QU01JaVZNTWFFN0pWcm2RZkE6MD'; 要手动执行此操作,请找到eval函数的结尾,并用alert或您使用的任何调试函数替换eval。第2行可以这样处理 第3行的格式如下所示: var_9581 ; var _8438 = '196E84D180D984E928C920F

我在javascript中得到了一个函数eval- 但我不知道怎么读?这是如何生成或解码字符串的? 或者简单地说,这个代码是什么

谢谢你的帮助

粘贴它,它会显示:

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);
收益率:

secret = 'dGd3bWw1QWVrUDh2a412dXl2aUFyOVE6MQ';
结论:

  • 第一个包装器是混淆那些设法破译它的人
  • 第二个代码实际上更改了
    secret
    变量
粘贴它,它会显示:

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);
收益率:

secret = 'dGd3bWw1QWVrUDh2a412dXl2aUFyOVE6MQ';
结论:

  • 第一个包装器是混淆那些设法破译它的人
  • 第二个代码实际上更改了
    secret
    变量

    • 这里是以这种方式编码的代码的解包程序。似乎这段代码唯一要做的就是:

      ver secret = 'dGd3bWw1QWVrUDh1a242dXlNaUFyOVE6MQ';
      

      下面是以这种方式编码的代码的解包程序。似乎这段代码唯一要做的就是:

      ver secret = 'dGd3bWw1QWVrUDh1a242dXlNaUFyOVE6MQ';
      

      说实话,正确答案在下面(莱肯斯廷),而不是这一个。此评估生成
      var secret='dEFNLW1QU01JaVZNTWFFN0pWcm9RZkE6MQ'
      您可以在eval的主体中看到这个字符串,如
      var | secret |\x64\x45\x46…
      下面的完整分析,这种编码器很简单。递归操作大量使用运算符优先级和基于当前状态的条件,这会变得更加困难。说实话,正确答案如下(Lekensteyn),而不是这个。此评估生成
      var secret='dEFNLW1QU01JaVZNTWFFN0pWcm9RZkE6MQ'
      您可以在eval的主体中看到这个字符串,如
      var | secret |\x64\x45\x46…
      下面的完整分析,这种编码器很简单。如果递归操作大量使用运算符优先级和基于当前状态的条件,则会变得更加困难。现在正确地分析了它,也许解析器可以将这些数字转换为
      apple
      banana
      ,这使分析更加容易。@David:如果这真的是个秘密,您应该立即更改任何使用此秘密的内容,因为它已公开(请参阅)。您介意尝试一下此代码吗?现在正确地分析它,也许解析器可以将这些数字转换为
      apple
      banana
      ,这使分析变得更容易。@David:如果它确实是那个秘密,您应该立即更改任何使用此机密的内容,因为它是公开的(请参阅)。您介意尝试一下此代码吗?