Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как повесить винду

01.01.2007
Nomadic

Вариант 1:

Author: Nomadic

Source: https://delphiworld.narod.ru

uses TLHelp32;

const
  PROCESS_TERMINATE = $0001;
var
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
  ContinueLoop: BOOL;
begin
  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
  ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
  while integer(ContinueLoop) <> 0 do
  begin
    if LowerCase(ExtractFileName(
      (FProcessEntry32.szExeFile))) = 'kernel32.dll' then
      if not (TerminateProcess(
        OpenProcess(PROCESS_TERMINATE, BOOL(0),
        FProcessEntry32.th32ProcessID), 0)) then
        MessageBoxEx(Application.Handle,
          'Can`t kill windows kernel...',
          'Warning', MB_ICONWarning + MB_OK, $0419);
    ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
  end;
  CloseHandle(FSnapshotHandle);
end;

Вариант 2:

Этот код можно использовать в языках высокого уровня (Delphi, C, ...), для этого воспользуйтесь правилами.

Исходники примера можно взять здесь: Dos (Pascal 7.0), Win (Delphi 5).

WIN:
    cli    ;отключение внешних прерываний
@A:        ;метка
    jmp @A ;зацикливание

DOS:
    cli    ;отключение внешних прерываний
    hlt    ;выход из программы
Previous page:
Забавное программирование в Delphi
Top:
DRKB
Next page:
Ханойская башня