关于找不到CreateFile函数的地址的问题
想找CreateFile函数的地址,将其hash值压入,却导致死循环,计算不出函数地址。准备放弃时,跟踪了其它程序,发现调用的是CreateFileA函数,而非CreateFile函数。
网上搜索相关知识点,查到如下信息:
事实上系统不存在什么CreateFile函数,只有CreateFileA和CrateFileW
编译时根据项目配置是否使用unicode,来决定最终用的是CreateFileA还是CreatFileW函数
CreateFileA 是MBCS 版本的, CreateFileW是Unicode版本的。
在调用时把所有与字符串有关的参数用_T("")宏括起来,就不用管最终编译时采用的是那个版本了。
2000以上的内核都是unicode,即使调用CreateFileA,最终还是会被转换成CreateFileW
98 只支持 MBCS,即使调用CreateFileW,最终还是会被转换成CreateFileA
早期的NT系统,是混合的,最好两个版本都钩,这样才能保证你钩子的有效性。
最终解决方法,将CreateFileA的hash值压入,直接就能计算出函数地址了!
浙公网安备 33010602011771号