求VC高手...detuor hook API

之前我没接触过detuorhook我看了个HOOKCreateFile的一个实例如下:staticHANDLE(WINAPI*SysCreateFile)(LPCTSTR... 之前我没接触过 detuor hook
我看了个HOOK CreateFile 的一个实例 如下:

static HANDLE (WINAPI *SysCreateFile)(
LPCTSTR lpFileName, // file name
DWORD dwDesiredAccess, // access mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD
DWORD dwCreationDisposition, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to template file
)=CreateFileA;
HANDLE _stdcall HookCreateFileA(
LPCTSTR lpFileName, // file name
DWORD dwDesiredAccess, // access mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD
DWORD dwCreationDisposition, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to template file
)
{
::MessageBox(NULL,"拦截成功",0,MB_OK);
return 0;
}
WinMain(....)
{
.......
DetourAttach(&(PVOID &)SysCreateFile,HookCreateFileA);
.....
}
大致如上
这是一个HOOK CreateFileA 的一个实例 CreateFileA 是一个系统API函数
而我想HOOK 一个类的函数
比如 IDirect3D9* d3d9 = 0;
d3d9->CreateDevice(....)
我想HOOK CreateDevice 这函数 我就不知道怎么做了...求高手帮忙解答 万分感激
上面那个D3D9->CreateDevice (是一个D3D编程里面的函数)

分是少了点 没办法╮(╯▽╰)╭ 我只剩下这么一点了
sorry
mov eax,[ebp+8] //堆栈平衡
add eax,2 //这是为什么呢?
retn //返回
展开
 我来答
chzhn
2011-06-08 · TA获得超过5343个赞
知道大有可为答主
回答量:2951
采纳率:0%
帮助的人:1476万
展开全部
D3D9->CreateDevice是thiscall的函数,我一般采用jmp的方式自己hook,替换函数注意保存ecx(this指针),其他的和stdcall的函数是一样的,不知道detuor对thiscall的支持怎么样。
追问
你说的是汇编 or 反汇编吧 。。。
VC++行吗...
简化点:
声明一个指向 IDirect3D9::CreateDevice的指针 IDirect3D9是个struct
CreateDevice 的原声明是
HRESULT CreateDevice(
UINT Adapter,
D3DDEVTYPE DeviceType,
HWND hFocusWindow,
DWORD BehaviorFlags,
D3DPRESENT_PARAMETERS * pPresentationParameters,
IDirect3DDevice9 ** ppReturnedDeviceInterface
);
追答
当然可以的,用内联汇编就行
这么写(类似)
__asm
{
mov eax,[ebp+8]
add eax,2
retn
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式