FPS 遊戲自瞄原理

2021-10-05 16:48:42 字數 2311 閱讀 7931

經常玩遊戲的朋友,應該知道fps遊戲,例如:穿越火線,逆戰等等,他們的特點就是以第一人稱視角進行操作人物,螢幕中間會有乙個準星,通過準星瞄準敵人進行攻擊以達到擊殺效果和遊戲體驗。

由於fps遊戲的特殊遊戲體驗,所以使得很多不法分子利用逆向知識開發了很多自動瞄準的工具,破壞了遊戲平衡。具體的原理如下:

1.找到存放滑鼠準星的座標基位址

2.找到人物陣列基位址

3.找到人物陣列下人物的相關屬性偏移:血量,名字,座標,陣營等

4.通過陣營判斷是否為敵人,通過血量判斷是否死亡,利用演算法將自己的準星座標修改為敵人所處的位置,實現自動瞄準

用到工具:ce,ollydbg

搜尋前,我們要理清思路,那就是如何去定位滑鼠的座標,怎麼定位比較方便。因為遊戲分為滑鼠x和滑鼠y兩種座標,滑鼠x即左右的座標,滑鼠y為上下座標,由於左右座標在遊戲中轉一圈無法確定座標資料是否增大還是減小,所以我們通常分析滑鼠的y,即上下座標。

針對滑鼠y座標變動的情況分析:

無滑鼠準星特殊加密:

1.向上移動準星座標增大,向下移動準星座標減小

2. 向上移動準星座標減小,向下移動準星座標增大

滑鼠準星特殊加密:

滑鼠準星上下無規律變動

對於沒有滑鼠準星特殊加密的遊戲,我們通常在ce工具中搜尋增加或者減少

對於存在 滑鼠準星特殊加密的遊戲,我們通常在ce工具中搜尋變動或者未變動

另外,由於座標等資料精度都是比較高的,所以我們通常搜尋浮點數或者雙浮點數

由於滑鼠左右移動的值(x座標)不容易判斷(因為可以轉一整圈),所以可以通過分析上下移動(y座標),得到了滑鼠y的記憶體位址,這個時候,我們不必去搜尋滑鼠x的記憶體位址,只需觀察該位址相鄰或者附近的位址值的變化即可得知滑鼠 x 因為滑鼠 xy 座標在遊戲中存放是連續的,類似我們在上課寫c語言結構體裡面變數資料記憶體位址是連續的一樣的道理。

那麼如何檢視相鄰位址記憶體呢?ce有個自帶的功能:

在這裡解釋一下為什麼我們需要填入23e3500,因為滑鼠y位址是: 23e3588,滑鼠x在附近的位置,所以我們存在乙個取值範圍,這個範圍不是很大,所以我們填入了乙個估值,填入後定義結構體,一切回車預設即可。

至此,我們的滑鼠座標記憶體位址分析完畢,當然了,分析這個還不夠,下面我們來分析一下人物陣列及其結構。

我們可以通過某乙個變數的值來尋找人物物件位址,最有代表性的就是血量(當然子彈數量什麼的也可以)。由於血量精度也比較高,所以存放形式也多為浮點數或者雙浮點數,由於精度過高,所以我們不能夠搜尋精確數值,改為搜尋兩者之間的數值:

古代的時候,對於我們生活的地球,人們會講「天圓地方」這麼乙個概念

那麼我們可以借鑑一下,把遊戲中的地圖看成方的,把我們看做座標原點,然後建立乙個直角座標系,並且標註上北下南,左西右東:

然後我們先得知乙個規律:

1.如果我們修正滑鼠x和滑鼠y為0,那麼遊戲準星將指向乙個東南西北的正方向

2.前後移動如果人物x座標未變動或者變動幅度小,則我們處在座標系y方向

3. 前後移動如果人物y座標未變動或者變動幅度小,則我們處在座標系x方向

所以,確認敵人在哪個象限:

1.當敵人x>自身x 敵人y>自身y 敵人位於第一象限

2. 當敵人x《自身x 敵人y>自身y 敵人位於第二象限

3. 當敵人x《自身x 敵人y《自身y 敵人位於第三象限

4. 當敵人x>自身x 敵人y《自身y 敵人位於第三象限

因為我們得知了滑鼠的變化規律,也得知了象限的變化,所以,我們只需要把我們和敵人的角度算出來就可以了。我們以我們為起點,以敵人的座標為終點,不考慮z座標,進行作圖,連線,構造三角形,根據幾何知識,我們得知綠色的地方即為我們需要瞄準的度數,也就是我們要修改的滑鼠的x角度:

y 座標可以理解為計算完 x 座標的基礎上再做一次勾股定理:

最終,我們的演算法就結束了,還差最後一步,那就是源源不斷的寫入敵人的角度資料到我們的滑鼠角度中,就可以實現鎖定敵人的功能。另外還需要注意人物物件所屬的陣營,不要誤殺了你的隊友,如果人物物件結構內沒有陣營資訊,那麼它們大多都在人物物件位址 -0x??? 的位置,然後還要判斷物件是否死亡(不要一直鎖著屍體),判斷鎖定的優先順序(距離自己躍越近的敵人對自己的威脅越大,應該最先鎖定)。

FPS遊戲的方框透視 自瞄原理

一,自瞄 準備工作 計算工作 二,方框透視 準備工作 計算工作 一,自瞄 基於所有的fps遊戲,都有乙個人物結構,包含人物在地圖上的三維座標,人物的準心資料。而實現記憶體自瞄就是通過查詢自己和敵人之前的三維座標資料,將三維座標資料轉換為二維的準心資料。準備工作 1.查詢人物的三維座標資料 以cs為例...

FPS遊戲通用準星修正實現自瞄

fps遊戲內的十字瞄準視角其實就是乙個視角攝像機這個應該不難理解吧,如何調整攝像機的視角就要用到乙個叫 姿態角 euler角 的資料,即 yaw pitch roll。這3個值的解釋如下 pitch是圍繞x軸旋轉,也叫做俯仰角 yaw是圍繞y軸旋轉,也叫偏航角 roll是圍繞z軸旋轉,也叫翻滾角 用...

FPS遊戲通用自瞄與透視演算法詳解!!

1 首先我們要找到乙個敵人的三維座標。2 我們還要找到自己的三維座標。3 我們還要找到自己的滑鼠座標x與y 這裡的滑鼠座標x與y是角度,x為360,y正中間為0向上減少到負90度,向下增加到90度 第一步 首先我們要計算自己與敵人座標之間的差值,這裡我們首先不考慮z座標 這裡的i代表自己的位置,e代...