CE修改器官方教程漢化版,區別于前款教程,官方教程中使用的是Tutorial64位程式,如下是經過翻譯后的官方檔案,
第一步:歡迎
當教程啟動時,您應該會看到類似的東西,您只需在閱讀幫助文本后單擊“下一步”按鈕即可,
在后面的步驟中保存密碼,以防崩潰(從注入中)并在以后重新啟動,

運用CE如何附加到行程
- 1.打開要附加到的行程/游戲(如果尚未打開),
- 2.打開作弊引擎(如果尚未打開),
- 3.單擊作弊引擎表單工具列中的計算機圖示,如果作弊引擎剛剛打開,它應該會閃爍,或者在作弊引擎主表單選單上選擇行程,

4.從串列中選擇行程,

5.單擊打開按鈕或雙擊該程序,您應該會在表單頂部看到行程名稱,您現在已附加到該行程,

第二步:精確值掃描
對于步驟2,您將看到類似這樣的東西,

我們需要找到的是健康,這里是一個整數,
因此,設定記憶體掃描程式以查找整數,然后進行精確值掃描,然后將該值設定為當前運行狀況值,大多數整數將存盤在4位元組變數中,因此讓我們從那里開始,
注意:整數可以存盤在 1 位元組變數(位元組)、2 位元組變數(int16/短)、4 位元組變數 (int32/int) 或 8 位元組變數 (int64/long) 中,
準備就緒后,單擊第一個掃描按鈕,

您應該在找到的地址串列中看到一個地址串列,如下所示,

現在點擊點擊我按鈕,然后重新輸入當前值,然后單擊下一次掃描按鈕,
請注意串列中的紅色值,這表示該值已更改,

單擊下一次掃描后,您可能需要繼續單擊擊中我,然后重新掃描,告訴找到的地址串列足夠小,可以使用,

只需雙擊找到串列中的地址,即可將其添加到作弊表中,然后更改值并凍結地址,雙擊地址串列中的值進行編輯,通過單擊啟用碼/凍結框將其凍結,

現在應該啟用下一個按鈕,單擊它以轉到下一步,如果下一個按鈕尚未啟用,請再次單擊點擊我按鈕,
第三步:未知的初始值
當您開始步驟 3 時,您應該會看到表單如下所示,

就像幫助文本所說的那樣,請確保在開始新掃描之前單擊新掃描按鈕,

這將清除找到的結果以開始掃描新值,
在這里,我建議繼續單擊點擊我按鈕,只是為了查看值是如何減小的,以幫助確定要掃描的值型別,

請注意,該值減小了一個整數,即非小數,
因此,我將掃描儀設定為4個位元組和未知的初始值,然后單擊第一個掃描按鈕,

現在點擊點擊我按鈕,然后將掃描型別設定為減小值,然后單擊嵌套掃描按鈕,

請注意找到的地址數量,對于當今的大多數游戲來說,這有點小,對于大多數游戲來說,找到的結果很容易達到數百萬,
現在,只需使用點擊我按鈕繼續減小該值,然后掃描減小的值,直到找到的結果足夠小,可以使用,

現在我們只需選擇一個地址并更改值以查看它是否具有所需的效果,這就是它的作業原理,
在這里,我建議您在更改值(或只是Ctrl + C)之前始終注意這些值,以便在它們不是正確的值時將其設定回去,以防止在游戲中執行此操作時更改一堆未知地址并損壞保存檔案,
一旦您將值設定為 5000,下一步按鈕應立即變為啟用狀態,更改值并單擊點擊我按鈕后,進度條應填充,但這不是必需的,

現在應該啟用下一個按鈕,單擊它以轉到下一步,如果下一個按鈕尚未啟用,請再次單擊點擊我按鈕,
第四步:浮點數
當您開始步驟 4 時,您應該會看到表單如下所示,

因此,請單擊新建掃描按鈕,然后為掃描儀設定一個浮點數,精確值,輸入當前運行狀況值,設定時,單擊第一個掃描按鈕,

因此,只需像以前一樣掃描以查找健康地址,然后將其添加到地址串列中,
現在再次單擊新的掃描按鈕,然后將掃描儀設定為雙精度值,輸入當前彈藥值,設定時,單擊第一個掃描按鈕,

因此,只需像以前一樣掃描以查找彈藥地址,然后將其添加到地址串列中即可,
現在將值更改為5000,然后下一步按鈕應變為啟用狀態,然后單擊下一步按鈕以繼續執行下一步,
第五步:代碼查找器
當您開始步驟 5 時,您應該看到表單如下所示,

因此,首先找到該值,然后將其添加到地址串列中,此時繼續保存表和密碼,以防除錯器設定不正確,
在地址串列中擁有地址后,右鍵單擊它,然后選擇找出訪問此地址的內容,

