更改屏幕显示数据的作弊程序
2006-07-20 11:41:40 来源:WEB开发网核心提示: 一不小心就说了这么多废话,好了,更改屏幕显示数据的作弊程序(2),转到正题,下面分别道来:拦截API(或者说截获API 反正一个意思)先说说截获API了,有消息,键盘和鼠标钩子就够用了,在HOOKAPI.h和cpp文件中,这个是繁体版本
一不小心就说了这么多废话。好了,转到正题。下面分别道来:
拦截API(或者说截获API 反正一个意思)
先说说截获API了,在HOOKAPI.h和cpp文件中,这个是繁体版本。网上流行很多个版本,我觉得还是这个比较简洁一点(简单万岁嘛)。原作者不知道是台湾还是香港的,注释用的BIG5码。截获API一般就几个步骤:
- 获得函数地址(GetProcAddress),取得被拦截的函数地址和要替代这个被拦截的函数的地址(也就是拦截后要处理的函数);
- 形成JMP指令(__asm),准备避开被拦截的函数跳转到处理函数直接处理;
- 设置内存可写(VirtualProtect),跳转后的函数执行;
- 记得恢复内存。
网上关于API拦截的教程很多,反正我也说不清楚就不多说了。其实我的理解很简单,就是想办法打开老板办公室的们、潜入、然后替换奖金单、然后关门、走人……就这么简单。注意点有三个:一个就是原函数的地址,在哪个dll中,别查错了;一个就是替换函数的参数,必须遵照游戏规则,该什么类型就什么类型;另外一个就是内存的读写顺序,不能漏也不能反。具体可以参考HookAPI的代码段,这里就不帖了。
钩子(Hook)
关于消息钩子,其实就两句话:SetWindowsHookEx ,UnhookWindowsHookEx ,装载钩子和卸载钩子,不过也就这两句话,学写钩子的时候,折腾了好一阵子。给初学者一个建议:理解瘟到死的消息机制,暂时放下MFC,尝试写至少一个SDK程序,动手写之前,好好看看MSDN,很多问题都可以在这里得到答案。SetWindowsHookEx有四个参数,主要就是注意1和4这两个参数,第一个参数建议少用WH_CALLWNDPROC 除非必须这么做。一般情况下,有消息,键盘和鼠标钩子就够用了,当然特殊情况除外。
更多精彩
赞助商链接