资源描述:
《windows内核编程问题集锦.pdf》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、内核驱动unresolvedexternalsymbol@__security_check_cookie@42010年2月27日评论发表评论最近在用winddk7600.16385.0开发驱动,小心谨慎的按照这篇文章设置了编译连接参数,在编译选项关闭了buffersecuritycheck,但工程里要用到wdmsec.lib静态库,里面链接进了符号__security_check_cookie@4,因此我编译始终出错,用了各种办法问题依旧,中间甚至试图逆向wdmsec.lib静态库,用IDA打开
2、一看,发现工程浩大,只能放弃.G(oogle)啊G啊,G了好久,在这里找到了解决方案:将bufferoverflowU.lib静态库加入链接依赖列表.问题解决.后来用depends打开sys文件一看,链接进了kernel32.dll,对于ring3的应用程序,这是很好的解决办法;但对于内核驱动,这是绝对不可以的.看来这里才是解决问题的真正方法.在源代码的最后添加如下代码,然后在工程设置内添加VS_IDE_BUILD标记.在链接设置内将入口点从DriverEntry改成GsDriverEntry.
3、问题解决.查看源代码打印帮助01#ifdefVS_IDE_BUILD02ULONG___security_cookie=0xbb40;03ULONG___security_cookie_complement=0xFFFF44BF;04NTSTATUSGsDriverEntry(INPDRIVER_OBJECT05DriverObject,PUNICODE_STRINGRegPath)06{07LARGE_INTEGERtickCount;08KeQueryTickCount(&tickCount
4、);09if(!___security_cookie
5、
6、___security_cookie==0xbb40)10{11ULONGtemp=(ULONG)&___security_cookie;temp=((temp>>8)^tickCount.u.LowPart)&120xffff;13if(temp)14___security_cookie=temp;15else16___security_cookie=tickCount.u.LowPart&0xffff;17}1819___securit
7、y_cookie_complement=~___security_cookie;20returnDriverEntry(DriverObject,RegPath);21}2223void__fastcall__security_check_cookie(ULONGcookie)24{25if(cookie!=___security_cookie
8、
9、cookie&0xffff0000)KeBugCheckEx(0x7f,cookie,___security_cookie,___security26
10、_cookie_complement,0);27}28#endif//VS_IDE_BUILDPS.也可以这么解决,如果BufferSecurityCheck(/GS)开关是打开的,把入口点改成GsDriverEntry@8,并加上BufferOverflowK.lib静态库.PPS.原来,BufferOverflowK.lib的意思是内核态的BufferOverflow库,BufferOverflowU.lib是用户态的BufferOverflow库.That’sall.