首页  编辑  

win2000/xp/2003下不能关闭程序的方法

Tags: /超级猛料/Friends.网友专栏/LYSoft/   Date Created:

win2000/xp/2003 下不能关闭程序的方法

Copyright http://lysoft.7u7.net

只针对2000以上系统,9X的就别问我了,4年没搞了:)

一般有4种方法:

1)DLL挂靠方法

程序改写为DLL结构,挂靠Explorer.exe上运行

好处:没进程实体,普通进程查看无效

缺点:可以通过代码叫Explorer.exe  Unload你的Dll,呵呵,还有Explorer出错时,会重新启用,那个时候需要重新挂靠你的DLL

改进:用Debug权限挂靠WinLogon.exe,哈哈,安全系数就高很多,WinLogon死了,你也就死机了

LYSoft主页的No  Ctrl+Alt+Del.rar是DLL挂靠方法的例子,修改就可用

2)API  Hook方法

关闭程序的实质是什么?TerminateProcess的API!

只要你的Application.Title:=''就不会出现在任务管理器的第一页

第二页会出现的,但不怕,我Hook了TerminateProcess就可以保证安全了

TerminateProcess可以Hook?可以,但Hook了没用,Handle是未知的

因此实质上要Hook的是OpenProcess,只要是我的进程就拒绝打开

好处:不怕你见的到,你就是关不了我

缺点:CMD下的命令行方法Hook不到

改进:能够Hook系统服务就一定可以,可惜难度大,需要编写驱动

LYSoft主页的API  Hook.rar是API  Hook方法的例子,修改就可用

3)NT内核修改方法

修改NT系统内核对象PsLoadedModuleList上的ActiveProcessLink链表就可以在系统上"失踪"了,但实现这个功能需要驱动支持,没驱动的方法只能适合XP/2003,因为Nt5.1以上的ZwSystemDebugControl  API才能支持内核访问

好处:你怎么都见不到进程的

缺点:难度过大,用内核工具仍然可以看见的,很多RootKit木马就用这个方法的

改进:几乎是终极大法,没什么别的好方法了。

LYSoft主页的NTLowLevel.exe是演示程序

关键代码如下

function  HideProcess:  boolean;

label  Err;

var

  EProcess  :  DWord;

  hPM,  FLink,  BLink:  Cardinal;

begin

  Result  :=  false;

  EProcess  :=  GetCurrentEProcess;

  if  EProcess  <  1  then  Exit;

  if  not  ReadVirtualMemory(EProcess+$88,  @FLink,  4)  then  Exit;

  if  not  ReadVirtualMemory(EProcess+$8C,  @BLink,  4)  then  Exit;

  if  not  WriteVirtualMemory(FLink+4,  @BLink,  4)  then  Exit;

  if  not  WriteVirtualMemory(BLink,  @FLink,  4)  then  Exit;

  Result  :=  true;

end;

不要问为什么了,你需要NTDDK的知识才能明白的:)

4)远程线程方法

没有实体的存在,没进程,没DLL,只有代码

把代码直接注入进程空间VirtualAllocEx,用CreateRemoteThread运行,

好处:没可见的实体,隐蔽性最强

缺点:适合于简单代码,复杂的难以保证其可靠性和稳定性,病毒的最爱

改进:不需要什么了

这个没演示了,呵呵:)

注入某个进程空间,要涉及到API定位等一系列病毒式操作,在对方的身体运行呀

简单的代码可以,复杂的功能就很不适合,一般的程序根本就不适合,所以除非写病毒,否则不建议用这样的方法,因为连调试都变得很难

LYSoft  http://lysoft.7u7.net

现在针对一些网友的问题,做一些补充说明:

1)那几种方法有谁不知道,关键实现才是多数人所关注的

A: 虽然,这不是很高技术,但本文不是面对初学者的,没一定的SDK和DDK知识的人,是比较难实现的.

2)DLL挂靠,只要一个远程FreeLibrary就把它给解决了

A: 同时挂靠多个DLL,相互守护照看,这就能避免这个情况

3)API Hook无效,只要自己写一个GetProcAddress

取OpenProcess绝对入口的,然后你就完了

A:确实,自己写GetProcAddress是可以避免API Hook,但是这个容易实现么?如果API Hook进入到系统服务的挂靠,想要避开,也是非常的不容易的

内核修改方法,是隐藏程序,不能避免关闭的.只是"发现不了",也就无从关闭

至于远程代码注入,这个确实很复杂,我还没能做到完整功能的,模块,仅能演示一下而已,哪位高手有好的实现方法也不妨来说说的

双(多个)EXE,DLL相互守护的方法也是个好方法,可以是一个DLL挂靠在Explorer.exe,另外一个DLL挂靠在WinLogon,而相互间进行守护照应.想关闭也不是容易做到的

综合上面的多种方法一起使用,想要关闭,肯定是不容易做到的,足够满足一般需要的.

没有绝对关闭不了的程序,所以要是遇到刻意要破坏的高手,也就没什么好说的.