窥探一个杀毒软件的驱动

做为一个开发人员,我的电脑常年都是裸奔的。近来内部要求安装安全管理系统,集成了一个杀病毒软件,大概看了下,是Avira公司的。它的驱动中包含一个称做ELAM类的驱动:

Early Launch驱动

这种类型的驱动按微软的说法,会在所有Boot型驱动运行前加载,即是最早运行的驱动,并且需要过微软WHQL签名,一般也只有杀毒软件厂商才会向微软提交ELAM驱动进行特别签名。

我们感兴趣的是这个驱动会做些什么,先来看驱动大小,只有20K,其中还包含签名数据,那代码量是很少的。在IDA中看了下导入表:

导入表中真正有实际作用的函数

发现只有一个IoRegisterbootDeviceCallback函数有实际使用价值,其它函数都是辅助作用。我们来看一下IoRegisterbootDeviceCallback是做什么的:

The IoRegisterBootDriverCallback routine registers a BOOT_DRIVER_CALLBACK_FUNCTION routine to be called during the initialization of a boot-start driver and its dependent DLLs.


IoRegisterBootDriverCallback注册一个BOOT_DRIVER_CALLBACK_FUNCTION回调,该回调在Boot型驱动及其依赖的DLL初始化时被调用。

这就是ELAM驱动能够从系统启动就检查其它驱动的关键了。我们看看Avira这个驱动是怎么做的:

在BootDriverCallback中检查每一个驱动映像

VerifyImage函数中它首先检查自己的驱动映像是否完整,然后逐个检查其它每个加载的驱动映像的签名,并根据情况记录日志

检查自带驱动是否完整

它内置有三个映像的指纹数据,在加载时先判断证书发布者是本公司的,然后比较证书指纹是否正确并记录日志

检查自己的驱动映像

按照当前逆向的信息来看,这个驱动只是检查并记录日志,推测因为它即使检测到非法驱动也不能随便阻止系统启动,应会在系统启动后配合其它组件实现查杀有问题的驱动。

展开阅读全文

页面更新:2024-03-03

标签:微软   映像   指纹   杀毒软件   函数   加载   证书   作用   完整   数据   日志

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top