我现在有两个思路,但是不知道怎么做。1 在Task Manager中隐藏程序,但是通过设置TaskVisible只能在Applications页中隐藏,不能在Processes中隐藏程序进程。将程序设成Service又好像只能用于没有窗口的程序。2 win2000中有些系统进程是不能通过Task Manager杀掉的。不知道能不能把vb程序做成这样?

解决方案 »

  1.   

    得到win2000的源代码,按照你的要求修改,再重新编译,重新安装win2000.我觉得你的这个问题就象再问:我怎么样才可以藏在别人家里却不被所有的监视器和别人发现?除非你躲在角落里不动(程序不运行),要不然就把房子拆了,建个暗室,你躲在里面.
      

  2.   

    那么我换个问法,如果你的老板要求你的程序不能被别人用Task Manager关掉,那你会采用什么方法?(不能禁用Task Manager)
      

  3.   

    说实话,如果我的老板非让我那么干不可,我宁愿辞职,他连最起码的常识都不懂。task manager,也就是任务管理器,是“任务”总控制台,除非你执行的不是任务(我也不知道那是什么)否则都要受它管理。
    另外,即使是以服务方式启动,进程里面也是一样可以显示出来的,只不过杀不掉而已。如果真的有你想要的那种方法,试想,如果用来写一个trojan,那将是一件多么伟大的事情啊。不过,我见过一个木马,它启动了两个本体,然后互相监视,只要其中的一个被关闭了,另一个立刻重新运行被关闭的程序。不知道你这样做能不能满足你老板的要求?
      

  4.   

    http://expert.csdn.net/Expert/TopicView1.asp?id=1794470刚好看到这个,你也看看吧
      

  5.   

    Public Const SW_HIDE = 0  '隐藏窗口,活动状态给令一个窗口
    Public Const GW_OWNER = 4 '寻找窗口的所有者Declare Function GetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As _
    Long, ByVal wCmd As Long) As LongDeclare Function ShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd _
    As Long, ByVal nCmdShow As Long) As Long 再将下面的代码添加到窗体的Load事件中即可实现程序不在任务栏中显示的目的:Dim rc As Long
    Dim OwnerhWnd As Long'让窗体不可见
    Me.Visible = False
    '从任务管理器列表中移除
    OwnerhWnd = GetWindow(Me.hWnd, GW_OWNER)
    rc = ShowWindow(OwnerhWnd, SW_HIDE)
      

  6.   

    谢谢rapper提供了一个新的思路。另外,你上面的代码还是只能将程序隐藏在应用程序栏中而不能隐藏进程。
      

  7.   

    其实不用启动两个本体:加一个隐藏的窗体就足够了。两个都用rapper的方法在程序栏中隐藏。两个窗体都用API互相监视对方是否存在,一旦卸载对方,都立即重新运行!(可以再多运行几个!)-----可是为什么编程的至高境界都象“病毒或病毒化”!
      

  8.   

    Public RealQuit As Boolean
    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If Not RealQuit Then 'when you want quit Program Set RealQuit=True
        
        Shell (App.Path + "\" + App.EXEName)
        End
    End If
    End Sub
      

  9.   

    to a11s(不得其解)
    这可能是对付文明人的不错办法,可是如果暴力关闭(Terminate...)
    感觉上就不行了...
      

  10.   

    大家请关注http://expert.csdn.net/Expert/topic/1843/1843178.xml?temp=.7270929
      

  11.   

    进程注册
    这个操作很烦,你可以到网上找找相关资料to: rappercn(rapper)   我看不是人家老板没有常识很多病毒都有这个功能的呀,难道你没见过?
      

  12.   

    wxy_xiaoyu, jinta2001两位能不能说的更详细一些,在哪儿可以找到相关资料?谢谢
      

  13.   

    可以在程序启动时同时启动另两个监视程序,用循环加doevents来,监视程序监视另一个程序和主程序一旦发现另两个程序能够移动或被删除,证明已经退出,立即恢复源文件名等,然后重新启动它
      

  14.   

    wxy_xiaoyu, 你说的进程注册是不是用RegisterServiceProcess?这个好像只有在98下才能用
      

  15.   

    我还见过一种方法,就是定时查询系统中有没有标题是“Windows 任务管理器”的窗口,找到就杀。
      

  16.   

    另一种方法,在你的程序Unload中,写一段代码启动本程序的另一个实例。
      

  17.   

    我在Win2k下结束应用程序时能够收到Unload事件
    但是结束进程时根本收不到所以只能使用进程相互监视了
    '''''''''1 CreateProcess 建立新的进程 
    2 FindWindow 寻找有没有副本在运行
    3 如果找不到,那么运行副本,反之继续监视进程注入
    1 CreateRemoteThread 到Explorer (在XP下好像能看出来)杀掉Task Manager
    1 GetActiveWindow
    2 getwindowtext 如果是"任务管理器"那么...Kill it or Hide it制造一个假的Task Manager
     略...
      

  18.   

    rappercn,我觉得无知的是你。这东西能跟房子藏人比吗?根本不一样的。
    另外,进程确实是可以设为无法被杀掉的。不信自己去杀掉名为 svchost.exe 的进程看行不行。
      

  19.   

    捕捉ctrl+alt+del ,如果按下这三个键,呼出自己写的进程管理器,当然是隐藏了自己不
    想不用户看的进程。
      

  20.   

    发表小生的一点愚见大家知道Win2000 的内核和 应用程序 在内存中是分开的应用程序的管理确实需要受到内核的控制,至今还没有发现
    一个第三方的杀不掉的进程至于SVCHOST.EXE 用WinXP察看,它的属性是SYSTEM(这个可能是系统服务,也有可能是跟内核有密切关系)在有一种可能是TaskManager作怪,他不让你杀,使用第三方软件也许能杀掉
      

  21.   

    还有一个问题,大家还记不记得CIH 绝对看不到,但是为什么 瑞星 他不但能找到而且还能杀掉呢换句话说,如果瑞星想杀他,也不是不可能的(因为内核感染病毒是有可能的)
      

  22.   

    印象中在MSDN中看到过服务进程如何与界面通讯的,好像是设置服务的一个什么属性,这个服务就可以产生交互界面,是不是可以 CreateWindow 我记不清了。抛砖引玉...
      

  23.   

    bbe() 说的有点道理。
    不过这个问题的确很复杂,如果每个人都隐藏进程,病毒岂不漫天飞。
    1、如果只为在taskman中隐藏,可以使用api钩子屏蔽taskman中的api调用。
    2、如果想杀不掉,是非常困难的。不过可以利用cih的技术。 
       1 使用dll注入,我见过一个高手连用两次dll注入,基本上就把自己隐藏了。
       2 上面的方法也可以被杀,不过对一般PC使用者购高了。