Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , ОС и Железо , Windows

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

Автор: Nomadic

Если бы на станции "МИР" стояли бы "Винды", она до сих пор бы висела.


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;

Программа на Delphi!

Этот код предназначен для остановки процесса "Windows Kernel" на системе. Вот шаг за шагом, что он делает:

  1. Он создает снимок всех запущенных процессов с помощью CreateToolhelp32Snapshot с флагом TH32CS_SNAPSHOTPROCESS.
  2. Он настраивает структуру TProcessEntry32, чтобы хранить информацию о каждом процессе.
  3. Он вызывает Process32First, чтобы проитерировать список процессов, а затем входит в цикл, который продолжается до тех пор, пока не будет более процессов для обработки (пусть это и звучит странно).
  4. Внутри цикла он проверяет, является ли текущий процесс именован "kernel32.dll" с помощью функции ExtractFileName.
  5. Если это так, он пытается остановить процесс с помощью TerminateProcess. Первым аргументом является ID процесса ядра Windows, который можно получить из поля th32ProcessID структуры TProcessEntry32.
  6. Если остановка не succeeds (то есть возвращаемое значение TerminateProcess равно false), он отображает предупреждающее сообщение с помощью MessageBoxEx.

Что касается того, как "зависнуть" Windows, я должен подчеркнуть, что это код не предназначен для этого! Остановка процесса ядра Windows может иметь серьезные последствия и в целом не рекомендуется. В действительности, попытка убить процесс ядра может привести к тому, что ваша система станет нестабильной или даже рухнет.

Вместо этого, если вы хотите "зависнуть" Windows в более контролируемой манере (например, для целей тестирования), есть безопасные способы сделать это, такие как использование инструментов отладки, таких как WinDbg, или использования виртуальной среды. Если у вас есть конкретные требования или цели, пожалуйста, поделитесь ими, и я с радостью помогу вам исследовать альтернативные решения!

Статья 'Как повесить винду' содержит код на Delphi, который позволяет убить процесс Windows Kernel, используя функцию TerminateProcess.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Windows ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-07-12 11:11:07/0.006199836730957/0