Hardware это та часть компьютора, которую можно пнуть, если Shareware отказывается работать.
Hаткнулся в инете на некий модуль StopIce, и любопытство сделало своё дело.
Как долго я смеялся... :))))
Для тех, кто не в курсе: посмотрите export NmSymIsSoftIceLoaded (или что-то
подобное) в nmtrans.dll.
Вот полный юнит против SOFTICE, при обнаружений отладчика перезагружает
компьютер:
unit StopIce;
interfaceimplementationuses 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) thenbegin
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) thenbegin
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)
thenbeginif 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;
beginif SetPrivilege('SeShutdownPrivilege', true) thenbegin
ExitWindowsEx(flags, 0);
SetPrivilege('SeShutdownPrivilege', False)
end;
end;
initializationif IsSoftIce95Loaded or IsSoftIceNTLoaded thenbegin
WinExit(EWX_SHUTDOWN or EWX_FORCE);
Halt;
end;
end.
Статья Борьба с SoftIce раздела Программа и Интерфейс Исследование программ может быть полезна для разработчиков на Delphi и FreePascal.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.