检测当前环境中是否加载了调试器或者是某些工具软件的困惑!(50分)

  • 主题发起人 主题发起人 Lamb
  • 开始时间 开始时间
L

Lamb

Unregistered / Unconfirmed
GUEST, unregistred user!
昨天,我在一个地方发现了以下内容:
检测当前环境中是否加载了调试器或者是某些工具软件的办法:(注意:源程序为C++,后
面有我用Delphi改写的代码)
Here is a sample (checking for 'SICE'):
BOOL IsSoftIce95Loaded()
{
; ;HANDLE hFile; ;
; ;hFile = CreateFile( "////.//SICE", GENERIC_READ | GENERIC_WRITE,
; ; ; ; ; ; ; ; ; ; ; FILE_SHARE_READ | FILE_SHARE_WRITE,
; ; ; ; ; ; ; ; ; ; ; NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
; ;if( hFile != INVALID_HANDLE_VALUE )
; ;{
; ; ; CloseHandle(hFile);
; ; ; return TRUE;
; ;}
; ;return FALSE;
}
以上代码的作者还写到:
利用 CreateFile( ) 打开一些特殊的“文件”,如果返回值不是 -1,它就可以“发现”加
载了SoftICE。当然这种方法由于可以在WIN98/NT下通用,所以很常见。
类似的,如果你把检测的字符串 //./SICE 改成
//./NTICE ; ; ; ; ; ; ; ;检测NT下的SoftICE
//./FILEMON ; ; ; ; ; ; ; ;检测FileMon
//./REGMON ; ; ; ; ; ; ; ;检测RegMon
//./TRW ; ; ; ; ; ; ; ; ; ;检测Trw
//./TRWDEBUG ; ; ; ; ; ;检测Trw
//./ICEDUMP ; ; ; ; ; ; ; ;检测IceDump
就可以“发现”其他的跟踪了。
为了验证其正确性,我将C++改写为Delphi,检测regmon的运行情况(Delphi5.0)
hFile:=CreateFile('//./REGMON',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
else
; Result:=False;
程序代码编译和运行没有问题,可是无法检测regmon的运行啊?
大家认为此方式用于检测当前环境中是否加载了调试器或者是某些工具软件是否可行呢?
 
不可行,如果修改文件名,你看看能发现 softice
 
不行吧,问问那个写出这个东东来的家伙是什么原理?不是你看到他在4月1号发的吧:)
 
多人接受答案了。
 
后退
顶部