《黑客的秘密武器》之补丁 2001年 49期 看了《电脑报》42期上《黑客的秘密武器》一文,受益匪浅。但是作为一名VB的编程狂热爱好者,显然不会满足于如此直白的“秘密武器”:开机自启动仅仅是在注册表里的自启动项目下加入自己的程序,稍有经验的“老鸟”运行msconfig程序,所有的自启动项目就在眼前。而如果屏蔽了“Ctrl+Alt+Del”三键,用户在使用这三个键时,计算机的没有任何反应立即会使人明白发生了什么。所以《黑》文所谈的秘密武器其实并不秘密,下面,笔者就给这些武器打一些稍好一点的补丁。   先谈谈“Ctrl+Alt+Del”问题,目前较为流行的做法不是屏蔽掉这三个键,而是使用户在按下这三个键时,不能看到你的程序。它的实现也是靠调用API。具体如下:   '在通用声明中加入如下代码:   Private Declare Function GetCurrentProcessId Lib “kernel32” () As Long   Private Declare Function GetCurrentProcess Lib “kernel32” () As Long   Private Declare Function RegisterServiceProcess Lib “kernel32”(ByVal dwProcessID As Long _ ByVal dwType As Long) As Long   '在Form的Load事件中加入的代码   Private Sub Form_Load()   Dim MyReturn   MyReturn= RegisterServiceProcess(lngI, 1)   End Sub   现在运行你的程序,然后按下“Ctrl+Alt+Del”,能看到你的程序在运行吗?   需要说明的是,这种方法并不适合于Win NT和Win 2000,也会在某些系统进程查看程序的法眼下原形毕露。   目前流行使用“文件关联法”,所谓的文件关联,是Windows里的一个概念,比如文本文件(.txt)默认用记事本打开,就是建立了txt文件与记事本notepad.exe程序的关联,用户在双击txt文件时,系统就会自动调用notepad.exe程序。说到这里,很多人也许明白:建立txt文件或别的文件与自己程序的关联代替系统默认关联不就行了吗?哈,就是这样的,下面以为.cui文件建立关联为例给出具体的实现过程:   新建一个工程。并在窗体中添加一个按钮。代码如下:   '通用声明中的代码:   Private Declare Function RegCreateKey Lib “advapi32.dll” Alias “RegCreateKeyA”,ByVal hKey As Long(ByVal lpSubKey As String, phkResult As Long) As Long   Private Declare Function RegSetValue Lib “advapi32.dll” Alias “RegSetValueA” (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long 'API声明   Const HKEY_CLASSES_ROOT = &H80000000   Const REG_SZ = 1   '按钮Click事件中的代码:   Private Sub Command1_Click()   Dim sKeyName As String '存储键名   Dim sKeyValue As String '存储键值   Dim MyReturn As Long '存储返回值信息   Dim keyhandle As Long   sKeyName = “Test”   sKeyValue = “Test Application”   MyReturn& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, keyhandle&)   MyReturn& = RegSetValue&(keyhandle&, “”, REG_SZ,sKeyValue,0&)   MsgBox MyReturn&   sKeyName = “.cui” '要建立关联的文件后缀名   sKeyValue = “Test”   MyReturn& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, keyhandle&)   MyReturn& = RegSetValue&(keyhandle&, “”, REG_SZ, sKeyValue, 0&)   sKeyName = “Test”   sKeyValue = “D:\VB程序-大三\BBS浏览器\notepad.exe %1” '自己程序的位置和名称 注意后面的“%1”不要漏掉   MyReturn& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, keyhandle&)   MyReturn& = RegSetValue&(keyhandle&, “shell\open\command”, REG_SZ, sKeyValue, MAX_PATH)   End Sub   运行以上代码,就会建立后缀名为cui的文件与“D:\VB程序-大三\BBS浏览器\notepad.exe”程序的关联,以后,用户在运行cui文件时,就会自动启动自己的程序了。