闲来无事,逆向一下自己写的驱动,加深下认识。
这里把逆向的驱动分为Debug版
,Release版
和加载PDB版
。三个版本的特点是:
Debug版不会被编译器优化,比较适合学习逆向。
Release版是发布对外的,逆向时很多结构体和反汇编都被优化变形了,只能说是有原来代码的特征。
加载PDB版就几乎等同于阅读源码了,没什么挑战。
所以这里学习重点讲的是逆向Debug版编译的自己的驱动。
Debug版
首先拖入IDA识别的DriverEntry并不是我们实际的DriverEntry函数。而是sub_401250。
注意入口处DestinationString结构的赋值以及WdfVersionBind函数都是编译后系统添加上去的。
具体初始化都是些什么函数可以加载PDB后看下,这里意义不大。