关于《Windows核心编程》中提供的CAPIHook类的Bug的问题, 知道的进来逛逛!!
在《Windows核心编程》中提供了CAPIHook类,不过本身似乎有点小问题。
就拿他提供的22-LastMsgBoxInfo这个Hook MessageBox的程序来说,并不是所有的MessageBox都能被Hook到。不信大家可以去44。
查了网上的资料,有一遍文档提到了对于这个CAPIHook类的修正:
chapter 22, page 801
the sample fails to hooks some applications. to fix this, you must modify the capihook::replaceiatentryinonemod method so that it calls virtualprotect just before calling writeprocessmemory. the call to virtualprotect should look like this:
dword dwdummy;
virtualprotect(ppfn, sizeof(ppfn), page_execute_readwrite, &dwdummy);
他的源话大家可以参考 http://www.patching.net/bbs/viewgooddoc.asp?id=6007&bordid=2
但是我照着他的这个方法修改了源程序之后,再次编译22-LastMsgBoxInfo时发生了LoadLibrary的循环调用而导致的堆栈溢出的错误
迷茫了。。。 有谁知道答案吗?
(CSDN上的一篇帖子也提到了同样的问题,但是没有给出答案 http://community.csdn.net/Expert/topic/3322/3322367.xml?temp=.4468958)