在驱动里一般都要验证调用者的来源,比较方便的方法就是使用签名的方法了,所以实现了一下,我比较菜,密码学知识几乎为0,就知道一些百度百科上的东西,所以算法全部使用谷歌来的代码
重写了文件读写函数,以便实现ring0和ring3通用
……
大致原理如下:
签名
1、查找一个PE里面的间隙,足够用来装128字节的签名信息,如果没有增加区段
2、对PE文件进行SHA512求Hash
3、将那个Hash使用私钥加密后写到间隙里面
验证
1、查找一个PE里面的间隙,足够用来装128字节的签名信息,如果没有增加区段
2、对PE文件进行SHA512求Hash
3、读取签名信息,使用公钥解密,之后对比两个hash是否相等
使用时,签名工具不公开,驱动自带了公钥和验证算法(不带签名算法),自己的程序签上名就好了

上传的附件 SignTool.rar