Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ fps游戏中的aim机器人是如何工作的?_C++_C_Hook - Fatal编程技术网

C++ fps游戏中的aim机器人是如何工作的?

C++ fps游戏中的aim机器人是如何工作的?,c++,c,hook,C++,C,Hook,我很好奇,是否有人对在线FPS游戏(如反恐精英)中的aim机器人有任何经验/知识。我很好奇,想了解更多关于光标如何锁定对方球员的信息。显然,如果我想作弊,我可以去下载一些作弊,所以这更像是一件学习的事情。这其中涉及到什么?他们是否钩住用户鼠标/键盘以将光标移动到正确的位置?作弊应用程序如何知道光标的确切位置?作弊应用程序必须能够访问游戏应用程序中的数据,这是如何实现的 编辑:对于sids的答案,人们如何获得这些已知的内存位置来获取数据?EDIT2:假设我使用调试程序或其他方法在位置0xbbbb处

我很好奇,是否有人对在线FPS游戏(如反恐精英)中的aim机器人有任何经验/知识。我很好奇,想了解更多关于光标如何锁定对方球员的信息。显然,如果我想作弊,我可以去下载一些作弊,所以这更像是一件学习的事情。这其中涉及到什么?他们是否钩住用户鼠标/键盘以将光标移动到正确的位置?作弊应用程序如何知道光标的确切位置?作弊应用程序必须能够访问游戏应用程序中的数据,这是如何实现的

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


还有人要补充什么吗?尽可能多地学习这方面的知识

游戏记忆中的某个地方是每个玩家的X、Y和Z位置。游戏需要知道这些信息,以便知道在何处渲染玩家的模型等等(尽管您可以通过仅向其发送视图中玩家的玩家信息来限制游戏客户端可以知道的数量)

aimbot可以扫描已知的内存位置以获取这些信息并将其读出,从而允许它访问两个位置——玩家和敌人。减去这两个位置(作为向量)就得到了这两个位置之间的向量,从这里可以很简单地计算出从玩家当前外观向量到所需角度向量的角度

通过将输入直接发送到游戏(这很简单)并使用一些常量进行微调,您可以很快让它自动瞄准。这个过程中最困难的部分是确定位置存储在内存中的位置,并根据移动玩家的任何动态数据结构进行调整(如截锥剔除)

请注意,当使用地址随机化时,虽然并非不可能,但这些代码很难编写

编辑:如果你想知道一个程序如何访问其他程序的内存,典型的方法是通过


编辑:由于这仍然得到一些点击,现在有更多的aimbot工作方式更受欢迎;即覆盖(或就地修补)Direct3D或OpenGL DLL,检查函数调用以绘制几何图形,并插入您自己的几何图形(如墙劈),或获取aimbot的模型位置

有趣的问题-不完全是你的答案,但我记得在反击战早期,人们用一个拙劣的opengl32.dll替换他们的opengl32.dll,使多边形透明,这样他们就可以透过墙看到

黑客改进了,变得更烦人,人们也变得更有创造力。现在阀门/蒸汽似乎能很好地去除它们。如果你打算玩这些东西,Steam会扫描“黑客”,如果发现任何黑客,他们会永久禁止你玩。

很多“瞄准机器人”根本不是瞄准机器人,而是触发机器人。它们是后台进程,等待你的十字线实际到达目标并自动开火。这可以通过多种不同的方式来实现,但很多游戏都很容易做到,只要你的目标经过某人,或者触发器机器人可以锁定的内存中的其他数据,就可以显示某人的名字

通过这种方式,你可以在目标上挥舞鼠标,一旦你将鼠标移到目标上,它就会触发一次射击,而你不必亲自开火


他们仍然必须能够在内存中精确定位这类东西,并且拥有与真正的“Aim机器人”相同的问题

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

编辑:我知道这个主题,抱歉,但我认为这会帮助询问者

黑客行业还没有尝试过的东西,但我一直在尝试,就是套接字劫持。这听起来可能比实际情况要复杂得多,但基本上它使用WinPCap驱动程序通过TCP(套接字)连接到进程的Internet连接,甚至不需要接近进程的偏移量

然后,您只需了解TCP信号的传输方式,并将其存储到哈希表或多人(数据包)类中。然后,在检索信息并将信息覆盖在窗口上(没有钩住)后,只需在窗口游戏的屏幕上添加透明标签和2D框

我一直在《使命召唤4》中测试它,我通过TCP获得了4名玩家的位置,但正如Ron Warholic所说:如果游戏开发人员编写了一个游戏服务器,只在当前用户应该看到玩家时才输出玩家,那么所有的黑客方法都不会起作用

在切割后,该玩家的位置传输为X Y Z,玩家将不再存储,也不会在那里渲染,以停止wallhack。Aimbot会在某种程度上阻碍工作,但效率不高。因此,不管怎样,如果你想做一个wallhack,不要陷入这个过程,试着学习WinPCap并融入互联网信号。对于游戏,不要搜索进程列表以进行互联网传输。如果你需要一个例子,利用这个,去搜索雷达,输出球员的位置在地图上,也输出其他球员