免責聲明:內容僅供學習參考,請合法利用知識,禁止進行違法犯罪活動!
本次游戲沒法給
內容參考于:微塵網絡安全
上一個內容:6.第二階段x64游戲實戰-分析人物狀態
首先打開人物面板,查看人物的血量,然后如下圖CE中數值類型選擇4字節,掃描類型選擇精確數值,一般游戲血量是4字節,如果4字節搜不到就使用8字節,掃描類型不變
然后首次掃描完后修改一下血量(比如脫掉加血量的裝備或讓怪物打幾下降低血量或使用物品加血),如下圖修改完血量再次掃描之后,就只剩下一個了
然后如下圖修改它的值,然后關閉游戲中的人物屬性面板,然后再重新打開,有些游戲人物面板的數據不是實時讀取人物數據的,需要把人物面板關了重新打開,重新打開之后人物面板中的血量如果變成了下圖中的值就說明下圖中0x22F8B664A78這個內存地址就是人物血量的地址
然后之前找坐標的時候是有一件事,就是當時使用x坐標的數據進行的查找,找到x坐標之后,如下圖使用瀏覽相關內存區域可以看到x坐標、z坐標、y坐標這三個數據,這說明同樣的數據會放到一起,所以找到了血量就找到了,人物屬性中其它的數據
如下圖使用血量的地址瀏覽相關內存區域,下圖紅框中都是人物的屬性,有最大生命值、藍量、最大藍量、攻擊力、防御力等,這些數字都能在游戲中的人物面板中看得到
然后找到地址之后找它的基地址,然后就來到x64dbg,首先打開x64dbg,打開之后如下圖點擊附加
然后如下圖紅框通過標題和路徑,去找受害者程序
附加受害者程序之后,鼠標左鍵單機下圖紅框位置,下圖紅框位置是內存窗口
然后按CTRL+G,會彈出下圖紅框的彈框,然后輸入血量的地址,然后點確定
如下圖紅框,內存窗口就會跳轉到血量的地址
然后使用硬件訪問斷點,找它的基址,如下圖設置硬件訪問斷點
設置硬件訪問斷點之后會發現沒反應,這時候關閉人物屬性面板,重新打開,會發現硬件訪問斷點觸發,觸發之后來到下圖位置
然后刪除硬件訪問斷點,首先點擊下圖紅框位置
然后鼠標右擊要刪除的硬件斷點,刪除后可以防止因為它亂斷導致我們找錯位置
然后點擊下圖紅框位置
然后在下圖紅框位置的代碼訪問了血量,rax+0x2978訪問了血量
然后rax的值來自于下圖紅框位置,來自于[rbx+0x18],現在的公式[rbx+0x18]+0x2978
rbx的值來自于rcx,現在的公式[rcx+0x18]+0x2978
然后在斷點狀態下,使用在內存窗口按CTRL+G輸入公式跳轉驗證一下,如果跳轉的位置還是血量的地址就說明公式正確,如果不是血量的地址就說明某個地方寫錯需要重新觀察,這里的公式是正確的
然后再找rcx的值哪來的,rcx的值是來自于上一層,然后鼠標左鍵雙擊下圖紅框位置
打上斷點
然后關閉人物屬性面板重新打開,讓斷點觸發,如下圖觸發之后鼠標左鍵雙擊下圖紅框位置,取消斷點
取消斷點之后按CTRL+G再按F8來到下圖紅框位置,可以看到rcx的值來自于rsi,所以現在的公式[rsi+0x18]+0x2978,記得驗證一下公式是否正確
然后再找rsi的值,然后往上翻看到rsi的值來自于[rsi+0x1B0],現在的公式[[rsi+0x1B0]+0x18]+0x2978
然后再繼續找rsi的值哪來的,如下圖紅框rsi的值來自于[rax+0x98],現在的公式[[[rax+0x98]+0x1B0]+0x18]+0x2978
然后再找rax的值哪來的,如下圖紅框,rax的值來自于基址0x00007FF6A2AACD70,現在的公式[[[[0x00007FF6A2AACD70]+0x98]+0x1B0]+0x18]+0x2978
模塊的地址
然后計算偏移Game.exe+0x93CD70
最終的公式:[[[[Game.exe+0x93CD70]+0x98]+0x1B0]+0x18]+0x2978
上一個內容中找到的公式是:
[[Game.exe+0x93CD70]+0x98]+0x1B8,可以發現人物屬性的基址個上一個內容中人物狀態的基址是同一個,只是所在層級不一樣
[[Game.exe+0x93CD70]+0x98]+5C是x坐標
[[Game.exe+0x93CD70]+0x98]+60是z坐標
[[Game.exe+0x93CD70]+0x98]+64是y坐標
[[Game.exe+0x93CD70]+0x98]+1B8是人物狀態
其它數據的偏移:
一個數據是4字節,也就是說[[[[Game.exe+0x93CD70]+0x98]+0x1B0]+0x18]+0x2978到[[[[Game.exe+0x93CD70]+0x98]+0x1B0]+0x18]+0x2978+0x4之間是血量的數據
然后
[[[[Game.exe+0x93CD70]+0x98]+0x1B0]+0x18]+0x2978+0x5
到
[[[[Game.exe+0x93CD70]+0x98]+0x1B0]+0x18]+0x2978+0x9位置又是一個屬性的數據,其它屬性以此類推
如果血量的數據是4字節其它的數據一般也都會是4字節,現在只需要知道這些剩下的慢慢看后面都會寫