前几天写了篇《传统 INF 模板》,今天来补充一下 KMDF 和 NDIS6 的 INF 模板. 这两个模板的编写方式和之前 Legacy 的模板不一样,是微软当前推荐使用的编写方法。
基本上,大家写完驱动都是通过一个加载器来加载驱动,我自己觉得太麻烦了...不如直接右键安装更方便.
下面是我自己使用的驱动 INF 文件模板,直接替换里面部分文件信息就可以直接使用。
ProcessHollowing
(进程镂空) 也是出来很久了, 网上已经一大堆相关介绍的文章.
我就不再详细介绍, 详细介绍请看"傀儡进程的实现与检测", 这里就额外补充个小技巧.
分析环境为 x64 版本
InstrumentationCallback
回调的技术刚出来的时候就收藏了, 一直没有去研究学习它. 现在有时间来看一下这个东西.
这个回调存储在 KPROCESS-> InstrumentationCallback
.
1 | 0: kd> dtx nt!_KPROCESS |
文章可能有错误的地方,希望各位童鞋能够提出~
事故缘由…
为了使用很爽的C++11 特性,我司最新项目是用的VS2015进行开发的。
但是同时又要对XP做兼容(讲真,我个人是不支持对Win7之前的系统做兼容的,我觉得影响发展)。
我们写了个COM组件作为插件,和驱动进行通讯。
在我们进行单元测试的时候,一切正常。但是出了测试安装包之后,发现加载插件会崩溃。
然后我们挂载了Windbg神器来定位崩溃点。
崩溃点是一个读取TLS,这个值为空 (外部静态对象才会有TLS)