在fps游戏中如何瞄准机器人?

我很好奇,如果有人有任何关于在线FPS游戏,如反恐精英的目标机器人的经验/知识。 我很好奇,希望更多地了解光标如何知道如何locking对手。 显然,如果我想作弊,我可以去下载一些作弊,所以这更多的是一个学习的东西。 这一切都牵涉到什么? 他们钩住用户的鼠标/键盘为了将光标移动到正确的位置? 作弊应用程序如何知道指向光标的位置? 作弊的应用程序必须能够访问游戏应用程序内的数据,这是如何完成的?

编辑:为了答案,人们如何获得这些已知的内存位置来获取数据? 编辑2:可以说,我find一些值,我想在位置0xbbbbbbbb使用debugging程序或其他手段。 我现在如何访问和使用存储在应用程序中的数据,因为我不拥有游戏的内存。 或者我现在可以访问它,因为我已经注入进程,并可以复制内存使用memcpy或东西的地址?

其他人有什么补充? 试图尽可能多地学习这个!

游戏内存中的某处是每个玩家的X,Y和Z位置。 游戏需要知道这些信息,以便知道渲染玩家模型的位置等等(尽pipe只能通过向玩家发送玩家信息来限制游戏客户的知识)。

一个目标可以扫描已知的存储位置的这些信息,并将其读出来,让它进入两个位置 – 玩家和敌人。 减去两个位置(作为向量)给出了两者之间的向量,并且从那里简单地计算从玩家的当前外观向量到所需angular度向量的angular度。

通过直接向游戏发送input(这是微不足道的),并用一些常量进行微调,就可以很快地自动瞄准。 这个过程中最困难的部分是确定位置存储在内存中的位置,并调整任何dynamic数据结构来移动玩家(比如截锥体)。

请注意,当使用地址随机化时,这些写法更难,尽pipe并非不可能。

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

编辑:由于这仍然是一些点击有更多的方式,目标机器人工作,现在更受欢迎; 即覆盖(或修补)Direct3D或OpenGL DLL,并检查函数调用以绘制几何graphics并插入您自己的几何graphics(例如墙壁入侵)或获取模型的位置。

有趣的问题 – 不完全是你的答案,但我记得在反恐精英初期,人们用opengl32.dll来代替他们的opengl32.dll,使多边形透明,使他们可以看穿墙壁。

黑客改善,变得更加恼人,人们更有创意。 现在阀门/蒸汽似乎做了很好的去除它们。 如果你打算使用这个东西,只是一些警告,蒸汽扫描“黑客”,如果有任何被发现,他们会永久禁止你

很多“目标机器人”都不是瞄准机器人,而是触发机器人。 他们是后台进程,直到你的reticule实际上超过目标并自动触发。 这可以通过许多不同的方式来完成,但是很多游戏都可以通过显示某个人的名字,只要你的目标越过他们或者其他一些触发机器人可以指向的内存中的数据来简化。

这样,你通过在目标上挥动鼠标来进行游戏,只要你把鼠标放在它们上面,它就会触发一个镜头,而不必实际上自己开火。

他们仍然必须能够在记忆中找出那种东西,并且有类似于“瞄准机器人”那样的问题。

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

在这里查看Fleep的系列教程。 他完整的评论C#源代码可以在这里下载。

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

另外,你也可以排除已经死亡的敌人(生命值为0),所以在这种情况下你还需要find敌人的健康地址。 玩家相关数据通常在内存中彼此靠近。

再次,查看源代码,详细了解所有这些工作。

编辑:我知道这个offtopic,对不起,但我认为这将有助于提问者。

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

然后,您将只需要学习TCP信号的传输方式,并将其存储到散列表或多人(Packet)类中。 然后,检索信息并覆盖窗口上的信息(不挂钩),只是窗口游戏屏幕上的透明标签和2D盒子。

我已经在“使命召唤4”中进行了testing,我已经通过TCP获得了4名玩家的位置,但是正如Ron Warholic所说:如果游戏开发者只写游戏服务器,所有的黑客方法都行不通在当前用户应该看到玩家时输出玩家。

在切断XYZ和玩家位置的传输之后,玩家将不再被存储,也不会在那里渲染,以阻止黑客入侵。 并且aimbots将以某种方式拖延工作,但不是有效的。 因此,无论如何,如果你正在寻找一个wallhack,不要挂钩的过程中,尝试学习WinPCap和钩入互联网信号。 至于游戏,不要search互联网传输的进程列表。 如果你需要一个利用这个例子的例子,可以searchRust Radar,它可以在地图上输出玩家的位置,还可以输出你周围正在通过因特网传输TCP发送的其他玩家,而不会被挂在游戏中。