您的位置:首页 > 编程语言

游戏远程代码注入和动态连接库的使用

2011-07-19 15:07 288 查看
前提是已经用汇编语言对远程基址进行了成功的捕获。在VC中,读取远程基址比较常用的方法有几种:可以采用hook钩子函数,也可采用windows API 远程进程函数对内存进行读取,然后获得远程进程在本机中的数据,并进行相关代码的注入,获取更高的执行效率。比较常见的API函数:FindWindow();//查找当前游戏运行窗口,GetWindowThreadProcessID();//得到游戏句柄OpenProcess();//获得游戏进程的访问权限ReadProcessMemory();//读写内存空间,这里包含了游戏改变数值的基址,注入函数的函数名CreateRemoteThread();//创建远程线程,注入代码动态链接库的创建和调用1创建动态链接库; 2 添加函数代码;3 在def文件中做一个套出的处理;4 运行发布版本,win32 release;5 创建MFC程序,将动态链接库和函数库文件套入MFC程序文件夹中,并且设置文件寻找路径link下写上文件名;6调用 先声明 -declspec(dllimport) int 函数名 (参数),或者#pragma comment(lib,“mydll.lib”)2 注入游戏中:以键盘为例:1 键盘回调函数 KeyboarProc;SetWindowsHook(创建键盘钩子函数,使用这个函数的时候,通过监视键盘动作,自动的调用回调函数。将游戏代码注入到游戏中去,完成所需操作。//安装线程钩子HHOOK SetWindowsHookEx(int idHook,//回调函数的类型
HOOKPROC lpfn, //钩子回调函数 ,键盘回调函数
HINSTANCE hMod,
DWORD dwThreadId //游戏线程的ID
);
相应的回调函数也是不同的,如:callWndProc CBTProc ,KeyboardProc MouseProc 有按钮按下回调函数,键盘回调函数,鼠标回调函数。由以上可以看出,要将代码注入,需要安装钩子函数产生相应的钩子函数,通过钩子函数产生回调函数,回调函数里写上注入代码。同时回调函数,可以考虑写入动态连接库中
LRESULT CallNextHookEx(

HHOOK hhk,
int nCode,
WPARAM wParam,
LPARAM lParam
);
LRESULT CALLBACK KeyboardProc(

int code,
WPARAM wParam,
LPARAM lParam
);


安装游戏函数:创建游戏程序:加入以上动态链接库,当在游戏界面上按下键盘时,打开任务管理器,进程里可以发现游戏里注入了我们自己写的动态链接库。-----------------------------------------该文章出处:http://software.intel.com/zh-cn/blogs/2011/05/31/400007635/?cid=sw:prccsdn1705
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: