CE修改器教程总结2
CE推出的游戲界面的教程,可以說是真正的游戲了。
- 第一關
我們射擊5次需要裝彈,期間敵人回復滿血,找個辦法殺了他。
思路很多,最簡單的思路就是秒殺就可以了。
我們可以memory editing ,也可以assembly editing。
未知值掃描找到敵人血量,直接改成1,射擊一次他就爆炸了。
或者找到射擊修改它血量的代碼,代碼注入
改成
mov [rax+70],0簡單粗暴有效,這是我們的行事原則,同樣的效果,盡量用最簡單方法實現。
-
第二關
任務是兩個敵人,血量傷害都比我們高。
先試試第一關的操作,血量改成1,然后射擊發現殺了一個以后,敵人暴走了,發射大子彈造成秒殺傷害,鎖血都不管用,雖然我也殺了它,顯然不滿足我們要求。
然后嘗試assembly editing
nop替代扣血指令,讓我們自己無敵,結果敵人也無敵了。
那就加一個判斷,再寫一個秒殺吧。
代碼查找,修改血量代碼如下:
猜測血量的偏移為60,使用數據分析功能(tools/dissect date)然后添加三個血量地址-60,添加結構體,分析,結果如下
很簡單地發現偏移70的位置,我們是0,敵人是1,用代碼注入寫如下邏輯,是我自己不扣血,否則都是秒殺。
-
第三關
要求板子全變成綠色,門會打開,然后去到門那里。
思路1:猜測板子綠色個數有個變量存儲,找到修改成全點亮。
實現:
確實有這個變量,改成全點亮了,然后敵人全部擠到門口了。所以先到門口,再修改,就過關了,或者找到我們自己的坐標傳送進去也行。
思路2:修改綠色數量的同時,鎖定敵人坐標。
實現:
坐標一般是float類型,使用未知值掃描,確定三個敵人的x坐標,直接鎖定,然后跑到門口。
結果不行,因為鎖定的原理其實是不停的寫數據,程序控制的敵人位置也是鎖定的,兩個都在不停的寫,敵人位置超高頻率來回跳動,我們還是過不去
思路3:修改敵人y坐標,鎖定,讓敵人去屏幕外
實現:
前面說了,y坐標一般在x坐標后4個字節的位置,不用再找了,手動添加地址就行了。
還有一個在上面,勉強可以把,能過關。
思路4:無敵
我們碰到敵人才死,所以把自己弄無敵可以了。
因為我們碰撞就會死,所以應該有一個變量儲存我們的存活狀態,一個函數執行修改,我們用nop代替試試。
先找存活狀態。
未知數掃描,找了半天,最后還剩下一百多個變量,都是存活為1,死亡為0,我們當然沒時間一個個嘗試(其實不嫌麻煩不怕崩潰,折半查找也很快能確定),換個思路,找到人的坐標,數據分析找周圍的變量來找存活狀態。
找到x坐標,找出是什么改寫了它,動一下,找到坐標的offset應該是24,數據分析添加x坐標-24,添加結構體,分析結果如下:
找到了暫停,和是否可見,死亡次數,沒有找到存活變量。
所以我們還可以用另一種方法查看直接點擊內存地址,查看周圍內存空間,右鍵地址,browse this in memory region,死亡查看哪些值在變化。
找到以上幾個有價值的變量,一個個鎖定試一下,最后一個是死亡次數。經過確定,幾個變量分別代表如下含義
鎖定了之后我們超快速重生,撞上去跟沒死一樣。
因為我們碰撞就會死,所以應該有一個變量儲存我們的存活狀態,一個函數執行修改,我們用nop代替試試。
對存活狀態地址,找出什么改寫了這個地址,死了找到兩條指令,一條應該是碰撞,另一條應該是原地復活,我們用nop代替碰撞。
發現確實不死了,但是那個代碼應該是直接弄死的。所以我們這個操作應該是屬于取消碰撞傷害,不掉血,并不是不碰撞。
思路5:取消碰撞
打開disassembler往前看兩行,發現如下代碼:
比較[rbx+40]和0,我們已經知道,這里是存的是存活狀態,不等于0的時候跳轉,我們把它改成je。會發現我們碰撞消失了,具體是什么原理我自己還沒有弄懂。匯編太菜了,要補習啊。
下面寫教程里的正確做法
break and trace那條mov代碼,這樣我們就能找到這條代碼執行前的代碼,或者說調用這條代碼的代碼。
參數設置如下
點擊ok,然后觸發那條mov,也就是碰一下怪物,等待結果。
右鍵展開結果如下
我們往上級找call,跟隨上一級的指令我們跳轉到了這里。。
這里其實已經不懂了,希望來個懂哥教我。看到可以留言你的聯系方式,我加你,或者自己慢慢未來弄明白吧,匯編還需要重新學習一下。
思路6:飛行/多級跳/超級跳
多級跳:游戲修改的思想就是,大膽猜測,然后求證。
我們在地上能跳起來,在天上不行,是為什么呢?
我們猜測應該有一個變量來判斷我們現在是在空中還是在地下,如果我們找到這個變量或者找到這個函數,我們就可以空中跳躍了。
超級跳:我們跳躍高度總是固定的。所以應該在條約函數中,有一個變量存儲了我們最高高度,英文(cap value),比較一下達到最高就讓我們下跌。
飛行:目前的思路就是飛起來以后鎖定y坐標。
既然需要判斷我們在哪里,肯定要從y坐標入手吧,找出是什么一直在訪問我們的Y坐標,發現有1條指令在我們跳起來時就不執行了。
我們在反匯編器打開這個指令,立即在周圍發現了可疑的代碼
第一處可疑的地方在于,好像在比較一個flag然后做了不同的操作,flag有可能是是否在空中的標志,第二個地方的可疑點在于這個1.45估算下來大致等于我們的跳躍高度。
我們可以先修改這個1.45試試,我們發現這個是一個綠色的基址,雙擊,在ct表中手動添加地址,類型選擇float,修改成為2.45,返回游戲發現我們可以跳得很高了,我們成功找到了cap value。
接下來把cmp的00改成01,發現我們在空中也可以跳了。
實驗完畢后,改回原來的代碼,使用代碼注入,添加到ct表,我們就可以控制hack的開啟和關閉了。
效果如下:
飛行搞明白了再繼續寫吧。
總結
以上是生活随笔為你收集整理的CE修改器教程总结2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【AGC005F】Many Easy P
- 下一篇: CMOS开关学习(一)