作弊引擎將提示您有關附加除錯器的資訊,只需單擊是按鈕即可,

然后將打開一個除錯器表單,現在單擊更改值按鈕,您應該獲得顯示在除錯器表單中的代碼,
我們想要的是一個書面指令,因此,我們將尋找一些類似于以下內容之一的東西:
mov [**],**
add [**],**
sub [**],**
*** [**],**
選擇寫入指令的代碼行,可以單擊顯示拆裝器按鈕以查看記憶體中的代碼,然后單擊替換按鈕,最后不要忘記單擊停止按鈕,

替換按鈕會將該行代碼替換為NOP,作弊引擎將提示您輸入它將添加到高級選項串列中的條目的名稱,
輸入名稱,然后單擊確定按鈕,

現在,單擊教程中的更改值按鈕,下一步按鈕應變為啟用狀態,然后單擊下一步按鈕以前進到下一步,
當高級選項串列中的條目被替換時,它們將顯示為紅色文本,

可以通過單擊作弊引擎主表單左下角狀態欄中的高級選項按鈕來查看高級選項串列,
要還原串列中某個條目的原始代碼,請右鍵單擊該條目,然后選擇使用原始代碼還原,

請注意,恢復后文本為黑色,

第六步:指標
當您開始步驟 6 時,您應該看到表單如下所示,

因此,首先找到該值,然后將其添加到地址串列中,
在地址串列中擁有地址后,右鍵單擊它,然后選擇找出訪問此地址的內容,

然后單擊更改值按鈕,讓行程訪問該地址,
選擇代碼以查找指標的基址時,請嘗試選擇不寫入與基址相同的暫存器的指令,
在這里,我們對方括號[]之間的值感興趣,因此這里我們需要RDX的值,

這里的偏移量是0,如果指令有這樣的東西:
mov [rdx+12C],eax
然后偏移量將為12C(0x12C),請注意,這是十六進制,
現在將掃描儀設定為8個位元組,精確值,選中十六進制復選框,然后獲取找到的值并將其作為要掃描的值,
準備就緒后,單擊第一個掃描按鈕,
在找到的地址串列中查找帶有綠色文本的地址,這些是靜態地址,

將一個添加到作弊表,雙擊已添加到地址串列的記憶體記錄的地址,復制該地址,然后選中指標復選框,然后將該地址粘貼到指標基址中,
所以我的指標看起來像["Tutorial-x86_64.exe"+XXXXXX]+0這樣,

設定指標時單擊確定按鈕,
現在將值凍結在5000并單擊更改指標按鈕,下一個按鈕應該變為啟用狀態,
如果下一個按鈕未啟用,則從找到的串列中選擇另一個地址,查找更改其值的綠色地址,并將其設定為與上一個地址一樣,并查看它是否指向正確的值,如果是這樣,請更改值凍結并單擊更改指標按鈕,
單擊下一步按鈕前進到下一步,
第七步:代碼注入
當您開始步驟 7 時,您應該會看到表單如下所示,

在這里,我們將遵循與步驟 5 相同的程序,但不是單擊替換,請單擊顯示反匯編器按鈕,

這將在指令的地址打開反匯編器視圖表單,

選中該指令后,按 Crtl+A 打開自動匯編程式表單,
在自動組裝器表單選單中,選擇模板,然后選擇完全注入,

這將生成一些腳本來啟動,

現在,我們需要添加一些將值增加 2 的代碼,然后洗掉減小該值的原始代碼,
為了增加價值,我們可以使用INC或ADD,
所以讓我們嘗試這樣的事情,
...
newmem:
add dword ptr [rsi+780],2
code:
//sub dword ptr [rsi+00000780],01
jmp return
address:
jmp newmem
nop
nop
return:
...
現在將腳本添加到作弊表,然后啟用腳本并單擊“點擊我”按鈕,
這應該啟用下一步按鈕,因此單擊下一步按鈕轉到下一步,
第八步:多級指標
當您開始步驟 8 時,您應該會看到表單如下所示,

