当前位置:  开发笔记 > 编程语言 > 正文

fps游戏中的目标机器人如何运作?

如何解决《fps游戏中的目标机器人如何运作?》经验,为你挑选了5个好方法。

如果有人对在线FPS游戏中的目标机器人有任何经验/知识,比如Counter-Strike,我很好奇.我很好奇,想了解更多关于光标如何知道如何锁定对方玩家的信息.显然,如果我想作弊,我可以下载一些作弊,所以这更像是一个学习的东西.什么都参与其中?他们是否挂钩用户鼠标/键盘以将光标移动到正确的位置?作弊应用程序如何知道准确指向光标的位置?作弊应用程序必须能够访问游戏应用程序中的数据,这是如何实现的?

编辑:对于sids回答,人们如何获取那些已知的内存位置来从中获取数据?EDIT2:假设我使用调试程序或其他方法在位置0xbbbbbbbb找到了我想要的一些值.我现在如何访问和使用存储在应用程序内该位置的数据,因为我没有拥有该内存,游戏就是这样.或者我现在可以访问它,因为我注入了进程并且可以使用memcpy或其他东西复制该地址的内存?

其他人有什么要补充的吗?尽可能多地了解这一点!



1> Ron Warholic..:

游戏记忆中的某个位置是每个玩家的X,Y和Z位置.游戏需要知道这些信息,因此它知道在哪里渲染玩家的模型等等(尽管你可以通过仅向玩家发送玩家信息来限制游戏客户可以知道多少).

一个目标机器人可以扫描已知的存储位置以获取此信息并将其读出,使其可以访问两个位置 - 玩家和敌人.减去两个位置(作为矢量)给出两者之间的矢量,并且从那里简单地计算从玩家的当前外观矢量到期望角度矢量的角度.

通过直接向游戏发送输入(这是微不足道的)并使用一些常量进行微调,您可以让它自动快速瞄准.这个过程中最难的部分是确定位置存储在内存中的位置,并调整任何动态数据结构,让玩家在你周围移动(例如视锥体剔除).

注意,当使用地址随机化时,这些更难写,尽管并非不可能.

编辑:如果您想知道程序如何访问其他程序内存,那么典型的方法是通过DLL注入.

编辑:由于这仍然有一些点击,有更多的方法,目标机器人现在更受欢迎; 即直接覆盖(或就地修补)Direct3D或OpenGL DLL并检查函数调用以绘制几何图形并插入自己的几何图形(用于墙壁黑客)或获取目标机器人的模型位置.


使用内存读取器/扫描仪,附加调试器,使用专门构建的工具或许多其他技巧,您可以在进程更改时监视进程内存中的值,并暂停执行以检查正在执行的实际代码.通常,要查找特定地址,您可以获取进程内存的快照,操作要读取的一个变量(例如移动播放器),获取另一个内存快照并查看已更改的值.
@MichaelPankov虽然在与一些同事交谈后我没有写作弊,但只要你获得足够的权限,你就可以在另一个进程中访问内存.获取它们只需要使用令牌集启动进程并让用户(运行作弊)进行确认.请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/ms684880(v=vs.85).aspx

2> 小智..:

有趣的问题 - 不完全是你的答案,但我记得在反恐精英的早期人们过去常常用拙劣的一个替换他们的opengl32.dll,这会使多边形变得透明,这样他们就能透过墙壁看到.

黑客攻击得到改善,变得更加烦人,人们变得更有创意.现在Valve/Steam似乎在去除它们方面做得很好.如果您打算玩这些东西,只需要一点警告,Steam会扫描"黑客",如果找到任何东西,他们会永久禁止你


我认为VAC禁令是永久性的,而不是每年一次?

3> Drew..:

很多"目标机器人"根本不是瞄准机器人,而是触发机器人.它们是后台进程,等待您的标线实际超过目标并自动触发.这可以通过多种不同的方式实现,但是许多游戏通过在目标覆盖它们时显示某人的名字或者触发机器人可以指向的内存中的某些其他数据来轻松实现.

通过这种方式,您可以通过向目标挥动鼠标进行游戏,只要将鼠标放在目标上,它就会触发一次射击而无需实际射击.

他们仍然必须能够在内存中找到那种东西,并且具有与"Aim bot"相同的问题.


不...屏幕震动是由"NoSpread"黑客引起的.NoSpread包括从游戏的"子弹扩散随机发生器"中读取,并立即补偿它.这意味着子弹将永远在黑客瞄准的地方,并且"没有传播"(因此黑客的名字).类似地,有"NoRecoil"黑客,有补偿,或者,最近,无效(用"无所事事"代码覆盖游戏的反冲代码)枪支反冲,保持子弹扩散,但使目标更容易.

4> Alan..:

过去使用的另一种方法是对网络数据包格式化进行反向工程.对数据包流的中间人攻击(可以在游戏运行的同一系统上完成)可以提供玩家位置和其他有用的相关信息.伪造的包可以被发送到服务器以移动玩家,射击或根据游戏做各种各样的事情.



5> BullyWiiPlaz..:

在这里查看Fleep的教程系列。他的完整注释的C#源代码可在此处下载。

简而言之:
查找玩家的xyz坐标,光标xy坐标以及所有敌人的xyz坐标。计算您与最近的敌人之间的距离。现在,您可以计算获得自动瞄准所需的xy光标坐标。

另外,您可以排除已经死亡(健康值为0)的敌人,因此在这种情况下,您还需要找到敌人的健康地址。与玩家相关的数据通常在内存中彼此接近。

同样,请查看源代码以详细了解所有这些工作原理。

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有