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

Борьба с SoftIce

Delphi , Программа и Интерфейс , Исследование программ

Борьба с SoftIce

Автор: Igor Nikolaev aKa The Sprite

Hardware это та часть компьютора, которую можно пнуть, если Shareware отказывается работать.

Hаткнулся в инете на некий модуль StopIce, и любопытство сделало своё дело. Как долго я смеялся... :))))

Для тех, кто не в курсе: посмотрите export NmSymIsSoftIceLoaded (или что-то подобное) в nmtrans.dll.

Вот полный юнит против SOFTICE, при обнаружений отладчика перезагружает компьютер:


unit StopIce;

interface

implementation

uses Windows;

function IsSoftIce95Loaded: boolean;
var
  hFile: Thandle;
begin

  result := false;
  hFile := CreateFileA('\\.\SICE', GENERIC_READ or GENERIC_WRITE,
    FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL, 0);
  if (hFile <> INVALID_HANDLE_VALUE) then
  begin
    CloseHandle(hFile);
    result := TRUE;
  end;
end;

function IsSoftIceNTLoaded: boolean;
var
  hFile: Thandle;
begin

  result := false;
  hFile := CreateFileA('\\.\NTICE', GENERIC_READ or GENERIC_WRITE,
    FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL, 0);
  if (hFile <> INVALID_HANDLE_VALUE) then
  begin
    CloseHandle(hFile);
    result := TRUE;
  end;
end;

function WinExit(flags: integer): boolean;

  function SetPrivilege(privilegeName: string; enable: boolean): boolean;
  var
    tpPrev,
      tp: TTokenPrivileges;
    token: THandle;
    dwRetLen: DWord;
  begin
    result := False;
    OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,
      token);

    tp.PrivilegeCount := 1;
    if LookupPrivilegeValue(nil, pchar(privilegeName), tp.Privileges[0].LUID)
      then

    begin
      if enable then
        tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED
      else
        tp.Privileges[0].Attributes := 0;
      dwRetLen := 0;
      result := AdjustTokenPrivileges(token, False, tp, SizeOf(tpPrev), tpPrev,
        dwRetLen);

    end;
    CloseHandle(token);
  end;
begin

  if SetPrivilege('SeShutdownPrivilege', true) then
  begin
    ExitWindowsEx(flags, 0);
    SetPrivilege('SeShutdownPrivilege', False)
  end;
end;

initialization

  if IsSoftIce95Loaded or IsSoftIceNTLoaded then
  begin
    WinExit(EWX_SHUTDOWN or EWX_FORCE);
    Halt;
  end;
end.

infamous SoftICE debugger!

Эта единица Delphi пытается обнаружить и предотвратить использование SoftICE, популярного инструментария для отладки приложений Windows. Автор, Игорь Николаев (aka The Sprite), создал умелый способ идентификации и ответа на присутствие SoftICE.

Вот разбивка того, что код делает:

  1. Функция IsSoftIce95Loaded проверяет, загружен ли SoftICE 95, пытаясь создать файловый обрабатывающий объект к \\.\SICE. Если успешно, возвращает TRUE.
  2. Функция IsSoftIceNTLoaded выполняет аналогичную проверку для SoftICE NT.
  3. Функция WinExit отвечает за запуск отключения Windows с помощью API-вызова ExitWindowsEx. Она также устанавливает привилегию 'SeShutdownPrivilege', чтобы позволить этому функционалу.
  4. В разделе initialization, единица проверяет, загружены ли какие-либо из версий SoftICE. Если да, она вызывает WinExit с флагами EWX_SHUTDOWN или EWX_FORCE, что заставляет отключиться Windows. Затем программа останавливается с помощью процедуры Halt.

Идея за этим кодом - обнаружить и ответить на присутствие SoftICE, вынудив отключение Windows. Это может быть полезно в ситуациях, когда приложение нужно обеспечить, чтобы оно работало без помех от отладчиков или других инструментов.

Обратите внимание, что это код, вероятно, был написан для образовательных целей только, потому что он может не быть практичным или эффективным в современных сценариях. Кроме того, использование Halt может привести к неожиданным поведениям или краху, если используется неправильно.

В целом, этот код демонстрирует творческое решение проблемы и понимание внутренних механизмов Windows. Поздравления Игорю Николаеву за его работу!

Борьба с SoftIce - статья, в которой автор Игорь Николаев предлагает модуль StopIce для обнаружения и блокировки работы отладчика SoftIce на компьютере.


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

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




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


:: Главная :: Исследование программ ::


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:46:50/0.0039129257202148/0