首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

诚心请问:COM HOOK有关问题

2012-08-16 
诚心请教:COM HOOK问题我在做一个硬件加速截屏项目,在网上找到很多DirectX截图黑屏的解决方案,最后得出的

诚心请教:COM HOOK问题
我在做一个硬件加速截屏项目,在网上找到很多DirectX截图黑屏的解决方案,最后得出的解决方案是:

“通过Hook DDraw的DirectDrawCreate(RealOne用)同DirectDrawCreateEx(WMP用) 
获得IDirectDraw(7) 
再COM Hook CreateSurface,注意RealOne使用的是通过QueryInterface获得IDirectDraw2 
WMP则是IDirectDraw7 

Hook了CreateSurface后,就能获得OverlaySurface”

我在下面链接的开源代码的基础上修改,可以Hook到自己写的demo的DirectDrawCreateEx

http://www.codeguru.com/cpp/w-p/dll/hooking/article.php/c127/APIHijack--A-Library-for-Easy-DLL-Function-Hooking.htm


下面链接demo却hook不到,用ida查看了Mosquito.exe的导出接口,确认其调用了DirectDrawCreateEx
http://files.cnblogs.com/graphics/Mosquito.zip



[解决办法]
hr = lpDD7->SetCooperativeLevel(NULL, DDSCL_NORMAL);//这里就挂掉了

你的问题,我粗略看了下,lpDD7这个指针你传给exe有啥用呢。你注入程序.exe的指针能访问注入目标的内存地址么?当然要报错。正确的作法是那一堆截屏之类的操作在dll里做,因为dll已经注入,和目标在同一进程内,能访问目标的内存地址。然后你的dll和主程序通过socket,namedpipe之类的通讯。

热点排行