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