Cheat Engine 教程( 1 - 9 通关 )
ce 修改器綠色版(cheat engine):http://www.downcc.com/soft/21673.html
這個教程全部是來自?Cheat Engine?軟件的中的幫助教程
點擊教程(64位):
歡迎使用 Cheat Engine 訓練教程 (3.3)
本教程將嘗試講解在游戲中作弊的一些基本知識. 并幫助你熟悉 Cheat Engine 的使用方法 (簡稱為CE). 請按下面的步驟開始.
- 1: 首先要打開Cheat Engine (如果你還沒有運行它的話).
- 2: 然后點擊"打開進程"圖標(左上角那個帶有電腦的圖標,且位于"文件"下方.).
- 3: 當進程列表窗口打開后請在列表中找到這個教程程序. 它類似于 "00001F98-Tutorial-x86_64.exe" or "0000047C-Tutorial-i386.exe". (前面的8位數字/字母可能會有差異.)
- 4: 如果你找到了這個進程就點擊它, 然后點擊 "打開" 按鈕. (現在暫時不要理會其它的按鈕,如果你有興趣的話,以后再研究它們.)
恭喜你! 如果以上步驟沒什么意外的話, 進程列表窗口將會消失并且在 Cheat Engine 主界面的上方會顯示選擇的進程名稱.?
好了,點擊"下一步"按鈕進入下一個步驟
步驟 2: 精確值掃描
現在你已經用 Cheat Engine 中打開了教程,為我們下一步的練習做好了準備。
你可以在本窗口的左下方看到顯示的"健康:XXX",在你每次點擊"打我"按鈕時,它的值便會減少。要進入下一關,你必須找到這個數值并把它改成 1000 。
很多方法都可以找到這個數值的位置,但我將告訴你一個最簡單的方法,"精確數值"掃描:
首先確認數值類型是設置為2字節或4字節,設置成1字節也可以的,不過最終修改數據的時候便會有點麻煩了(雖然說這是很容易解決的問題)。假如該地址后邊的字節數值都為 0 ,
那么你設置成8字節也未嘗不可,
在這我們就不必賭一把了。單浮點數,雙浮點數,以及其他的掃描方法在這里行不通的,因為它們儲存數值的方式不同。
當數值類型設置正確后,確認掃描類型設置了"精確數值",把健康值填寫在數值的輸入框,并點擊"首次掃描",稍等一會兒(假設你的電腦非常的慢),掃描完畢,掃描的結果將會顯示在主界面的左側。
如果檢索結果多于一個,你無法確定哪一個是正確的地址,那么繼續點擊"打我",并將變更后的"健康值"填寫在數值輸入框中,點擊"再次掃描",重復這些步驟,直到你能確認已經找到了地址(在地址列表中只有一個地址)。
好,雙擊左側列表中的地址,該地址便會移動到下方的地址列表中并顯示它的當前數值。
提示:如果你在掃描過程中出現了錯誤,可以點擊"新的掃描"重新再來。
當然,你也可以點擊"打我"去查找一些更有價值的線索。
掃描之前?值?是 100,在?CE?中選擇 "?精確數值 "?掃描類型,數值?為 100,然后點擊 首次掃描,左邊會出現所有掃描結果。
在點擊 "打我",健康會發生變化。(我電腦上變為 95 )
再在?CE?中?搜索 95
雙擊結果,會添加到下面的地址列表,雙擊下方地址列表中的數值(或者選擇它,按下回車),填寫你要修改的數值:1000 。
如果操作正確,"下一步"按鈕將變成可點擊狀態,本關就完成了。
注意:當點擊 "再次掃描"?時,會在 "前一次掃描的結果"?的?基礎上,再次進行掃描。
步驟 3: 未知的初始值
OK, 看來你已經理解了如何利用"精確數值"掃描查找數值了,讓我們進行下一步。
首先說明下重點:因為你要進行的是"新的掃描,所以你必須首先點擊 "新的掃描" 才能開始一個"新的掃描"。
( 你一定認為這很簡單,但是有很多人困在這一步啊 ) 所以請記住這一步驟。如果你已經點擊了"新的掃描",讓我們繼續。
在上一關中我們知道初始數值的大小,所以我們可以利用"精確數值"掃描,但本關中僅有一個狀態欄,我們并不知道它的初始數值。我們只知道這個數值在0到500之間,并且每次點擊"打我"之后便會減些健康值,每次減少的健康值會顯示在進度條的上方。
同樣有好幾種方法可以找這個數值,(例如使用"數值減少了..."掃描方式),但我只教你最簡單的方法,"未知的初始值"和"減少的數值"。?
由于不知道當前數值的大小,"精確數值"掃描便派不上了用場,所以選擇掃描方式"未知初始數值"。數值類型仍然選擇 4 字節(這是因為大多數WINDOWS應用程序都使用 4 字節存放數據)。點擊"首次掃描"并等待掃描結束。
掃描完成后,點擊"打我",你會減少一些健康值。(減少的健康值顯示幾秒便會消失,你并不需要刻意記下它)。
回到 Cheat Engine,在掃描類型中選擇"減少的數值",然后點擊"再次掃描"。
掃描完畢后,再次點擊"打我",并重復上述步驟,直到檢索出很少的幾個地址。?
我們已經知道這個數值在0到500之間,所以挑出那個最為相似的地址,并將它加到下方的地址列表。
現在,更改健康值為 5000,以便我們進入到下一關。
步驟 4: 浮點數
在前面的教程中我們使用字節的方式進行掃描,但有些游戲使用了"浮點數"來存儲數值(這么做是為了給菜鳥制造一些麻煩,讓他們沒那么容易修改游戲)。
浮點數是帶有小數點的數值(如 5.12 或 11321.1)。
正如本關中的健康和彈藥,兩者都以浮點方法儲存數據,不同的是,健康值為單精度浮點數,而彈藥值為雙精度浮點數。
點擊"打我"將減少一些健康值,而點擊"開火"則消耗掉 0.5 的彈藥。
你得把這兩項都修改到 5000 或者更多才能過關。
"精確數值"掃描的方式雖然也可以完成本關的工作,但你應該試試其它更簡練的掃描方式。
提示: 掃描雙浮點數類型建議禁用 "快速掃描"?
循環上面步驟完成關卡。
步驟 5: 代碼查找
某些游戲重新開始時,數據會存儲在與上次不同的地方, 甚至游戲的過程中數據的存儲位置也會變動。在這種情況下,你還是可以簡單幾步搞定它。這次我將盡量闡述如何運用"代碼查找"功能。
下方的數值每次啟動教程的時候都會存放在內存不同的位置,所以地址列表中的固定地址是不起作用的。
我們要先找到這個數值當前的存儲地址(要如何去做,相信不用我再啰嗦了)。
這里可以使用 "精確數值"?進行掃描進行快速定位。(也可以使用其他類型掃描)
當你找到了地址就添加在下方的地址列表中,然后右健單擊該地址,在彈出的菜單中選擇"找出是什么改寫了這個地址",將彈出一個空白的窗口。
接著點擊本教程窗體上的"改變數值"按鈕,并返回 Cheat Engine 。如果操作沒問題 在剛才彈出的空白窗口中會出現一些匯編代碼。
選中代碼并點擊"替換"按鈕,將它替換成什么也不做的代碼(空指令),匯編的空指令為 nop,同時,修改后的代碼也將放置在"高級選項"的代碼列表中去(保存地址列表時會同時保存)。
點擊"停止",游戲會以正常的方式繼續運行下去,點擊"關閉"按鈕,關掉窗口。
現在,再次點擊教程窗口上的"改變數值",沒問題的話,"下一步"將變為可點擊的狀態。
提示:如果你以足夠快的速度鎖定住該地址,"下一步"按鈕也會變為可點擊的。
步驟 6: 指針
指針圖解:
定義變量就是為變量開辟一個內存空間,并把這個內存空間命名為所定義的變量,即 變量 就是 內存空間 的 名稱
char a;定義了一個變量?a, 變量?a 所在的內存單元叫?a。
char* pa = &a;???定義了一個指針變量 pa,pa?所在的內存單元叫?pa,里面保存的值是?變量a?的內存單元地址。
這一關相當重要,大家一定要多多練習(學會前六關,你已經可以修改大部分的游戲了)
CE傻瓜教程六:指針:CE傻瓜教程六:指針 - 百度文庫
CE中顯示綠色的地址是 基址,黑色的地址是動態地址
上一步闡述了如何使用 "代碼查找" 功能 對付 變化位置 的 數據地址,但這種方法往往不能達到預期的效果,所以我們需要學習如何利用指針。
在本關的 Tutorial.exe 窗口下面有兩個按鈕,一個會改變數值,另一個不但能改變數值而且還會改變數值在內存中存儲的位置。
這一步,你不需要懂得匯編,但如果懂的話會很有幫助。
首先找到數值的地址,然后再查找是什么改寫了這個地址。
再次改變數值,CE 便可以列出找到的匯編代碼。 雙擊一行匯編代碼(或選擇它并點擊"詳細信息")并打開"詳細信息"窗口以顯示詳細的信息,用來告訴你當這個指令運行時發生了什么事情。
如果在這條匯編指令中沒看到方括號([])的存在,我們就應該查看下一條匯編代碼的詳細信息,
如果看到了方括號,那很可能表示我們已經找到了需要的指針。
返回到主 cheat engine 窗口 (只要你愿意,你可以保持這個額外的信息窗口為打開狀態。如果你要關掉它,那么要記好方栝號中間的代碼)并做一次 4 字節的掃描,掃描"詳細信息"窗口中告訴你的一串十六進制數值。
掃描完成時它可能返回一個或幾百個地址。大多數時候你需要的地址將是最少的一個。現在點擊"手工添加地址"按鈕,并勾選"指針"選項。
"添加地址"窗口將發生變化,多出了"Address of Pointer(指針地址)"和"Offset (Hex)(偏移量(16進制))"的文本框,以便您鍵入一個指針的地址和偏移量。
請盡量填入剛才掃描到的地址。
如果匯編指令中的方栝號里存在計算(例如:[esi+12])則把數值部分填在"Offset (Hex)"的文本框中,如果不存在,則讓它保持為 0 。
如果看上去是更復雜的計算指令的話(舉例說明一下):
[EAX*2+EDX+00000310] eax=4C 并且 edx=00801234.
這種情況下 EDX 便是數值的指針,而 EAX*2+00000310 則是它的偏移量, 所以你要填在"Offset (Hex)"的將是 2*4C+00000310=3A8。(這些都是在十六進制下計算的,你可以使用WINDOWS的計算器,在科學方式下用十六進制計算)。
回到教程,點擊"確定"這個地址便會加到 CE 主窗口下方的地址列表中,如果沒做錯,在地址欄將顯示 P->xxxxxxxx,而 xxxxxxxx 和你掃描到的地址數值是一致的,如果不一致,那么可能是哪里出錯了。
現在, 改變那條指針地址的數值為 5000 并鎖定它,然后點擊 Tutorial.exe 窗口上的"改變指針"按鈕,如果一切正確,"下一步"按鈕將變為可點擊狀態。
備注:你也可以使用"指針掃描"的方式來查找這個指針地址。
改變數值:
先精確值搜索 450:
在改變值,再次搜索:
然后 右鍵 -> 是什么改寫了這個地址,再次 改變數值:
搜索?十六進制的數值:
發現有變綠色的,這個就是?基址地址,然后添加指針:
添加?描述:
改變指針:
按圖上所示,即可通過本關
步驟 7: 代碼注入
代碼注入是將一小段你寫出的代碼注入到目標進程中并執行它的技巧。
在這一步教程中,你將有一個健康值和一個每按一次將減少 1 點健康值的按鈕,
你的任務是利用"代碼注入",使你每按一次按鈕就增加2點的健康值。
查找這個地址,然后看看是什么在改寫它( "找出是什么改寫了這個地址" )。
當你看到那條減少數值的匯編代碼后,選擇"顯示反匯編程序",
顯示反匯編的結果:
然后打開 "自動匯編窗口"( 菜單 -> 工具 -> 自動匯編 或 按下快捷鍵 Ctrl+a ),選擇 "模板" 中的 "代碼注入"。CE 將自動生成一部分匯編代碼并為你輸入指令做好準備(如果 CE 沒有給出正確的地址,你也可以手工輸入它)。
注意 alloc 這部分代碼,它會為你的代碼分配出一小塊空白的內存,過去,在 Win2000 之前的系統,這種行為存在安全隱患,很可能導致系統崩潰,幸運的是,這種情況在 win2000 以后的操作系統得到改善。
也要注意 line newmem: 、originalcode: 以及用文本"此處放置你的代碼"標示出的空白部分
正如你猜測的, 在這兒可以寫下每次增加2點健康值的代碼。
在這種情況下推薦你使用 "ADD" 匯編指令,
下面是一些示例:
"ADD [00901234],9" 使 [00901234] 地址的值增加9
"ADD [ESP+4],9" 使地址指針 [ESP+4] 的值增加9
在本關的情況下,你可以使用相同的手法處理減少健康值的那條原代碼方括號之間的部分。
- 提示 1:推薦你從原代碼中刪除減少健康值的那行代碼,否則你得加 3 點健康值(你增加了3點,原代碼減去1點,最終結果才會增加2點),這樣看上去很容易讓人迷惑,但最終方案還是由你來決定好了。
- 提示 2:某些游戲中,原代碼可能在多條指令之外,有時候(并非一向如此),它可能由不同的地方跳轉至你的指令中并結束運行,其結果可能引起未知的錯誤;如果出現了這種情況,通常應當查看附近的那些跳轉指令,進行修改,或者嘗試使用不同地址進行代碼注入,確認無誤后便可以將你修改的代碼注入到原代碼中了。
步驟 8: 多級指針
在這一步將解釋如何使用多級指針。在第 6 步,你已經清楚 1 級指針的概念和用途,并可以利用數值的首個地址找到存放數據真正的基址。在本關中,你將看到 4 級指針,它由第一個指針指向第二個指針,再由第二個指針指向第三個指針,由第三個指針指向第四個指針,最終指向健康值的真正地址。
開始的幾步與在第 6 步中的操作基本相同。找出是什么訪問了這個地址,然后分析匯編指令,查找指針地址中的數值,以及它的偏移量,將它們記下來。但這次你按數值找出的仍然是一個指針,你得依據這些數值,使用同樣的操作方法找出指向這個指針的指針。看看是什么訪問了你發現的那個指針地址,分析匯編指令,留意可能的代碼和偏移量,并加以利用。
持續這種過程,直到不能更進一步查找為止(?通常基址為靜態時,地址將以綠色標示?)。
點擊"改變數值"改變健康值,
如果你發現列表中那些指針地址所指向的值發生同樣的變化時,那表示你可以試著將基址中的值更改為 5000,并鎖定它,以便完成本關的任務了。
- 備注1:? ?本步驟也可以使用自動匯編程序腳本或者使用指針掃描器加以解決。
- 備注2:? ?在某些情況下,可以改變 CE 軟件 "代碼查找" 的相關設置。當你遇到類似于 mov eax,[eax] 的指令時,調試程序將顯示改變之后的寄存器中的值,也許利用它更容易找出指針的位置。
- 備注3:? ?你還在讀?!當你查看匯編指令時你可能已經注意到,這些指針是在相同的代碼塊(相同的程序,如果你懂匯編,可以查看程序的起始代碼)位置被讀寫。這種情況并不總會發生,但是當你在查找某個指針遇到問題的時候,沒準能起到很大的用處。
首先是 找出是什么改寫了這個地址,后面都是?找出是什么訪問了這個地址。因為是從后往前推,所以是先找出改寫,后面都是找出訪問。
分析:
然后 ,新的掃描,16進制,搜索上面的地址?01613A50 ,
再次搜索 16進制地址 016139D0
在繼續搜索 16進制地址:015FADA0
下面最后一步,添加指針:
然后點擊?更改指針,到此,第八關通過。
步驟 9: 注入++?之?共享代碼
這一步將會解釋如何處理游戲中的共用代碼, 這種代碼是通用在除了自己以外的其他同類型對像上
常常你在修改游戲的時候, 你找到了一個單位的健康, 或是你自己角色的健康, 你會發現一種情況: 如果你把健康相關代碼移除的話,其結果是你的角色無敵, 但你的敵人也無敵了。在這種情況下, 你必須想辦法區分自己與敵人。
有時候很簡單, 你只要檢查最前面的4個字節(函數指針表), 它通常指向一個獨一無二的地址, 代表著游戲玩家角色,而有的時候它是一個團體號碼, 或者也可能是一個指針, 它指向另一個指針, 該址針又指向下一個指針,搞不好還指向下下一個指針, 最后指向一個玩家名字。總之完全取決于游戲的復雜度, 以及你的運氣
最簡單的方法是以 "找出是什么改寫了這個地址" 去找出游戲代碼,然后使用 "分析(新/舊)數據/結構"的功能去比較兩種結構。(你的單位和敵人的單位)然后看看是不是可以找到一個區分兩者的方法。
當你找到如何區分你和電腦單位的方法后,你可以注入一段自動匯編腳本來檢查狀態,然后看是要運行游戲的代碼還是要做其他的修改。(例如一擊必殺)
另外, 你還可以用這個方法去創建一般所說的 "字節數組" 的字串, 它可以用來搜尋并產生一份所有你的單位或是敵人單位的列表
在這個教程中, 我已經實現了你將會玩到的最驚人的游戲。這個游戲有4個玩家。2個屬于你的陣容, 另外兩個屬于電腦方。
你的任務是找到改寫健康的代碼,并且修改以至于你可以獲得勝利,但 "絕不能" 使用鎖定 HP 的方法.
完成修改以后,請按? "重新啟動游戲并自動執行" 來測試你的修改是否正確
提示1: 健康是一個單浮點數
提示2: 解法不只一種
圖示步驟:
先看?玩家1,健康值 100,"?精確數值?"?搜索,數值類型默認 " 4?字節 ",發現搜索不出來,說明要搜索的數值不是4字節的int?類型,這時候就需要改變?數值類型?為 "?單浮點?",如果單浮點搜索不出來,在繼續改成 "?雙浮點?"。如果在搜索不出來,在繼續改成其他的數值類型。(?本例改成 "?單浮點?"?之后,可以搜出來)
Cheat Engine Tutorial Step 9:https://wiki.cheatengine.org/index.php?title=Tutorials:Video_Tutorial_Step_9
注意?是 64?的 還是 32?的?
32?通關教程:
下面步驟參考:https://wenku.baidu.com/view/f62a48fb700abb68a982fb35.html
https://blog.csdn.net/lyq240919525/article/details/77096790
64?通關教程:
Cheat Engine Tutorial Guide (x64):
https://wiki.cheatengine.org/index.php?title=Tutorials:Cheat_Engine_Tutorial_Guide_x64#Step_9:_Shared_code
總結
以上是生活随笔為你收集整理的Cheat Engine 教程( 1 - 9 通关 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓逆向_9 --- log 插桩、To
- 下一篇: 移动端 爬虫工具 与 方法 介绍