日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

  • 歡迎訪問 生活随笔!

    生活随笔

    當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

    编程问答

    Cheat Engine CE官方教程 [汉化]

    發布時間:2023/12/10 编程问答 43 豆豆
    生活随笔 收集整理的這篇文章主要介紹了 Cheat Engine CE官方教程 [汉化] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

    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],2code://sub dword ptr [rsi+00000780],01jmp returnaddress:jmp newmemnopnop 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 Actorstring 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的,這是完全需要的。

    啟用此腳本后,單擊重新啟動游戲并自動播放按鈕,然后您應該看到表單更改并如下所示。

    因此,單擊下一步按鈕以完成本教程。

    然后,您應該會看到一個表單,告訴您已完成本教程。

    總結

    以上是生活随笔為你收集整理的Cheat Engine CE官方教程 [汉化]的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。