Пример программы обнаружения присутсивия Soft-ice.

Принцип работы программs обнаружение Vxd с определенным названием. Такой принцип применим для обнаружения других программ например Filemon или RegMon. Для этого требуется заменить название SICE или NTICE на название VXD который использует соответствующая программа. Определить название можно спомощью MsSysinfo.

//////////////////////////////////////////////////////////////////////
//
// MeltICE - SoftICE '95 version 3 detection - Made by David Eriksson
// ==================================================================
//
// Disclaimer
// ~~~~~~~~~~
// I take no responsibility for the authenticity of this information,
// or the results of the use or misuse of the source code.
//
// SoftICE is a trademark of NuMega Technologies, Inc.
//

Unit meltice;

Interface

//#include <stdio.h>
//#define WIN32_LEAN_AND_MEAN
//#include <windows.h>

//////////////////////////////////////////////////////////////////////
//
// See if SoftICE version 3.x for Windows 95 is loaded
//
Function IsSoftIce95Loaded: boolean;

////////////////////////////////////////////////////////////////////
//
// See if SoftICE version 3.x for Windows NT is loaded
//
Function IsSoftIceNTLoaded: boolean;


Implementation
Uses sysUtils, Windows;

Function IsSoftIce95Loaded: boolean;
Var
hFile: Thandle;
Begin
result := false;

// "\\.\SICE" without escape stuff
// hFile := CreateFileA('\\\\.\\SICE',
// Note: There is no need for the escapes in Pascal, therefore

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;

// "\\.\NTICE" without escape stuff
// hFile := CreateFileA('\\\\.\\NTICE',
// Note: There is no need for the escapes in Pascal, therefore

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;

End.

//////////////////////////////////////////////////////////////////////
//
// Example code for calling these functions
//
(*$apptype console*)
Procedure Test;
Begin
if IsSoftIce95Loaded then
writeln('SoftICE for Windows 95 is active!')
else if IsSoftIceNTLoaded then
writeln('SoftICE for Windows NT is active!')
else
writeln('Can''t find SoftICE with this method!');
End;

 
  (c) White Niger 1999-2000 г.