Задать вопрос
@DVoropaev
Ставлю + к карме на хабре за ответы на вопросы

Как провести реверс-инжиниринг криптованного вируса, написанного на jscript (WSH)?

Прикрепил код вируса (скачать код) к посту в pdf файле, дабы скачавший его, случайно не запустил. Вирус опасен, и может здорово навредить. Для особо любопытных: вирус шифрует все файлы, а на рабочем столе появляется адрес почты для связи с (сами знаете с кем и для чего).

Как я понял, скрипт не хранит вредоносные команды в самом себе. Есть функции, которые возвращают отдельные символы, из которых складываются строки. Затем они выполняются функцией eval(). Сделано так, для того чтобы антивирус не сработал.Пример:

function IM()
{
var XBt=38774;
return "S";
}

function W(svu)
{
	var OF=30586;
	var wg=OF+24239;
	var kdy=wg/255;
	var mi=kdy-214;
	var bHh = eval(Nx() + (svu+mi) + uSk());

	return bHh;
}


Хочу отрефакторить этот код к нормальному виду, чтобы понять что он делает, как работает, и какой алгоритм используется для шифрования. У меня было 2 варианта:
1) вручную переписать, вместо функций писать сразу символы которые они возвращают, удалить лишнее(да, там есть переменные, которые тупо объявляются, и не используются)
2)отладка в гуглхром (а что, синтаксис тот-же, на eval() хром будет крашиться, в логах буду смотреть какая виндовая функция там вызывается, переносить ее в отдельный файл, а из кода ее убирать. Затем все сначала.
При этом у меня всегда есть возможность проверить результат на виртуалбокс.
И так, самый вопрос: как можно этот код привести к читаемому, понятному виду? Первый вариант долгий (там в коде 1500 строк), Второй вариант вызывает сомнения.
(примечание на всякий случай: на борту у меня ubuntu, на виртуалке Windows XP, )
  • Вопрос задан
  • 559 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rou1997
@Rou1997
При реверс-инжиниринге из десяти путей следует выбирать все десять. :)
Комбинируйте, и еще попробуйте третий путь, все-таки поискать распаковщик, который сможет.

отладка в гуглхром

Лучше в "родной" среде - Internet Explorer, MSHTA, в общем MSHTML (Trident), не знаю есть ли отладчик именно для отдельно скриптов JScript, но где-то в IE должен быть, если нормально изучить тему то и сомнений не будет.

в логах буду смотреть какая виндовая функция там вызывается

Вы не увидите "виндовых функций" если сами их не переопределите "хуками", как-то вы примитивно представляете себе отладку, надо полноценно - не просто логирование, а ставить точки останова, причем построчно, смотреть значения переменных чтобы дойти до расшифрованного, а вот что всегда стоит переопределить - это eval, опять же смотреть значение, которое он принимает.
Параллельно отладке необходимо писать документацию в Блокноте, я пишу просто текстом - какая функция что делает, какую вызывает.
Ответ написан
@denchik09
Добавьте в начало скрипта вот такую строку:
function eval(d){ WScript.Echo(d); }
Далее запускайте его через cmd:
cscript //nologo script.js > code.txt
В файле code.txt будут все команды, которые скрипт пытался выполнить через eval (при этом все эти команды выполняться не будут).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы