游戏外挂开发系列–游戏喊话器

作者: admin 分类: 外挂 发布时间: 2013-02-20 17:10 ė3,192 浏览数 6没有评论
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)

from http://blog.csdn.net/sandyandy/article/details/1917074

前言

无疑,伴随着现在的游戏市场日益膨胀的同时,带来了很多与游戏相关的商业活动,游戏中的交易带来了无限的商机和巨额的利润,而如何在游戏中进行产品和业务的推广,是十分重要的。前段时间,鉴于朋友的摆脱,帮忙开发了一个游戏中喊话器,其中涉及一些技术要点,现在总结如下

1. 一些在动手开发前要说的

游戏喊话,初级的实现是借助键盘模拟,高级的实现是借助键盘驱动的模拟,但是这些模拟都会有个缺点:不能同是在多个游戏中喊话,也不能在后台喊话,因此这种模拟技术不是完美的(这是由windows原理决定的)。游戏的外挂开发大多是跨进程,普通的方法是注入(我的喊话程序的第一个版本就是基于注入的),更高级点实现是想办法将要跨进程的操作转化为不要跨进程(我的喊话程序的第二个版本就是基于这种思想的),下面逐个讲解下其中的技术要点。

2. 如何获取游戏的窗口?

HWND WindowFromPoint(
  POINT Point  // point
);

利用这个函数能够拾取游戏的窗口

3.如何获取窗口的线程?

DWORD GetWindowThreadProcessId(
  HWND hWnd,             // handle to window
  LPDWORD lpdwProcessId // process identifier
);

利用这个函数能够获取游戏窗口的线程ID

4.如何获取游戏窗口线程的局部状态?

BOOL AttachThreadInput(
  DWORD idAttach,    // thread to attach
  DWORD idAttachTo,  // thread to attach to
  BOOL fAttach       // attach or detach
);

利用这个函数能够绑定游戏窗口线程的局部状态,到此,你就不用跨进程去操作游戏窗口了

4.接下来应该怎么办?

HWND SetFocus(
  HWND hWnd   // handle to window
);

为什么要进行这个调用?因为wm_keydown,wm_keyup是发送给线程中具有焦点的窗口,因此需要对游戏的窗口进行焦点的设置

5.如何在游戏窗口上喊话?

BOOL PostMessage(
  HWND hWnd,      // handle to destination window
  UINT Msg,       // message
  WPARAM wParam,  // first message parameter
  LPARAM lParam   // second message parameter
);

这里就将要喊话的内容以wm_keydown,wm_keyup发送到游戏窗口上了

6. 补充的东西

以这种方法能够在后台同时在多个游戏中喊话,与键盘模拟的实现来相比起来,出色多了,但是在某些游戏中会出现喊话的内容重叠的时候,如果哪位大虾能指点一二,感激不尽。



只回答业务咨询点击这里给我发消息 点击这里给我发消息

学习日记,兼职软件设计,软件修改,毕业设计。

本文出自 学习日记,转载时请注明出处及相应链接。

本文永久链接: https://www.softwareace.cn/?p=179

0

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">


Ɣ回顶部

无觅相关文章插件,快速提升流量