Как программе удалить саму себя 2

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Если ваш руководитель

Заблуждаясь утверждает,

Что в его машине вирус

И он вами занесен,

То когда он отлучится,

Выньте из нее винчестер

И в кастрюле кипятите,

Пока вирус не помрет!!!

procedure DeleteSelf;

var

module: HModule;

buf: array [0..MAX_PATH — 1] of char;

p: ULong;

hKrnl32: HModule;

pExitProcess,

pDeleteFile,

pFreeLibrary: pointer;

begin

module := GetModuleHandle(nil);

GetModuleFileName(module, buf, SizeOf(buf));

CloseHandle(THandle(4));

p := ULONG(module) 1;

hKrnl32 := GetModuleHandle(‘kernel32’);

pExitProcess := GetProcAddress(hKrnl32, ‘ExitProcess’);

pDeleteFile := GetProcAddress(hKrnl32, ‘DeleteFileA’);

pFreeLibrary := GetProcAddress(hKrnl32, ‘FreeLibrary’);

asm

lea eax, buf

push 0

push 0

push eax

push pExitProcess

push p

push pDeleteFile

push pFreeLibrary

ret

end;

end;

{/codecitation}

Добавить комментарий