众所周知,在RING3中,我们可以使用CryptQueryObject。在驱动程序中,有没有办法获取认证信息? 我试图从ntosknel.exe的导出符号中找到它,但我没有成功。
答案 0 :(得分:1)
这不是那么微不足道) 有两种类型的签名图像:嵌入式签名和目录签名。对于第一类,您必须遵循:
1)从PE图像中提取签名和一些信息。格式记录在此处http://www.microsoft.com/whdc/winlogo/drvsign/Authenticode_PE.mspx
基本上你需要提取IMAGE_DIRECTORY_ENTRY_SECURITY目录并对内核加密api信息进行检索。
2)用内核模式验证签名crypto api(http://www.microsoft.com/whdc/winlogo/drvsign/Authenticode_PE.mspx),基本上是BCryptVerifySignature函数 这个api可以从Vista。对于XP,我记得有FIPS驱动程序。
我不知道从KM检查目录签名可执行文件的任何方法,因为我们需要在目录中的某处找到签名而我不知道如何。
从另一个角度来看,MS不支持这种功能,这就是我们需要将这个功能转移到用户模式帮助应用程序,并在内核模式下通过一些信息缓存来实现性能。如果没有在缓存中找到此信息,驱动程序将要求帮助应用程序检查pe图像的签名(例如,通过反向调用的帮助)。