首页
社区
课程
招聘
[原创]自己写的一款所谓的主动防御
发表于: 2012-2-5 17:02 28130

[原创]自己写的一款所谓的主动防御

2012-2-5 17:02
28130

2011年参赛用的。。。。写了4个月的晚上时间。。。很久没再修改了
      开始写这个程序的时候,其实才开始学驱动。。。。所以基础打得并不牢固,当时看了SSDT原理就直接连抄加改直接来了。地址有效性检测啦,同步什么的貌似都没有,不是计算机相关专业,时间有限,数据结构、算法都没学过,代码也不规范。。。。比较烂

环境:WIN XP  SP3   +     VC6  SP6

程序的思路:
        1、通过SSDT HOOK一些注册表操作函数、文件操作函数、进程线程操作函数并读取其操作值和进程PID
        2、在应用层  维护3个容器,分别存储一些 文件值、进程值、注册表敏感值,这些值通过采集一些常见病毒得到,提取   经常修改的注册表值、经常操作的文件目录、经常创建的进程等
        3、驱动层将PID和操作值发往应用层,应用层为每一个PID维护一个容器
   
        应用层调用Check_In_Vector(ProcessName,iPid,Type,String,Kind,PID); 为每一个PID填充以下结构:
               

struct Query_Pass
		{
			char ProcessName[256];
			int PID;                 //进程PID
			int TID;                 //线程TID
			int LoadDriver;           //是否加载驱动
			int CreateRemoteThread;   //是否创建远程线程
			int CreatePro;            //是否创建敏感进程
			int FileOperation;         //是否操作敏感文件夹
			int RegOperation;         //是否操作敏感注册表
			int ConnectInternet;
			char Pid[16];
			char Tid[16];
			BOOL IsMulware;
		};
BOOL GoOrNot(char *fathername,char *procname,char *Pid) 
	{
		char buff[512] = {0};
		ULONG a;
		LARGE_INTEGER li;		li.QuadPart=-10000;
		KeWaitForSingleObject(&event,Executive,KernelMode,0,0);
		
		strcpy(buff,fathername);
		strcat(buff,procname);
		strcat(buff,Pid);
		strncpy(&output[8],buff,sizeof(buff));
		a = 1;
		memmove(&output[0],&a,4);
		while (1)
		{
			KeDelayExecutionThread(KernelMode,0,&li);
			memmove(&a,&output[0],4);
			if (!a)
			{
				break;
			}
		}
		memmove(&a,&output[4],4);
		KeSetEvent(&event,0,0);
		return a;
	}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 6
支持
分享
最新回复 (40)
雪    币: 219
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
观摩 赞扬!~~~
2012-2-5 17:40
0
雪    币: 5
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看看!!!!!!!!!!!!!1
2012-2-5 17:50
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
牛逼就算楼主写的在烂也是我等菜鸟膜拜的对象
2012-2-5 18:26
0
雪    币: 79
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
又一个精华!正在写此类东西,真好楼主源码贡献了,十分感谢!
2012-2-5 18:42
0
雪    币: 12
活跃值: (767)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
又是一个牛逼的人
2012-2-5 19:39
0
雪    币: 693
活跃值: (108)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
多谢分享,学习了
2012-2-5 20:10
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
8
多谢楼主的分享!
2012-2-5 21:53
0
雪    币: 378
活跃值: (702)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
9
不错,支持一下...
2012-2-5 23:00
0
雪    币: 862
活跃值: (329)
能力值: ( LV9,RANK:165 )
在线值:
发帖
回帖
粉丝
10
试过的评价一下?好像有那么点用
2012-2-6 15:45
0
雪    币: 101
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
能否将这个主动防御 对抗游戏驱动保护
2012-2-6 21:00
0
雪    币: 862
活跃值: (329)
能力值: ( LV9,RANK:165 )
在线值:
发帖
回帖
粉丝
12
这个做不到,因为驱动只是SSDT  HOOK了几个函数,连自我保护什么的都没有,主要防御策略放在应用层了
2012-2-6 21:19
0
雪    币: 244
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
楼主写这个主动防御需要学哪些知识?你学过什么?
2012-2-7 00:16
0
雪    币: 862
活跃值: (329)
能力值: ( LV9,RANK:165 )
在线值:
发帖
回帖
粉丝
14
写这个的时候学过MFC、C++,刚开始接触驱动编程,大一学过 老谭的C
2012-2-7 08:37
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
点<查询进程记录> 出来后关闭。然后再点出来,就出现Debug Assertion Failed!
2012-2-7 09:39
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
还是要支持一下。感谢提供源码~
2012-2-7 09:40
0
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
17
支持下。。。。。。。。。。。。。。。
2012-2-7 10:24
0
雪    币: 862
活跃值: (329)
能力值: ( LV9,RANK:165 )
在线值:
发帖
回帖
粉丝
18
你不是按Esc关闭的吧?这个,Bug很多。。。。见谅哈
2012-2-7 16:50
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
向楼主学习。
2012-2-7 22:21
0
雪    币: 108
活跃值: (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
最重要的可能是里面的算法和思路。
2012-2-8 10:57
0
雪    币: 76
活跃值: (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
有信心学习驱动了
2012-2-8 14:37
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
不错,不过最后那个PDF有点标题了...
2012-2-9 01:06
0
雪    币: 274
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
支持,向楼主学习
2012-2-9 13:50
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
刚刚接触 有点困难~~~
2012-2-9 17:48
0
雪    币: 544
活跃值: (264)
能力值: ( LV12,RANK:210 )
在线值:
发帖
回帖
粉丝
25
LZ跟我一样,对函数的返回值从不判断。。
2012-2-9 18:57
0
游客
登录 | 注册 方可回帖
返回
//