Содержание материала

Второй способ:

 

Code:

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;

 

 

 

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

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить