|

ЯВУ на халяву!
Ramhak O`Hady
Xakep, номер #017, стр. 017-064-3
Остался вариант, в котором файл с вирусом находится в какой-нибудь тупиковой ветке субдиров, и у него нет никаких подкаталогов и заражать нечего. )-: Что делать? Идти "наверх", то есть к "парентсам" (родительским каталогам). И шуровать там что есть мочи (моча есть, до 2 литров в сутки). :) Естественно, не заходя снова в каталог, откуда вылезли. Можно, например, попытаться вылезти в корневой каталог, а оттуда уже равномерно и плавно спускаться (в следующих "сериях") :) по всем подкаталогам. Но это дело вкуса. Кусочек моей проги поиска выгляди вот так:
findvictims(currentdir, '*.com', comexefile, false, infectexecom);
findvictims(currentdir, '*.exe', comexefile, false, infectexecom);
findvictims(currentdir, '*.', directory, false, infectsubdir);
if (byte(currentdir[0]) > 3) then
begin
dec(currentdir[0]);
while (currentdir[byte(currentdir[0])] <> '\') do dec(currentdir[0]);
findvictims(currentdir, '*.com', comexefile, true, infectexecom);
findvictims(currentdir, '*.exe', comexefile, true, infectexecom);
end;
Странновато для pas`а? Ничо подобного! Просто в качестве последнего параметра я передаю адрес (адрес-адрес, а не процедуру, как некоторые говорят :-E) процедуры, которая будет вызвана для каждого найденного файла (или каталога - смотря что указано искать). Полный путь в DOS всегда начинается с X:\(пошел ты на Х:\, хренов файл!!! :)), поэтому если length(currentdir) > 3, это означает, что мы, увы, не в корневом каталоге. Ну и, соответственно, надо туда перейти. И здесь лежат боооольшие грабли - чтобы искать файлы в подкаталоге, а потом продолжить поиск в текущем каталоге, нужно сохранять и восстанавливать DTA. Так что тут прилагается все имеющееся внимание, дабы не набить шишку (или не повредить свою шишку). ;)
С этим, вроде, разобрались. Приступим к сладкому.
"Ну вот, милая, а ты боялась"
Нашли подходящую девственную жертву. Что с ней делать? :) И как?
Прежде всего можно завести "черный список" файлов, которые заражать "низзя", чтобы юзер некоторое время ничего не заподозрил. Например, так:
excepts: array [0..3] of execname = (
'COMMAND.COM',
'WIN.COM',
'4DOS.COM',
'MEM.EXE'
);
И не трогать эти файлы. Кульному вирмейкеру просто необходимо завести такой списочек. Теперь ему неплохо было бы подумать о том, как узнать "своих". Я сделал просто - поставил в поле CRC (искать в EXE-заголовке) признак милленниума - 2000h.
А теперь, собственно, к процессу заражения. Делать своп, писать туда жертву, а потом оттуда запускать, да еще удалять - это слишком. Нужно уметь кодить. Поэтому я решил сделать все без свопа. То есть эмулировать работу DOS. Загружать EXE-шники и COM-файлы, как будто они запускаются самой системой. Ну, разве не кульно?
Назад на стр. 017-064-2 Содержание Вперед на стр. 017-064-4
|