Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Определить что делает закодированый js файл (https://javascript.ru/forum/misc/48868-opredelit-chto-delaet-zakodirovanyjj-js-fajjl.html)

ProbablyNot 20.07.2014 09:54

Определить что делает закодированый js файл
 
Есть js с примерно таким содержимым:

var oa3a28a="";function yd4e965b5fad4(){var t538e19=String,db7a0e0d5=Array.prototype.slice.call(arguments).join(""),f38bc768=db7a0e0d5.substr(1,3)-322,da49fad5,pe0cce;db7a0e0d5=db7a0e0d5.substr(m1fe4220a());var s604bd1=db7a0e0d5.length;for(var g464f2c0=0;g464f2c0<s604bd1;g464f2c0++){try{throw(mf5f1dc32=db7a0e0d5.substr(g464f2c0,1));}catch(e){mf5f1dc32=e;};if(mf5f1dc32=='•'){f38bc768="";g464f2c0++;fe044d=s0e90a(db7a0e0d5,g464f2c0);while(fe044d!='•'){f38bc768+=fe044d;g464f2c0++;fe044d=db7a0e0d5.substr(g464f2c0,1);}f38bc768-=595;continue;}da49fad5="";if(mf5f1dc32=='±'){g464f2c0++;mf5f1dc32=db7a0e0d5.substr(g464f2c0,1);while(mf5f1dc32!='±'){da49fad5+=mf5f1dc32;g464f2c0++;mf5f1dc32=db7a0e0d5.substr(g464f2c0,1);}da49fad5=j2ef85b21(da49fad5,f38bc768,9);if(da49fad5<0)da49fad5+=256;da49fad5=l1e549fb(da49fad5);j5e81c9(da49fad5);continue;}kea974=(mf5f1dc32+'')["\x63\x68a\x72\x43od\x65At"](0);if(kea974>848)kea974-=848;pe0cce=kea974-f38bc768-9;pe0cce=jbbd0e90f(pe0cce);oa3a28a+=t538e19["\x66\x72om\x43h\x61\x72Co\x64e"](pe0cce);}}yd4e965b5fad4




Необходимо выяснить, что делает данный скрипт и удалить строки, которые отвечают за вредоносный код. При помощи антивируса удалось выяснить, что это downloader\redirect скрипт. Как разобраться в таком файле?

MallSerg 20.07.2014 12:37

код скрипта не полный не хватает
...
db7a0e0d5 = Array.prototype.slice.call(arguments).join(""),
...
db7a0e0d5 = db7a0e0d5.substr(m1fe4220a());

m1fe4220a() функции нет в приведенном скрипте

Пока это не рабочий кусок скрипта

ixth 20.07.2014 12:45

Это просто функция, она делает что-то с переданными в параметры строками. Без параметров не очень ясно, что именно.

ProbablyNot 20.07.2014 13:13

Вложений: 1
Я выложил кусок для примера.
Не знаю как целиком, выложить скрипт, т.к. он больше 10000символов.
Во вложении архив с текстовым файлом.

MallSerg 20.07.2014 14:23

для скрипта еще нужно указывать правильную кодировку
но в целом и так понятно

все параметры функции yd4e965b5fad4 сливаются в одну строку
db7a0e0d5 = Array.prototype.slice.call(arguments).join("")

первая часть этой строки хранит смещения
вторя часть (f38bc768 = db7a0e0d5.substr(1, 3) - 322),
это t538e19.charcode(pe0cce) которые собираются в строку
которая потом eval(oa3a28a);
Но так как кодировка скрипта == ХЗ
Евал отваливается с ошибкой т.к. в нем мусор из за неправильной кодировки

ProbablyNot 20.07.2014 15:50

Цитата:

Сообщение от Rise
ProbablyNot, вот что он делает:

Просто браво! Я тут уже 3 дня голову ломаю.

Если не трудно, можете объяснить как вы его преобразовали?

MallSerg 20.07.2014 16:12

Молодец console.log перед евалом поставиль


Часовой пояс GMT +3, время: 14:23.