CE修改器教程总结1
下面的專題是CE修改器教程的教程
個人已經熟練掌握的就略過了
-
Step 1:Exact Value scanning (PW=090453)
準確值掃描,略 -
Step 2:Unknown initial value (PW=419482)
未知值掃描,略 -
Step 3:Floating points (PW=890124)
浮點數掃描,略 -
Step 4:Code finder (PW=888899)
匯編代碼查找,參見CS420學習總結8,略 -
Step 5:Pointers: (PW=098712)
一級指針的掃描,參見CS420課程總結系列,略 -
Step 6: Code Injection: (PW=013370)
代碼注入,參見CS420課程總結系列8
注意的點:有時候我們分配的內存空間可能被游戲原代碼訪問,會導致未知錯誤,未來見到再說吧 -
Step 7: Multilevel pointers: (PW=525927)
多級指針,見CS420系列,略 -
Step 9: Shared code: (PW=31337157)
共享代碼,前面只是說了,沒有給出實戰,下面就給2個實戰例子 -
實戰例子1 – CE自帶教程
cmp [rbx+14],1 jpe exit movss [rbx+08],xmm8
我們玩家在一個陣營,敵人在一個陣營,我們血量和傷害都比敵人低,游戲回合制,所以我們必死無疑。
代碼查找,找到扣我們血量的匯編代碼,nop代替他,發現我們無敵了,但同時敵人也無敵了,說明這個造成傷害的代碼是公用的,所以我們需要寫一個判斷來確定受到傷害的是我們還是敵人。
如何判斷呢?這里可以提供一個思路。思路不唯一。
我們都知道,C++是面向對象的語言,猜想我們和敵人可能都是一個類的對象,里面或許會有陣營的變量可以用來判斷。
所以我們需要使用CE的另一個功能,數據分析。
對于一個地址,CE可以獲取它周圍的全部信息并且自動猜測數據類型,當然不一定完全準確,我們也可以手動修改。
具體操作
首先找到數據的地址,然后查找什么改寫了這個地址,找到修改代碼如下
發現是把xmm0的數據放到了rbx+8的位置,我們推測rbx就是這個人物結構體的開頭,血量放在了偏移為8的位置上。打開disassembler,tools里面選擇,dissect data/structures或者compare data/structures都行,我們這里先用dissect示范吧。
我們打開這個界面,添加組,添加4個人物的 血量地址-8 進去,然后選擇structures,define new structure,選擇size,然后CE就可以生成如下的自動猜測的結構體結構。
我們很輕松觀察到紅色代表兩個組不同的地方。
所以偏移14的地方我們發現自己隊伍數值是1,對方隊伍數值是2,不管這代表了什么,我們可以用它來區分我們隊伍和對方隊伍就可以了。
下面進行代碼注入,回到剛才的代碼,auto assemble,code injection。寫一段邏輯,是我隊伍就無敵,不是就正常打。
代碼如下:
也就是說,是我們自己就跳到exit,不是我們自己就照常傷害。
點擊重啟游戲并自動運行,我們就勝利了,我們就成功完成了CE的文本教程。
總結
以上是生活随笔為你收集整理的CE修改器教程总结1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装你自己的perl modules
- 下一篇: java统计报表日期工具类