Cheat Enginee(CE)修改器详细教程
文章目錄
- CE 介紹
- 安裝教程
- 漢化教程
- Cheat Engine 訓練教程
- 附加進程
- 精確值掃描
- 未知的初始值
- 浮點數的掃描
- 代碼替換功能
- 關于指針尋找
- 代碼注入
- 多級指針
- 查找共享代碼
CE 介紹
Cheat Engine ,簡稱CE,是逆向工程師常用的幾大神器之一,也是游戲漢化、破解以及外掛編寫中常用的工具,其功能包括:內存掃描、十六進制編輯器、調試工具,可以進行反匯編調試、斷點跟蹤、代碼注入等諸多高級功能。
它還附帶了調試器、反匯編器、匯編器、變速器、作弊器生成、Direct3D操作工具、系統檢查工具等。
支持 lua 語言,可以實現自己定義的邏輯功能,而不僅僅是簡單的鎖定數據。也可以在代碼注入的同時注入 lua 插件,使游戲進程與 CE 進程進行交互。 CE 的大部分功能都可以通過 lua 來操作。
它還支持 D3D Hook 功能,可以在游戲中顯示十字準星,也可以繪制功能菜單,同時也可以對 D3D 的調用棧進行跟蹤調試。
自帶變速功能,通過 Hook 游戲相關函數改變游戲速度。
自帶了一個 Trainer 的功能,可以將自己在 CE 中實現的功能單獨生成一個 exe 文件,并可以使用 lua 創建比默認樣式更加復雜的窗體或功能。
安裝教程
下載鏈接:https://www.cheatengine.org/downloads.php
點擊后即可自動跳轉到下載安裝文件,點擊下載完成的exe文件,選擇語言為English,分別點擊next -> accept直到安裝完成即可。
漢化教程
安裝完成后,在官網頁面下載中文漢化包并解壓
右鍵點擊桌面CE圖標,選擇“打開文件所在位置”,將解壓的漢化包復制到languages文件夾中。
重啟CE后,點擊最上面一欄的Edit,選擇Settings。
來到設置頁面后,按下圖所示,依次點擊,重啟CE后,即可為中文版。
Cheat Engine 訓練教程
附加進程
按照CE自帶的訓練教程,我們開始第一步。
附加進程后的界面如下
精確值掃描
第二關的作用還是很簡單的,主要目的是遍歷出我們想要的動態數據,比如角色的生命,人物的魔法等,都會用到精確掃描,可以說這一關是既簡單又實用的東西,也是今后制作中最常用的環節.
簡單描述的意思就是,需要將100這個數值修改為1000則本關就算通過。我們首先嘗試搜索數值100,默認情況下一般游戲就是4字節,這里不需要改動掃描類型和輸出類型,默認就好了。點擊首次掃描,看看會出現什么結果。
這次掃描我們得到 49個結果,里面肯定有我們要找的那個血值,但是找下去有點復雜,我們繼續往下看。
我們再次回到Tutorial頁面,點擊“打我”,可以看到數值變化為97。
我們再次搜索數值97,得到一條結果。
此時地址欄里面只有1個結果了,這個就是我們要找的內存地址,雙擊將其加入到地址欄。
在數值95上面雙擊,并修改把 97 改成 1000 點擊確定按鈕。
回到教程后,即可發現“下一步”按鈕亮起,點擊即可通關。
未知的初始值
本關主要用來搜索進度條,人物血條等,因為這些數據通常是一個進度條,我們無法直接看到的數據,此時可以通過變更的數據一步步篩選找到動態地址。
點擊新的掃描,選擇未知的初始值,點擊首次掃描。
顯示有927744條結果,由于結果太多,所以CE未列出來。
老辦法,回到 Tutorial.exe ,點擊打我 ,CE會告訴你血量減了多少,比如 -3。
我們換個思路,假設CE沒告訴我減少了多少或者我們根本沒看清,這時應該怎么辦呢?
血量減少=>CE搜索減少的數值
血量不變=>CE搜索不變的數值
血量增加=>CE搜索增加的數值
這樣反復篩減,就能很容易找到最終的結果。
雙擊把地址加到地址欄,然后更改數值為5000。
浮點數的掃描
在掃描浮點數時,我們需要將數值類型改為浮點數,浮點數掃描時不必輸入后的小數 97.0000 掃描時輸入97就可以了。
將地址雙擊加入地址欄,修改數值為5000即可。
接著搜索雙浮點數,也就是找到彈藥的內存地址。
按照上面相同的步驟,修改數值為5000。
修改完數值后,點擊下一關即可。
浮點數的長度是4字節,使用4字節也可搜索到浮點數,但需要使用模糊搜索。
雙浮點數的長度是8字節,使用8字節也可搜索到浮點數,但需要使用模糊搜索
現在好多游戲都采用浮點數來處理。例如在掃描游戲時發現一個數值是 1120403456 ,這時候就要想到它是浮點數。
4字節的 1120403456 = 浮點數的 100 ,目前的游戲大多以4字節(含浮點數)為主。
代碼替換功能
首先先找到血量的內存地址,然在地址上右鍵=>找出是什么改寫了這個地址。
在彈出的小窗口中點擊YES按鈕 ,會彈出一個如下所示的小窗口,這個窗口此時沒有任何數據。
然后我們回到教程中,點擊教程中的 改變數值 按鈕。會出現如下代碼mov[eax],edx不用管他的意思。
小窗口中會出現一行代碼,選中代碼,然后點擊替換按鈕。
回到教程后,點擊改變數值,發現按鈕失效。繼續點擊下一步,即可通關成功。
改變數值按鈕其實是通過 代碼 0045aecb - 89 10 - mov [eax],edx 來實現數值改變的。我們的最后一步操作就是要把這行代碼替換成什么也不做【英文是 Nop】,這樣就會讓按鈕的功能失效。
關于指針尋找
首先還是之前一樣,我們先找到數值的動態地址。
找到血量的地址后,加入到地址欄,然后在地址上按右鍵=>找出是什么改寫了這個地址,然后點擊”改變數值“按鈕,出現一行代碼【見第五關】,雙擊那行代碼【或者點擊詳細信息】。
然后出現一個信息框,具體的代碼是什么意思不需要明白,CE會告訴你下一步該做什么。
CE讓我們下一步找 017F3FA0 【每個人電腦顯示可能不是相同的地址,因為它是動態地址】,繼續操作。
返回到CE,點擊新掃描,先勾上HEX,填入 017F3FA0 ,點擊首次掃描。這個地址 006566B0,就是基址。在CE中顯示綠色的地址是基址,黑色的地址是動態地址。
手動添加一個指針,點擊 手動添加地址。按接下來圖示操作,點擊確定即可。
注意看:指針在地址欄顯示的是 p-> 地址 這種類型的
我們將數值改成5000,再點擊前面的鎖定,激活讓其永久生效。
然后點擊教程中的“改變指針”按鈕,下一步按鈕亮起,這關就可以過了。
補充:
并不是所有的游戲都要找基址然后做指針,有的游戲直接就是基址;
基址是綠色的,如果找到最后有多個綠色地址,在一般情況下選擇第1個。
代碼注入
我們還是老規矩,先找出血量的地址。
在地址處點擊右鍵,選擇“找出是什么改寫了這個地址”
點擊教程中的“打我”,會出現這樣一行代碼,>>00427B13 - sub dword ptr [ebx+000004A4 ],01。這條指令的作用是,將血量地址中的數據減1,sub為減法的匯編格式。
我們接下來的操作需要將減一改為加二。選擇反匯編程序,如下步驟。
點擊工具,選擇自動匯編。
點擊模板,選擇CT表框架代碼。
點擊模板,選擇代碼注入。
跳轉到一個代碼注入模板窗口,選擇默認地址即可。
點擊OK,即可自動生成如下代碼,找到關鍵一行代碼。
將代碼sub dword ptr [ebx+000004A4],01改為add dword ptr [ebx+000004A4],02 即可。
然后我們就可以看見地址欄有如下一行腳本。
點擊教程中的“打我”按鈕,可以看到“下一步”的按鈕亮起,即可成功到下一關。
多級指針
這一關可以看作是第六關的加強版,老規矩,我們先找血量地址。右鍵,點擊“找出是什么改寫了這個地址”。
回到教程中點擊“改變數值”,查看匯編指令的詳細信息。
ESI+ 18 =018C0B90 就是血量的地址,偏移地址為18。也就是說。想找到血量的地址就要找到ESI,注意看了圖中一行字:要查找地址的指針數值可能值是 018C0B78。
查找一級指針:我們接下來找ESI,按下圖操作找出ESI地址。
在地址處點擊右鍵,選擇“找出是什么訪問了這個地址”。
點擊教程中的“改變數值”按鈕,會發現出現兩條指令。
左邊一條是關于CPU的,我們重點關注第二條指令。
這條指令中,我們可以將偏移地址默認為0。我們發現指針數值上一次提示的一樣。CE 默認使用硬件斷點的方式,斷點只能停在指令執行之后,而這條指令正好是把 ESI原來指向的地址中的值再賦值給 ESI,所以執行之后 ESI 的值已經是被覆蓋掉的值了,而我們想知道的恰恰是執行這條指令之前的 ESI 值,ESI 就是這個我們監視的地址,所以直接搜索這個地址即可。
將得出的新地址,右鍵選擇“找出是什么訪問了這個地址”。
二級偏移是 0 ,下一個目標是 0169B5E0。
查找二級指針:接下來使用查找一級指針的方法
三級級偏移是 14 ,下一個目標是 0195C1C0
查找三級指針:繼續搜索動態地址
查找四級指針,直至找出基地址
這些地址,除基地址外,都是隨機變動的。
在CE中顯示綠色的地址是基址,黑色的是動態地址。如果有多個綠色地址,一般情況下我們選擇第一個。
我們已經找到了所有地址,串一下就是:006566E0+C+0=14+18,最后添加指針并測試。
最后鎖定數值為5000,點擊“改變指針”按鈕,會提示你需要在3秒內將數值改為5000。3秒內將數值改為5000,即下一步按鈕亮起,本關通過。
查找共享代碼
首先我們老規矩,找出四個人物的血量地址。
我們可以分別在每個動態地址上面,右鍵選擇“找出是什么改寫了這個地址”,會發現這四個地址都指向了同一條匯編代碼,這也就說明了使用了共享代碼。
我們在每一個任人物對應的地址右鍵,選擇“瀏覽相關內存區域”,對比四個地址找到規律。
我方隊伍:
對手隊伍:
上面的四個圖片可以看出,名字的開頭字母來決定,如果是D或E開頭,則說明是隊友不能讓其掉血,否則的話則直接執行扣血代碼?;蛘呙總€人血量后+C可以明顯分出是敵是友,為1就是友軍,為2就是敵軍。
接下來我們開始注入代碼。
模板 -> 代碼注入
加入這三行代碼:
執行以后,點擊重啟游戲并自動執行,即可看到下一步按鈕亮起,即本關通過。
總結
以上是生活随笔為你收集整理的Cheat Enginee(CE)修改器详细教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派——实时时钟模块(RTC)
- 下一篇: html 中 em