能力值:
(RANK:350 )
|
-
-
2 楼
有关\\.请看置顶的常见问题,blowfish以前回答过。
trw2000看看小楼以前的文章:
============================
论“createfile("\\.\trw2000")不能检测trw2000之存在”
自从用API函数createfile("\\.\Sice")能有效检测softice存在与否的方法被揭示以来,此方法被推而广之,广泛运用于各种anti技术中。比如大家很熟悉的
createfile("\\.\trw2000") //检测trw2000
createfile("\\.\trwdebug") //检测trw2000
createfile("\\.\filemon") //检测filemon
createfile("\\.\regmon") //检测regmon
等等。
特别是createfile("\\.\trw2000")更是被多个国产软件所运用,来对付trw2000。但是,用这种方法永远不可能检测到trw2000,各位只是瞎忙一场。
自从见到createfile("\\.\Sice")检测softice后,我当然也举一反三,大肆试验,用此函数检测其它程序,但是检测filemon、regmon都成功,唯独不能检测到trw2000存在;我也询问其它人,都与我有同感;难道这个方法不能使用,此疑惑一直存于我心。
直到最近,我从一些vxd教程中知道createfile("\\.\Sice")检测的原理,并作了一些试验后,才知道我的猜想是正确的。
在win9x下,win32程序与vxd程序彼此沟通分2部分:1部分是应用程序到vxd通信;另一层是vxd至应用程序通信。
win32程序对vxd程序通信时,是通过调用DeviceIoControl函数进入vxd,此函数的一个参数就是由createfile获得的设备句柄。这样,同样生成或打开文件的调用也能够打开一个到vxd的通道。要用createfile打开一个vxd,而不是一个通常的文件,在文件名的地方必须使用特殊形式
createfile("vxdname")
(摘自《windows vxd与设备驱动程序权威指南》第二版)
如此,很显然了,createfile("\\.\Sice")能检测是因为sice驻留后内存中有个vxd叫sice形成(当然,实际硬盘上不存在一个叫sice.vxd的程序)。
各位可以从以下网址下载一个软件vxdview,它用来显示内存中驻留的vxd
http://www.tssc.de/download/prods/vxdview.exe
其结果显示trw2000运行前、后系统中vxd没有改变;
而用filemon测试,结果显示增加一个vxd,名字为filemon。
结论1、trw2000运行后(但没有激活中断情况下),没有生成vxd,所以createfile("\\.\trw2000")不能成功。
但是用ctrl-N激活trw2000后,下命令
vxd //显示所有vxd
可以见到trw2000名字,说明只有在trw2000激活,接手系统后才会生成vxd,来实行跟踪、显示等功能;可是此时,createfile("\\.\trw2000")已经无能为力,因为一切在trw掌握中;等到用F5结束trw2K的激活,vxd也就消失了。
结论2、只有在trw2000激活后才生成vxd。
所以。最后结论是:“createfile("\\.\trw2000")不能检测trw2000之存在”。
小楼
于2002.05.28
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
小楼的帖子我昨天刚搜到,但和我说的问题不太一样:trw2000v1.23运行后,确实没有生成trwdebug和trw2000,只是在其被激活弹出窗口时才临时生成trw2000,所以,常规的createfile方法检测不到;但trw2000v1.22不一样,运行后即在系统中生成VxD trwdebug,但是,用createfile("\\.\trwdebug") 却检测不到。
|
|
|