有些程序拦截了API,而且IceWord非一般软件更加不可能被终止了。常规方法是终止不了的

解决方案 »

  1.   

    我来给你代码吧,以前一个高手告诉我的!呵呵
    你直接使用就可以了,不过自己加控件
    Option Explicit Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As LongPrivate Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As LongPrivate Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As LongPrivate Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As LongPrivate Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPrivate Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As LongConst MAX_PATH As Integer = 260Private Type PROCESSENTRY32   dwSize As Long   cntUsage As Long   th32ProcessID As Long   th32DefaultHeapID As Long   th32ModuleID As Long   cntThreads As Long   th32ParentProcessID As Long   pcPriClassBase As Long   dwFlags As Long   szExeFile As String * MAX_PATHEnd TypeConst TH32CS_SNAPheaplist = &H1Const TH32CS_SNAPPROCESS = &H2Const TH32CS_SNAPthread = &H4Const TH32CS_SNAPmodule = &H8Const TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + TH32CS_SNAPmodule  Private Sub Command1_Click()Dim i As Long, lPid As LongDim Proc As PROCESSENTRY32Dim hSnapShot As Long   ListView1.ListItems.Clear '清空ListView   hSnapShot = CreateToolhelpSnapshot(TH32CS_SNAPall, 0) '获得进程“快照”的句柄   Proc.dwSize = Len(Proc)   lPid = ProcessFirst(hSnapShot, Proc) '获取第一个进程的PROCESSENTRY32结构信息数据   i = 0   Do While lPid <> 0 '当返回值非零时继续获取下一个进程       ListView1.ListItems.Add , "a" & i, Hex(Proc.th32ProcessID)    '将进程ID添加到ListView1第一列       ListView1.ListItems("a" & i).SubItems(1) = Proc.szExeFile '将进程名添加到ListView1第二列       i = i + 1       lPid = ProcessNext(hSnapShot, Proc) '循环获取下一个进程的PROCESSENTRY32结构信息数据   Loop   CloseHandle hSnapShot '关闭进程“快照”句柄End Sub Private Sub Command2_Click()Dim lPHand As Long, TMBack As Long   If ListView1.SelectedItem.Text <> "" Then       If MsgBox("确实要结束进程[" & ListView1.SelectedItem.SubItems(1) & "]吗?", vbYesNo) = vbYes Then           lPHand = Val("&H" & ListView1.SelectedItem.Text)           lPHand = OpenProcess(1&, True, lPHand)  '获取进程句柄           TMBack = TerminateProcess(lPHand, 0&) '关闭进程           If TMBack <> 0 Then             MsgBox ListView1.SelectedItem.SubItems(1) & "已经被终止!"           Else             MsgBox ListView1.SelectedItem.SubItems(1) & "不能被终止!"           End If           CloseHandle lPHand           Command1_Click '刷新进程列表       End If   End IfEnd Sub Private Sub form_Load()   Me.Caption = "进程管理器"   Command1.Caption = "刷新"   Command2.Caption = "结束进程"   ListView1.ColumnHeaders.Clear   ListView1.ColumnHeaders.Add , "a", "进程ID", 600   ListView1.ColumnHeaders.Add , "b", "进程名", 4000   ListView1.View = lvwReport   Command1_Click '刷新进程列表End Sub   
      

  2.   

    冰刀这种级数的东西不是一般的方法可以结束的另外,别人启动时要是用户等级比你高(比如SYSTE权限,ISCSICAKE就是这样),也是无法直接结束的.这里还不说HOOK了OpenProcess之类API的情况.........
      

  3.   

    不要打IceSword的主意好不好,那是我杀毒的最后一招了
      

  4.   

    可能我拿IceSword举例让大家误会了。其实我是想自己做一个比较强大一点的进程管理工具,因为现在病毒太厉害了,我想用这个工具来处理那些比较顽固的病毒进程。但是我暂时还没有合适的病毒样本,只好拿IceSword举个例子了。对于一般的进程我自己那个程序完全能够应付。ZOU_SEAFARER(颓废程序员^_^) 的程序基本原理和我那个应该一样,所以也只能对付一般级别的进程。