Имена переменных и функций

#javascript #reverse-engineering

#javascript #обратный инжиниринг

Вопрос:

У меня есть скрипт, который я пытаюсь отменить, но я немного запутался во многих вещах. 1-й — Каковы имена этих переменных? Как я могу узнать их значение? 2-й — Может кто-нибудь сказать мне значение этой строки кода? Я пытался понять это, но мне это не удалось. Есть скрипт:

 var _0x3ea8cd = function (_0x1a81d6)
{
    while (--_0x1a81d6)
    {
        _0x52548a['push'](_0x52548a['shift']());
    }
};
  

Комментарии:

1. Нет смысла…..

2. Удаление имени переменной — это обфускация 101, поэтому по сути это просто случайно выбранное имя обфускатором

3. Вы просматриваете переименованные переменные либо с помощью скрипта сборки, либо с помощью скрипта запутывания. Таким образом, переменные не имеют никакого значения….

4. _0x1a81d6 предположительно является числом и _0x52548a массивом. Это берет первые n — 1 записи из массива и помещает их в конец массива. while(--n) arr.push(arr.shift())

5. Смотрю на код. Он создает функцию. уменьшает число в цикле и меняет местами позиции элементов в массиве.

Ответ №1:

В более удобочитаемом формате это эквивалентно следующему, за исключением отсутствия данных массива, которые я добавил

 var arr = [1,2,3,4,5];// _0x52548a variable

var offsetArray = function (offset){// change name of _0x1a81d6
    while (--offset){
        arr.push(arr.shift());// use arr instead of _0x52548a
    }
};
// usage
offsetArray(2)// use _0x3ea8cd(2) in original code
console.log(JSON.stringify(arr))


// using original
var _0x52548a= [1,2,3,4,5];

var _0x3ea8cd = function (_0x1a81d6)
{
    while (--_0x1a81d6)
    {
        _0x52548a['push'](_0x52548a['shift']());
    }
};
_0x3ea8cd(2)
console.log('Using original')
console.log(JSON.stringify(_0x52548a))  

Комментарии:

1. Я надеюсь, что OP понимает, что вы придумали имена переменных, поскольку нет способа узнать, что было в исходном скрипте.