注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

从C开始

 
 
 

日志

 
 

System Defender(开源)  

2011-05-10 18:29:50|  分类: 驱动编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
代码:http://download.csdn.net/source/3266397

自己写的一款安全工具~

背景:

每当到了寒暑假,回家的第一件事情就是帮我爸妈的电脑重装一下系统。原因是他们不知道上了什么网站,导致系统中全是病毒,就算有些病毒被杀毒软件杀掉了,但是系统都已经被破坏了,不得不重装系统。

 

经过细想,爸爸妈妈平时用的软件无非就是那么几款,PPS看看电影,QQ登陆下跟我聊聊天,QQ游戏打打牌。于是我就有了一个想法,我可以让爸妈的电脑除了指定的几款软件能够运行外,其他的都不能运行。这个思想好比是古代的宁可错杀一千,也不放过一个的思想,嘿嘿。

 

于是上网Google,百度了N久,都没有发现有这么一款软件,于是决定自己实现之。

 

 

实现原理:

       我们都知道,要运行一个程序,我们必须先用Ring3Api函数OpenProcess函数打开要运行的软件,然后才能进行后续的操作。用户层的OpenProcess函数会在其内部调用Native Api函数ZwOpenProcessEx函数,进入到系统内核后调用内核函数NtOpenProcessEx来最终实现运行程序的目的。

 

       而我主要采用的技术手段主要采用内核SSDT Hook Ring0层函数NtOpenProcessEx。程序首先判断要运行的软件是不是我们白名单库中的软件,如果时,则内核函数返回允许,曾许运行。如果不在白名单库中,那么内核函数直接返回拒绝。

 

       基本原理就是这样,其实说起来是很容易的,但是实现起来有很多东西都要考虑到,最难的还是内核层和用户层之间的通信。

 

       下面是我已经基本实现的程序:用户界面层采用MFC编写,内核层采用C语言编写。

1.       SDtray:该程序是System Defender托盘图标程序。

主要是用来跟驱动层通信和显示托盘命令菜单。

界面如下:

System Defender(开源) - Fly - 从C开始
 

各命令解释:

显示主界面:顾名思义,运行SDMain程序。

开启监控:开启System Defender的监控,不在白名单中的软件会被阻止运行

暂停监控:此时运行软件不会被拦截

安全模式:不在白名单中的软件会被阻止运行

              学习模式:不在白名单中的软件会被加入至白名单中

           退出:关闭软件

 

2.       SDMain:该程序是System Defender的主界面程序。

主要用来显示和编辑已有的规则和显示日志信息。

界面如下:

System Defender(开源) - Fly - 从C开始
 

各命令解释:

       映像名称:文件名

       映像路径:文件路径

       验证HASH值:有些软件,如杀毒软件经常会更新自己的主程序,那么这时我们就可以设定他为不验证HASH值。即当文件改变时,程序也会允许他运行。否则,程序直接阻止,以防文件被病毒感染。

       为了醒目,在程序中不验证文件HASH的项用自绘控件描成了红色。

 

3.       SDKrnl:系统驱动内核文件,功能的主要实现体。

 

4.       SDDataSystem Defender的规则和日志文件。

 

5.       SDConfigSystem Defender的配置文件。

 

 

软件运行状况(虚拟机WinXP SP3下运行):

注:

1.由于驱动程序中使用了硬编码,因此目前只支持xp系统,别的系统下运行此内核程序必蓝屏。到时,您的工作文档什么的没有保存可不要怪我啊,切记切记。

 

2.程序的主要功能已经完成,但是很多细节方面还待进一步完善。因此,即时在xp系统下运行本软件时也很容易引起蓝屏死机,后续主要的工作会进一步完善程序的兼容性。

 

软件被阻止运行时:

System Defender(开源) - Fly - 从C开始
 

软件的HASH值发生了变化时:

System Defender(开源) - Fly - 从C开始
 

 

  评论这张
 
阅读(507)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018