求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 //返回 展开
我看了个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 //返回 展开
1个回答
展开全部
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
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询