-1

我遇到了一个我以前从未见过的 javascript 文件的问题。我什至不知道它是如何工作的,我正在发布文件的某些部分,请帮助我如何解密这样的文件。这是分配给我的任务,我在互联网上搜索过,但一无所获

$(document)[_0xbad7[169]](function ()
{
    var _0x99f1x1=false;
    var _0x99f1x2=false;
    var _0x99f1x3=false;
    var _0x99f1x4=false;
    var _0x99f1x5=_0xbad7[0];
    var _0x99f1x6=0;
    var _0x99f1x7=1;
    $(_0xbad7[2])[_0xbad7[1]](function (_0x99f1x8)
    {
    }
    );
    function _0x99f1x9()
    {
        $(_0xbad7[5])[_0xbad7[4]](_0xbad7[3],_0xbad7[0]);
        $(_0xbad7[9])[_0xbad7[8]](_0xbad7[6],_0xbad7[7]);
        $(_0xbad7[10])[_0xbad7[8]](_0xbad7[6],_0xbad7[7]);
        $(_0xbad7[11])[_0xbad7[8]](_0xbad7[6],_0xbad7[7]);
        $(_0xbad7[12])[_0xbad7[8]](_0xbad7[6],_0xbad7[7]);
        _0x99f1x7=1;
    }
    ;
    function _0x99f1xa(_0x99f1xb)
    {
        $(_0xbad7[14])[_0xbad7[8]](_0xbad7[13],_0x99f1xb);
    }
    ;
    function _0x99f1xc()
    {
        _0x99f1x1f(_0xbad7[15],_0xbad7[16],_0xbad7[16]);
        _0x99f1x1f(_0xbad7[17],_0xbad7[16],_0xbad7[18]);
        _0x99f1x1f(_0xbad7[19],_0xbad7[16],_0xbad7[20]);
        _0x99f1x1f(_0xbad7[21],_0xbad7[16],_0xbad7[22]);
        _0x99f1x1f(_0xbad7[23],_0xbad7[24],_0xbad7[16]);
        _0x99f1x1f(_0xbad7[25],_0xbad7[24],_0xbad7[18]);
        _0x99f1x1f(_0xbad7[26],_0xbad7[24],_0xbad7[20]);
        _0x99f1x1f(_0xbad7[27],_0xbad7[24],_0xbad7[22]);
    }
    ;
4

1 回答 1

1

该代码是普通的 JavaScript 代码,已使用工具(例如jsobfuscate)进行了混淆处理,这对任何想要窃取或复制它的人来说都是一种痛苦。从技术上讲,如果作者花时间尝试保护他的代码,那就意味着你不能使用任何代码。但是,有一些工具可以帮助您使混乱变得更容易理解,但它们仍然无法为您解决。

我可以快速看到,0xbad7这是一个包含大多数函数名称、选择器、函数参数等的数组。您可以做的一件事是在特定索引中包含的值和0xbad7[x]引用之间进行插值。

您可以使用以下类似的方法轻松自动化该过程,但是它不适用于对象引用,因为您最终会得到[object Object],但是您可以使解决方案更加智能以找出对象的构造函数和事物像这样。

玩得开心!

http://jsbin.com/#/agikay/1/edit

//get a reference to the _0xbad7 array
//and do something like...
var _0xbad7 = ['item0', 'item1', 'item2', 'item3', 'item4', 'item5'],
    txt = document.querySelector('textarea');

txt.value = txt.value.replace(/_0xbad7\[(\d+)\]/g, function ($0, $1) {
  return _0xbad7[$1];
});
于 2013-04-18T20:32:49.817 回答