挡截API的问题?
来源:百度知道 编辑:UC知道 时间:2024/06/11 14:10:57
详细请看这里:
http://hi.baidu.com/ysees/blog/item/80cd5d45adc7c63786947342.html
我来解释一下,这种现象是正常的
你的hook是导入表hook
说白了只能hook到程序静态引入的函数
如果你在程序中使用::MessageBox则最终程序中确实引入了user32.dll中的MessageBoxA函数,这样可以hook到
如果你用CWnd::MessageBox来调用就不行了
或许你也知道CWnd::MessageBox最终也是调用了::MessageBox
但是你的程序没有直接导入::MessageBox
因为CWnd::MessageBox也是一个导出函数,具体名字大约是msvc60.dll之类的
是一个MFC的支持库
因此你hook导入表的时候根本找不到::MessageBox的引入
而只能找到CWnd::MessageBox的引入(这个引入的名字很复杂,是变形过的)
所以你的hook无法成功
///////////////////////////////////////////////////////////////
你所提到的问题恰恰是导入表式hook的局限性
只有改变hook的形式才能根本上解决这个问题
新的hook方式就是inline hook
网上有许多资料你去查查吧
挡截sock技术和挡截api技术
不知道这些原理可不可以教给玩家?不可以你们早说啊..别搞人来抓我
鼠标移动原理
模拟鼠标动作api函数mouse_event,它可以实现模拟鼠标按下和放开等动作。
void mouse_event(
dword dwflags, // 鼠标动作标识。
dword dx, // 鼠标水平方向位置。
dword dy, // 鼠标垂直方向位置。
dword dwdata, // 鼠标轮子转动的数量。
dword dwext