搞过API钩子的请进。。。
前一段有个朋友让给他做个工具,要实现如下功能:
1.禁止用户用记事本打开一个已有内容的文件,无论什么文件。
很自然地想到用API钩子,钩住notepad.exe的CreateFile函数,如果操作是打开,查看文件长度是否大于0,如果大于0就直接关闭notepad就完了。
钩子做完以后,倒是能钩住notepad.exe的CreateFileW函数(notepad.exe里面用的是CreateFileW)。也能转向我自定义的新函数,可我的函数一执行完毕,notepad.exe进程就非法内存访问,确定后就退出了,严重不对啊。可是我钩其他函数都没问题,象User32.dll里的TextOutA啊之类的都不会有异常,而且在notepad.exe里也能正常运行。
这个CreateFileW是Kernel32.dll里的,为什么钩住它,转向我的新函数MyCreateFileW(函数原型完全一样),我的新函数执行完毕后,就出异常呢?