手動迭代
在這里,我們將遵循與步驟6相同的步驟,除了我們將看到哪些內容訪問了我們找到的基址,并且我們將繼續重復此操作,直到找到靜態基址,
這是我的第一個除錯器輸出,
10002D8D1 - B9 A00F0000 - mov ecx,00000FA0
10002D8D6 - E8 3522FEFF - call Tutorial-x86_64.exe+XXXXXX
10002D8DB - 89 46 18 - mov [rsi+18],eax <<<<<<
10002D8DE - 89 C2 - mov edx,eax
10002D8E0 - 48 8D 4D F8 - lea rcx,[rbp-08]
RAX=00000000000007F7
RBX=000000000125CD60
RCX=0000000000000FA0
RDX=00000000828087F3
RSI=0000000001287960 <<<<<<
RDI=0000000100258308
RSP=000000000102F070
RBP=000000000102F0B0
RIP=000000010002D8DE
R8=0000000100161BA0
R9=00000000008E06A0
R10=0000000000000002
R11=0000000000000206
R12=00000000012607C0
R13=0000000100161BA0
R14=0000000100258300
R15=0000000100257A18
我確實在基址的第一次掃描中發現了一個靜態基數,但我記得這是一個虛假的基數,所以這里我們想要的是一個process.exe+offset形式的基址,你可以嘗試其他看起來像module.dll+offset的基址,但我想說的是,在這里它們將被證明是錯誤的指標,是的,大多數較新的游戲都會有許多錯誤的值和指標,
除錯器從地址保持輸出:0000000001287960
10002D88B - E8 90961200 - call Tutorial-x86_64.exe+XXXXXX
10002D890 - E9 65000000 - jmp Tutorial-x86_64.exe+XXXXXX
10002D895 - 48 83 3E 00 - cmp qword ptr [rsi],00 <<<<<<
10002D899 - 74 5F - je Tutorial-x86_64.exe+XXXXXX
10002D89B - 48 8B 36 - mov rsi,[rsi]
RAX=0000000000013117
RBX=000000000125CD60
RCX=000000000125CD60
RDX=0000000000003CE3
RSI=0000000002D6D540 <<<<<<
RDI=0000000100258308
RSP=000000000102F070
RBP=000000000102F0B0
RIP=000000010002D899
R8=0000000100161BA0
R9=00000000008E06A0
R10=0000000000000002
R11=0000000000000206
R12=00000000012607C0
R13=0000000100161BA0
R14=0000000100258300
R15=0000000100257A18
除錯器輸出的地址保持:0000000002D6D540
10002D845 - E8 D6961200 - call Tutorial-x86_64.exe+XXXXXX
10002D84A - E9 AB000000 - jmp Tutorial-x86_64.exe+XXXXXX
10002D84F - 48 83 7E 18 00 - cmp qword ptr [rsi+18],00 <<<<<<
10002D854 - 0F84 A0000000 - je Tutorial-x86_64.exe+XXXXXX
10002D85A - 48 8B 76 18 - mov rsi,[rsi+18]
RAX=00000000000166D2
RBX=000000000125CD60
RCX=000000000125CD60
RDX=000000000000302E
RSI=0000000002D6CE40 <<<<<<
RDI=0000000100258308
RSP=000000000102F070
RBP=000000000102F0B0
RIP=000000010002D854
R8=0000000100161BA0
R9=00000000008E06A0
R10=0000000000000002
R11=0000000000000206
R12=00000000012607C0
R13=0000000100161BA0
R14=0000000100258300
R15=0000000100257A18
除錯器輸出的地址保持:0000000002D6CE40
10002D800 - E8 1B971200 - call Tutorial-x86_64.exe+XXXXXX
10002D805 - E9 F0000000 - jmp Tutorial-x86_64.exe+XXXXXX
10002D80A - 48 83 7E 10 00 - cmp qword ptr [rsi+10],00 <<<<<<
10002D80F - 0F84 E5000000 - je Tutorial-x86_64.exe+XXXXXX
10002D815 - 48 8B 76 10 - mov rsi,[rsi+10]
RAX=000000000000B567
RBX=000000000125CD60
RCX=000000000125CD60
RDX=00000000000050A1
RSI=000000000123F1C0 <<<<<<
RDI=0000000100258308
RSP=000000000102F070
RBP=000000000102F0B0
RIP=000000010002D80F
R8=0000000100161BA0
R9=00000000008E06A0
R10=0000000000000002
R11=0000000000000206
R12=00000000012607C0
R13=0000000100161BA0
R14=0000000100258300
R15=0000000100257A18
現在我們掃描該基址000000000123F1C0,您應該找到一個靜態地址,但在實際游戲中,您將繼續前進,直到找到靜態基址,
以該靜態地址為基址,我的指標將如``[[[["Tutorial-x86_64.exe"+XXXXXX]+10]+18]+0]+18`所示,

指標掃描可以通過首先找到所需值的地址,保存生成的指標映射,重新啟動游戲,再次搜索地址,保存另一個指標映射,然后比較兩者來快速解決此問題,
找到指標后,將其凍結在 5000,然后單擊更改指標按鈕,如果您找到了正確的底座,則下一步按鈕應在大約2秒后啟用,因此,單擊下一步按鈕轉到下一步,
第九步:共享代碼
當您開始步驟 9 時,您應該會看到表單如下所示,

因此,就像幫助文本所說的那樣,解決方案遠遠不止一種,
首先,我們需要找到其中一個地址并將其添加到表中,
如果您在查找地址時遇到問題,請記住嘗試不同的值型別,并且不要忘記開始新的掃描,
然后,就像在步驟7中一樣,我們想要查看訪問地址的內容,以找到寫入參與者運行狀況的函式,
如果您想嘗試其他方式,請繼續保存密碼,這是本教程的最后一步,
因此,在這里,最好了解我們實際上在尋找什么來區分盟友和戰斗人員,
當撰寫游戲或引擎時,演員和玩家可能會這樣撰寫,
//// Actor, base for all actors
class Actor(object){
string Name = 'Actor';
Coord Coords = new Coord(0, 0, 0);
float Health = 100.0;
...
}
//// Player
class Player(Actor){ //// Player inherits form Actor
string Name = 'Player';
int Team = 1;
...
}
團隊本身可以是一個結構,比如說,如果它被宣告為一個物件類,比如Coords變數,我們希望尋找一個指向參與者團隊結構的指標,
因此,我們可以做到這一點的一種方法是在玩家結構中找到團隊ID或團隊結構,
在球員結構中查找球隊ID
找到減少生命值的功能后,右鍵單擊反匯編器視圖表單中的指令,然后選擇找出此指令訪問的地址,

然后單擊所有 4 個值的攻擊按鈕,除錯器串列中應具有所有 4 個地址,

因此,請繼續將它們添加到地址串列中,

然后,讓我們打開剖析資料結構表單,

你會得到一些彈出視窗,在想到它們之后,你應該看到這樣的表單,請注意,我必須擴展表單的寬度才能移動列,
現在在我的偏移量上,0x10被猜測為一個指標,在64位行程中寬度為8位元組,我看到0x10的指標的值看起來真的不像指標,
因此,我必須將其切換到4位元組,并添加一個新的元素集,其偏移量為具有4位元組值型別的0x14,這通常是它的作業方式,

所以在這里我們可以看到團隊變數在結構的偏移0x14,
現在我們需要向腳本添加一些注入代碼,然后添加一些代碼來檢查結構的團隊變數,以確定哪些參與者是盟友,哪些是戰斗員,
所以我們想要一些這樣的,

因此,啟用此腳本后,當游戲寫入演員健康時,以下是跳轉到鉤子代碼后將發生的事情:
- 1.保存(PUSH)RFLAGS暫存器,不是完全需要,但在比較時仍然是一個好習慣,
- 2.檢查演員是否在團隊 1 中,如果 actor 在團隊 1 中,則我們以浮點格式將新值設定為 5000,
- 3.檢查演員是否在團隊 2 中,如果 actor 在團隊 2 中,則我們將新值設定為 0,采用十六進制格式,(浮點數 0 == 整型 0 == 十六進制 0)
- 4.恢復(POP)RFLAGS暫存器,如果暫存器是PUSHed的,這是完全需要的,
啟用此腳本后,單擊重新啟動游戲并自動播放按鈕,然后您應該看到表單更改并如下所示,

因此,單擊下一步按鈕以完成本教程,然后,您應該會看到一個表單,告訴您已完成本教程,
在暫存器中發現差異
找到減少生命值的功能后,
右鍵單擊反匯編器視圖表單中的指令,然后選擇找出此指令訪問的地址,

然后單擊所有 4 個值的攻擊按鈕,
除錯器串列中應具有所有 4 個地址,

現在讓我們看看登記冊,看看我們是否能找到盟友和戰斗人員的差異,
單獨選擇每個地址,然后按 Ctrl+R,
排串列單以使其更易于比較,

因此,在這里我們可以看到戰斗人員的RSI為1,
所以像這樣的腳本應該可以作業,

因此,啟用此腳本后,當游戲寫入演員健康時,以下是跳轉到鉤子代碼后將發生的事情:
-
1.保存(PUSH)RFLAGS暫存器,不是完全需要,但在比較時仍然是一個好習慣,
-
2.檢查 RSI 暫存器是否為
- 1,如果 RSI 暫存器為 則我們將新值設定為十六進制格式的 0,(浮點數 0 == 整型 0 == 十六進制 0)
- 2,如果 RSI 暫存器不是 1,那么我們假設 actor 是盟友,因此我們以浮點格式將新值設定為 5000,
-
3.恢復(POP)RFLAGS暫存器,如果暫存器是PUSHed的,這是完全需要的,
啟用此腳本后,單擊重新啟動游戲并自動播放按鈕,然后您應該看到表單更改并如下所示,

因此,單擊下一步按鈕以完成本教程,
然后,您應該會看到一個表單,告訴您已完成本教程,
文章出處:https://www.cnblogs.com/LyShark/p/16486244.html著作權宣告:本博客文章與代碼均為學習時整理的筆記,文章 [均為原創] 作品,轉載請 [添加出處] ,您添加出處是我創作的動力!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/499535.html
標籤:訊息安全
