#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 понимает, что вы придумали имена переменных, поскольку нет способа узнать, что было в исходном скрипте.