欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

windows任务管理器中隐藏进程的方法

程序员文章站 2023-10-23 09:15:06
windows任务管理器中隐藏进程的方法...

在winnt下 "真正隐藏进程 "这一说法,可以讲是根本不可能实现,只要我们的程序是以进程内核的形式运行,都是不可能逃离ctrl+alt+del的法眼。那么奇怪了,这岂不是与我们的标题《winnt   &   win2k下实现进程的完全隐藏》相矛盾吗?是的,实际上应该是:以非进程方式执行目标代码,而逃避进程查看器的检查,从而达到 "进程隐藏 "的目的。
我们这里用的,是在宿主进程中,以线程的方式执行我们的代码。实现起来非常简单。首先,我们先建立一个不执行任何语句的线程


代码如下:

然后,将线程代码拷备至宿主进程所能够执行的任何地方(即页面属性为pagge_execute_readwrite),如:共享内存影射区、宿主进程内。这里我们选择宿主进程,拷备的时侯,我们需要先在宿主进程中使用virtualallocex函数申请一段内存,然后再使用writeprocessmemory将线程体写入宿主进程中。
以上工作完成后,我们便可createremotethread函数激活其执行。下面给出一个完整的例子

代码如下:

到这里,对于隐藏的方法就算告一段落,相信看过的朋友对这个思路有个非常明确的概念了吧。 

在理解隐藏的方法后,我们着重开始写线程的执行部分了。如下:


代码如下:

编译执行后,你会发现出现一个非法操作错误,为什么呢?在我们以段页式内存管理的win2k操作系统中,编译时会把所有的常量编译在pe文件的.data节中,而代码段则在.text中,所以,我们拷备到宿主进程中的代码是在.text中的代码,messagebox(null,(char   *)指针,p,0);所指向的地址是本进程的内存虚拟地址。而在宿主进程中是无法访问的。解决的方法很简单,按旧照搬的将 "hello "也拷备到目标进程中,然后再引用。同理,messagebox函数地址编译时,也是保存在.import中,写过win2k病毒的朋友都知道,所有常量与函数入口地址都需在代码段定义与得出,我们这里也与他有点类似。言归正传,同样情况我们也把函数的入口地址一起写入目标进程中。


代码如下: