程式執行後:這程式會一直跑
開啟我的cheat engin的
可以看到上面已經加載了
點選左上角那個可以找尋進程 選擇你的main.exe按開啟
我們已經列印出a的變數記憶體位置
點這裡可以看到記憶體位置再來點右鍵
填入你的位置0x6ffe4c
可以發現你的變數位置在這裡現在回到這畫面
看右邊又個按鈕add address manually
輸入你的0x6ffe4c ,按下ok
這邊按右鍵選擇你的變數可以看誰在訪問你的變數現在回到你的程式繼續動作
按下後你可以看到你這邊已經有變動了
因為你的程式去訪問你的變數去做cmp現在來往上追蹤
把它紀錄下來,0040156D記住這位置回到
這邊在goto 0040156D 可以看到他跳到這裡
你仔細比對跟組合語言比對一下他把變數rbp-04這位置指向的是你的變數位置他把它移到暫存器eax 然後再cmp eax跟 1 比對看如果相符這邊我們就可以來做一些變動了
把eax比對那邊設為0看會發生什麼事
這邊更改過後再去看你程式碼看會發生什麼可以發現
這邊
只是小小的展示,要如何要繞過遊戲防護呢,你可以進行dll injection
這些注入到目標主程式的記憶體讓目標主程式的記憶體已為他是自己的我們可以自己寫個dll再注入到遊戲裡面,在記憶體修改的方面的話每次開機的話你的記憶體都會不一樣,這樣的話你的dll可以做基址的定位為什麼要做定位呢,每次記憶體都會不一樣,像是你腳色血量,你如果位置都寫死的話你這次寫的外掛可以,位置都寫死位置到下次開機所有的位置你可能要重寫了,所以要做基址的定位
要怎樣用呢比如說你注入到遊戲的dll位置一定是固定的,假如說你這次的遊戲血量是0x1234 ,你注入到遊戲的記憶體位置是0x1000 那你的記憶體修改的位置可以寫為 0x1234-xxxx.dll = 234也就是你的位移量,你這邊的話你的位置就可以xxxx.dll+234當然系統也不會讓你這好破解,也會有一級指針,二級指針,三級指針等等
vc++寫的dll注入器+dll檔_sourcecode_在mega
這邊記憶體修改就差不多了更深入的話可以google
反外掛的原理會對遊戲進行字串的掃描,和對user mod 和 kernel mod層那邊進行函數的攔截,破解反外掛的機制呢你可以選擇寫個驅動還是進行ssdt那邊進行函數的替換這邊太高端無法進行研究。
這些原理只能套在x86 也就是32位元下才有用。
還有另一種的方法就是虛擬機vm在虛擬機下開啟外掛和遊戲,你在外面對vm做修改這是你就可以對反外掛和遊戲上下其手,隨便你怎樣修改了。