<P class=MsoNormal><SPAN lang=EN-US>unit StopIce; <BR><BR>{ <B><SPAN style="BACKGROUND: #ffff66; COLOR: black">Anti</SPAN></B> debug unit. Detect SoftIce and shutdown Windows. <BR><BR>Freware with source. <BR><BR>Copyright (c) 1998 Soft House Labs, Andre N Belokon <BR>Web http://softlab.od.ua/ <BR>Email support@softlab.od.ua <BR><BR>THIS SOFTWARE AND THE ACCOMPANYING FILES ARE DISTRIBUTED <BR>"AS IS" AND WITHOUT WARR<B><SPAN style="BACKGROUND: #ffff66; COLOR: black">ANTI</SPAN></B>ES AS TO PERFORMANCE OF MERCHANTABILITY OR <BR>ANY OTHER WARR<B><SPAN style="BACKGROUND: #ffff66; COLOR: black">ANTI</SPAN></B>ES WHETHER EXPRESSED OR IMPLIED. <BR>NO WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE IS OFFERED. <BR>THE USER MUST ASSUME THE ENTIRE RISK OF USING THE ACCOMPANYING CODE. <BR>} <BR><BR>interface <BR><BR>implementation <BR><BR>uses Windows; <BR><BR>Function IsSoftIce95Loaded: boolean; <BR>Var hFile: Thandle; <BR>Begin <BR>result := false; <BR>hFile := CreateFileA('\\.\SICE', GENERIC_READ or GENERIC_WRITE, <BR>FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, <BR>FILE_ATTRIBUTE_NORMAL, 0); <BR>if( hFile <> INVALID_HANDLE_VALUE ) then begin <BR>CloseHandle(hFile); <BR>result := TRUE; <BR>end; <BR>End; <BR><BR>Function IsSoftIceNTLoaded: boolean; <BR>Var hFile: Thandle; <BR>Begin <BR>result := false; <BR>hFile := CreateFileA('\\.\NTICE', GENERIC_READ or GENERIC_WRITE, <BR>FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, <BR>FILE_ATTRIBUTE_NORMAL, 0); <BR>if( hFile <> INVALID_HANDLE_VALUE ) then begin <BR>CloseHandle(hFile); <BR>result := TRUE; <BR>end; <BR>End; <BR><BR>function WinExit(flags: integer): boolean; <BR>function SetPrivilege(privilegeName: string; enable: boolean): boolean; <BR>var tpPrev, <BR>tp : TTokenPrivileges; <BR>token : THandle; <BR>dwRetLen : DWord; <BR>begin <BR>result := False; <BR>OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, token); <BR>tp.PrivilegeCount := 1; <BR>if LookupPrivilegeValue(nil, pchar(privilegeName), tp.Privileges[0].LUID) then <BR>begin <BR>if enable then <BR>tp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED <BR>else <BR>tp.Privileges[0].Attributes := 0; <BR>dwRetLen := 0; <BR>result := AdjustTokenPrivileges(token, False, tp, SizeOf(tpPrev), tpPrev, dwRetLen); <BR>end; <BR>CloseHandle(token); <BR>end; <BR>begin <BR>if SetPrivilege('SeShutdownPrivilege', true) then begin <BR>ExitWindowsEx(flags, 0); <BR>SetPrivilege('SeShutdownPrivilege', False) <BR>end; <BR>end; <BR><BR>initialization <BR>if IsSoftIce95Loaded or IsSoftIceNTLoaded then begin <BR>WinExit(EWX_SHUTDOWN or EWX_FORCE); <BR>Halt; <BR>end; <BR>end.</SPAN></P> |