D.C.資訊交流網-[綜合論壇]-關閉註冊's Archiver

seep1234567890 發表於 2007-10-6 05:11

最新版 Cheat Engine 5.3。技術上功能非常強大的游戲修改器。

最新版 Cheat Engine 5.3。技術上功能非常強大的游戲修改器。

它的優點多不勝數,雖然單獨從搜索游戲里面的數值來說,它並不比其他同類軟體強多少,但它不僅僅是個游戲修改工具,它還有其他游戲修改軟體所沒有的一些特點,例如:它有強大的反匯編功能,這個是別的游戲工具中幾乎沒有的;還有,它本身就自帶了外掛制作工具,可以直接由它生成外掛。而它的界面非常簡潔朴素,這也是我喜歡它的原因之一。         

CHEAT ENGINE 入門教程

在這個教程里面,你不會看到任何圖片,因為我覺得我能用純文字教你使用CE,如果你覺得沒有圖片就一定學不會,我想你沒必要看下去了,因為我沒空做圖片,並且我覺得文字已經足夠表達,沒必要用多余的圖片。

還有如果你喜歡這個入門教程,你可以把它轉載到任何地方,但在轉載之前,請你征得本人的同意,並且在轉載時注明作者為CCB。

好了,廢話少說,進入正題吧。

其實,使用CE的基本步驟,可以簡單到一句話:

1.運行CE->2.運行游戲->3.在CE中指定要修改的游戲->4.首次搜索一個數值->5.回游戲中讓這個數值增加或減少->6.回CE按數值增減的情況再次搜索->7.重復5和6直到得到一個或很少的幾個結果->8.在這幾個結果中判斷哪一個是真正的結果。

而下面的這個教程,就是要對上面說的這些步驟進行詳細的解釋,然后再用一個具體的例子來讓大家真正掌握CE的用法。

當然,要用一個具體的例子來講解CE的用法,需要一個游戲,以這個游戲的修改來講解。不過,如果真正的用一個游戲來做例子,那么大家也得找到我用的游戲,就算找得到,還有可能要安裝,確實比較麻煩。幸好,CE本身帶了一個TUTORIAL,就是教程的意思,不過這個TUTORIAL,本身也是一個程序,它是作者為了讓使用的人進行練習而編寫的,它不但會一步一步地教你怎么用CE,而且它本身也和游戲差不多,除了沒有游戲的畫面。如果你能使用CE按這個TUTORIAL的要求對它進行修改,我想你也應該能用CE對真正的游戲進行修改了。

-------------------------------------------------------------------------------------------
CE操作入門

一,如果你還沒安裝CE,那么開始這一切之前,當然是把它安裝上,CE的安裝也和其他的軟體一樣,很簡單,沒必要再羅嗦。安裝后,在開始功能表上會有CE的程序組,而在桌面上會有CE的快捷方式。

二,安裝好之后,就可以運行CE了,運行后,會看到CE的主界面。其實CE的主界面真的非常非常簡單,簡單到不能再簡單了,以至於我本來想給它做漢化,結果看到它的主界面上的英語單詞少得可憐,根本不需要漢化。如果你連這幾個單詞都沒辦法或者不想去弄懂,我想,你的智商應該不足以用來修改游戲,那么趕快把CE刪了吧,這不是你玩的東西。

三,現在我來描述一下CE的主界面,並且解釋上面的各個部分的功能和簡單的用法介紹,至於使用上的具體細節,請看后面的實例。

在CE主視窗的標題欄下面,左上方有三個按鈕。

第一個按鈕,是指定進程的按鈕。在剛運行CE,還沒指定所要修改的進程時,它的外框會不停地閃動,這個是作者提醒你,使用CE要做的第一件事,就是指定一個進程(什么叫進程?簡單地說,就是你系統當前正在運行的程序)。這樣CE才知道你要修改的是正在運行的程序中的哪一個。點擊之后,會出來一個新視窗,視窗的標題是Process List,就是當前在你的系統上運行的所有進程的列表。這個視窗的下方,還有幾個按鈕,你暫時不用管(一個好的學習方法,就是在接触一個新的東西的時候,先弄懂那些非知道不可的東西,然后再更細致地學習,當然最后是要什么都知道。就是說要分主次先后來學。如果一開始就去注重很多暫時不需要知道的細節,結果反而會忽略了最需要先弄懂的東西,這樣的學習方法就不好了)。在這里可以找到並選擇你要修改的游戲,然后點OK按鈕,或者簡單地就雙擊要修改的進程。

左上方另外的兩個按鈕,圖標就象其他的軟體一樣,一個是打開的文件夾,這個是用來打開以前保存的CE的地址列表(*.CT)的打開按鈕,另一個是一張軟式磁碟機的圖標,這個是把地址列表保存下來的。

在這三個按鈕的右邊,上面是一行英文,下面是一個進度條,上面的英文,當CE還沒選擇要修改的進程時,它會顯示“No Process Selected”,表示你還沒選擇進程,如果已經選擇了一個進程,那么它會顯示你選擇的進程的ID和進程名,進程ID是一個由8個十六進制代碼組成的標識號,后面的進程名就是你所選擇的程序,即游戲的名稱。而下面進度條,是當你在進行掃瞄的時候,顯示當前的進度。

然后,在左上角三個按鈕的下方,有個英文FOUND后面有個數字,這個是表示找到的結果的數目,當還沒開始掃瞄或最后的掃瞄結果是0時,顯示FOUND:0。如果某次掃瞄時,找到的結果很多,也暫時不會顯示,但在這里可以看到目前為止找到的結果數量是多少。

在主視窗中間的左邊,是一個掃瞄結果的地址列表,一般找到的結果少於某個數(預設的設置是少於50個)時,找到的結果會全部顯示在這個列表中,而如果目前找到的結果多於設置的數量時就暫時不顯示。這個列表有兩個欄,Address是記憶體地址,而Value是該地址當前的數值。地址當然是十六進制表示的,而數值是十進制的。

在主視窗中間的右邊,是CE的掃瞄部分,上面是三個按鈕,First Scan,Next Scan和Undo Scan。下面是一個輸入數值的地方Value,再下來,是選擇掃瞄方式的Scan Type,選擇資料類型的Value Type,再下面是設置記憶體掃瞄選項的Memory Scan Options,這里一般不需要修改,暫時不用管它。還有右邊有個Enable Speedhack的選項,這個也先不管。第一次掃瞄時選擇好掃瞄類型,輸入好數值后點First Scan,這是開始一個全新的掃瞄,當數值變化之后輸入新的數值再點Next Scan直到找到正確的記憶體地址。掃瞄后First Scan會變成New Scan,如果想開始一個新的掃瞄,點New Scan之后會清除以前掃瞄的結果,並且釋放上次掃瞄所占用的記憶體,這樣你就能重新開始。而有時當你在掃瞄中間選錯了而影響了結果,可以點Undo Scan,這樣會清除掉最后一次你做的選擇,並把結果恢復到前一次掃瞄時的狀態。

在主視窗的下方,又是一個地址列表,這個和上面那個不一樣,上面那個是CE掃瞄的臨時結果,而下方的這個,是你選擇了的地址。它有五個欄,Frozen是對地址進行鎖定用的,Description是對該地址的注釋,Address是地址,Type是數值的類型,Value是該地址的數值。

在主視窗的中間,有一個斜向右下的紅箭頭的按鈕,這個用於從左邊的地址列表中把地址移到下方的地址列表的。你可以在左邊列表中選擇一個或多個地址,然后按這個按鈕把它們移到下方的地址列表中。當然,你雙擊左邊的地址列表,也能把它移動到下方的列表中。

在中間還有另一個紅色停止符號的按鈕,這個是清除下方地址列表中所有的地址的。

最后,在下方地址列表的左上和右上,各有一個按鈕。左邊的一個是Memory View,這個是CE最有用的按鈕之一,它是用來查看和修改記憶體的,而它的功能還不僅僅是查看和修改記憶體,CE的最有用的一個功能——反匯編,也是在這個里面,不過暫時不想詳細介紹這個按鈕里面的功能,你知道它是做什么的就行了。右邊的一個Add address manually,這個是用於手工向下方的地址列表添加地址的,如果你以前找到過某個地址,知道具體的地址,可以不用掃瞄,手工把地址加上。

CE的主界面基本就是這些,其實你用一秒鐘就能看清楚,我卻要打字打了半天:)
其實到現在為止,你還沒真正掌握CE的使用,當然了,如果你會了,我就不用再繼續寫下去了,我早就去睡覺了。不要緊,下面結合實例來說明,你會真正掌握CE的使用的。

----------------------------------------------------------------------------
CE使用實例:

現在,我們來開始一步一步學習CE的使用吧,通過完成CE帶的那個TUTORIAL,按它的要求一步一步做完,如果你做得到,你就基本上算是掌握了CE的用法了。

CE帶的TUTORIAL,是英文的,不過沒關係,我在教你使用CE來完成這個TUTORIAL的同時,會把TUTORIAL上面的所有英文都翻譯出來讓你看明白,所以不用怕。

CE帶的這個TUTORIAL,是CE作者做的用來讓你練習的一個程序,它里面也和游戲一樣,在每一個步驟都會有一些類似血(HEALTH)或子彈數量的東西,並且你點了上面某個按鈕之后,這些數值也會象游戲中一樣減少,這樣讓你象是修改游戲一樣,去找到它的地址,並按TUTORIAL上面的要求修改,當你按它的要求做到了,才讓你做下一步。而在第一步時那個輸入密碼的地方,不是說這個TUTORIAL要輸入密碼才能運行,而是有時你需要從中間某一步開始時,輸入相應的密碼會直接從某一步開始,而不用每一次都從第一步開始的。而你每完成一步之后,它也會給你相應的密碼。

好了,也許你等不及了,那么我們現在就開始吧。

第一步:

先在開始功能表上找到CE的程序組,找里面的“Cheat Engine Tutorial”(以下簡稱TUT),點擊運行。這個時候就出來這個TUT的對話框,上面一大段英文,而Next這個按鈕是灰的,為什么呢?讓我翻譯一下上面的英文吧,你就明白。TUT上面的英文的譯文,我會用【】號把它們括起來。

【歡迎你來到CE的教程(V2.4)
這個教程試圖解釋在游戲中作弊的基本步驟,並讓你更熟悉CE的使用。

首先運行CE,如果你還沒運行的話(CCB:因為還沒運行,所以Next按鈕才是灰色的:)。
然后點擊"open process"按鈕(在左上角那個有電腦圖標的那個)

當進程列表視窗打開后,找到這個教程,進程的名字應該是“tutorial.exe”,除非你把它改名了。選擇它,並點擊OK。現在先不要管其他所有的按鈕,如果你喜歡,以后再研究它們。

當這一切都做對了之后,進程選擇視窗將會消失並且在CE上方會顯示進程名。

現在,點擊NEXT按鈕繼續到下一個步驟(或者輸入密碼而進到你想去的其他步驟)。


好了,上面的這些英文,我翻譯過來了,所以這一步應該不需要我再補充什么,看這些譯文應該能明白怎么做,就是開TUT,開CE(哪個先開都沒關係),然后點擊CE左上的那個選擇進程的按鈕,選擇這個TUT的進程,這樣就可以點NEXT進到下一步了。

第二步:

【第二步:精確數值掃瞄(密碼:090453)
現在你已經在CE中打開了TUT,讓我們進入到下一步吧。

你看到在這個視窗的下方的文字Health:XXX
每次你點擊"Hit me"(打我)時,你的Health(血)會減少。

要進到下一個步驟,你必須找到這個數值並把它改為1000

要找到這個數值,有幾個不同的方法,但我會告訴你一個最簡單的,'Exact Value(精確數值掃瞄)':
首先確認數值類型設置為2位元組或4位元組,1位元組也可以的,但當你最后在修改它時你會遇到麻煩(雖然很容易解決)(CCB:大家不會忘了吧?1位元組表示的最大數值是255,而這里要你改為1000,所以雖然用1位元組能找到,但要改卻要連前一位元組一起改,所以有點麻煩,不過不是大麻煩)。8位元組可能也可以,如果這個地址后面是0的話,不過我不敢打賭。Single, Double, 以及其他的掃瞄方式不行,因為它們儲存數值的方式不同。

當數值類型設置正確后,確認掃瞄方式設置在'Exact Value'
把血的數值填在數值輸入框上,並點擊'First Scan(首次掃瞄)'
過一會兒(如果你有一個非常慢的電腦的話)掃瞄完成並且掃瞄的結果會顯示在左邊(如果找到的地址的數量少於設置的數值的話)。

如果你找到多於一個地址而你不知道哪一個是正確的地址的話,點擊TUT上的'Hit me',並把新的血的數值填到數值輸入框,並點'Next Scan(再次掃瞄)'
重復這些步驟直到你確認你已經找到它的地址了(在地址列表上只有一個地址)

現在雙擊左邊列表上的地址,這樣會讓這個地址移動到下方的列表上並顯示它的當前數值。
雙擊(下方列表的)數值欄(或者選擇它,並按回車),並把它修改為1000。

如果一切都OK,NEXT按鈕將會變成可點擊的了,你就準備好了進入下一步了。】

這一步,也不用我再補充什么了,這個TUT已經說得很清楚,這是使用CE的最基本功能,即找到數值,如果掃瞄結果太多,試圖改變數值然后再次掃瞄,直到結果剩下很少或者1個為止,這樣你就找到了要修改的數值的地址,並且也就能修改它了。到這一步,你已經能對付很簡單的游戲了,不過現在的大多數游戲都沒這么簡單,但至少你已經學到最基本的一步,就是精確數值的掃瞄和修改了。現在就點擊NEXT進入下一步吧!

第三步:

【第三步:未知初始數值(密碼:419482)
OK,看來你已經理解了怎樣使用精確數值掃瞄找到一個數值了,讓我們進入下一步吧。

在上一步中我們知道初始數值所以我們進行了精確數值掃瞄,但現在我們有一個進度條,我們不知道它開始時的數值。
我們只知道這個數值是在0到500之間,並且每次你點'Hit me'之后你會減一些血,每次減的血量會顯示在進度條的上方。

同樣的有好幾個方式找這個數值,(例如使用“減少了什么數值”的掃瞄方式),但我只解釋最簡單的方式,“Unknown initial value”(未知初始數值)和“Descreased value(減少了的數值)”。
因為你不知道現在它的數值是多少,所以使用精確數值不行了,所以選擇掃瞄方式為"Unknown initial value",同樣的,數值類型選擇4位元組,(大多數WINDOWS應用程序使用4位元組資料)
點擊'First scan'並等它掃瞄完成。

當掃瞄完成后點擊'Hit me',你會掉一些血(掉的血量多少會在血條上方顯示幾秒然后消失,但你不需要這個數值)
現在回到CE,並選擇'Decreased Value'(減少了的數值),並點擊“Next Scan”
當掃瞄完成后,再次點擊'Hit me',並重復上面的步驟,直到你找到了若干地址。

我們知道這個數值是在0到500之間,所以選擇比較象我們要的那個地址是,並把它加到下邊的列表。
現在,把它改為5000,才能進到下一步。


這一步,稍為復雜一點了,這是對那些血條之類的東西的掃瞄。作者說知道數值是0到500之間,但沒說是怎么知道的。我的看法是,這東西一方面靠猜,另一方面靠試。你也許會說,比如血條或藍條,上面或下面不是有數字嗎?是的,有些有,有些沒有,但有時,血條上面有個表示血的數字,說血是548,但你就知道它是真的按這個值存在記憶體的嗎?不一定的哦,很多游戲的開發者,可能會用某一個方式存真正的血的數值,而用另一個方式顯示,例如,最簡單的就是,真正的血是你看到的數值的3倍,例如上面說的548,其實在記憶體可能是1644,而當它要顯示的時候才把1644除以3然后顯示出來,所以如果你受這個顯示數字的誤導,結果就有可能找不到真正的地址。所以關於那些以長度表示的數值,一般還是靠猜,然后根據猜測來找。還有,CCB友情提醒一下,其實有時在找到的數值比較多的時候,試試在掃瞄的過程中,確認數值確實沒改變的情況下,多加幾次"Unchange"(無變化)掃瞄,這樣可以再減掉一些無關的結果。另外,其實在這一步,如果你夠聰明,每次點了Hit me之后記住血條上面顯示的減少的數字,再在CE中輸入剛才的數字(負號不要,負號只是表示它是減少的),並選擇'Decreased value by',即“減少了什么數值”,這樣也能更快地找到準確的地址,但這種方式是在要知道減少了多少這個具體數值才有用。好了,繼續下一步吧。

第四步:

【第四步:浮點數(密碼:890124)
在前面的教程中,我們使用位元組來掃瞄,但有些游戲使用了叫做“浮點數”的記數方法。
(可能是為了防止簡單的記憶體掃瞄)
浮點數是帶有小數點的一些數字(如5.12或11321.1)

如下邊你看到你的血(Health)和子彈(Ammo)。兩者都以浮點數儲存,但血是儲存為float(浮點數)而子彈是儲存為double(雙精度浮點數)(CCB:這是資料類型的術語,float和double都是浮點數,但float為單精度數,而double為雙精度數,它們在電腦里面占用的位元組數長度不同,而所能表示的精度也不同,看不懂不要緊,反正知道這是兩種不同的浮點數就行)。
點擊Hit me可以減少一些血,而點擊shoot(CCB:其實是Fire)可以用掉0.5的子彈。

你得把這兩者都修改到5000或者更多才能進下一步。

精確數值掃瞄方式在這一步能工作得很好,但也許你想試試其他的掃瞄方式。(CCB友情提示:掃瞄子彈的時候試試'Decreased value by'方式就不錯,數值填入0.5,很快就能找到)


這一步,其實也沒什么,只是讓你熟悉不同資料類型的掃瞄。再次提醒一下,其實有時游戲的開發者為了不讓你太容易掃瞄到數值的地址,所以有時故意顛倒黑白,例如你看到有小數的地方,有時在記憶體卻是用整數來保存,而你明明看到是顯示為整數的數值,卻有可能在記憶體中是用小數來保存,所以有時不要輕易地被你看到的東西誤導,特別是在多次搜索不到結果的時候,有時要換換別的方式,不要讓狡猾的游戲開發者騙了:)。

第五步:

【代碼尋找(密碼:888899)
有時一些東西的保存位置在你重新開始游戲時會改變,甚至是在你玩的時候也會變,在這種情況下,你用二件事仍然能做出可以用的記憶體列表。
在這一步我會描述怎樣用尋找代碼功能。

下面的數值每次你開始這個TUT的時候會存放在不同的位置,所以一個普通的記憶體地址列表將會不適用。
首先找到這個數值的記憶體地址(你能進到這一步,我假設你已經知道怎么做了)
當你找到地址后,右擊CE中的這個地址,並選擇“Find out what writes to this address”(找到是什么改寫這個地址),一個視窗將會出現,上面會有一個空的列表。
然后,點擊這個TUT上的'Change value'(改變數值)按鈕,回到CE,如果一切都做得對,會看到一個地址和一些匯編代碼。
點擊這個地址並選擇Replace(替換)選項把它替換成什么也不做的代碼,這樣還會將代碼地址加到高級選項視窗上的代碼列表(它將會一起保存,如果你保存地址表的話)。

點擊Stop,這樣游戲(CCB:指這個TUT)將會再次正常地運行下去,並點Close關閉這個視窗。
現在,點擊這個TUT上的Change value按鈕,如果一切都做對,NEXT按鈕將會變成可點擊的了。

注:如果你以足夠快的速度鎖定這個地址,這個NEXT按鈕也會變成可見的。
]】

越來越精彩了,現在不但教你找地址,還教你找那條修改這個地址的指令了,雖然,你還不太清楚怎樣手工修改找到的地址,但至少也比單純地找數值的地址並修改和鎖定要好一些了,不是嗎?別急,更精彩的還在后面呢。

第六步

【指針(密碼098712)
在上一步我解釋了怎樣用代碼尋找功能對付變化位置。但單獨用那個方法不容易找到地址來修改為你要的數值。
這就是為什么要用到指針了:

在TUT下面你會找到兩個按鈕,一個會改變數值,另一個不但會改變數值並且還會改變數值在記憶體中的位置。
在這一步,你不需要真的懂匯編,但如果你懂的話會很有幫助。

首先找到數值的地址,當你找到后,再找找是什么在改寫這個地址。再次改變這個數值,這樣會找到一個代碼地址,雙擊這個代碼地址(或者選擇它並點擊More info),這樣一個新的視窗會打開並顯示詳細的資訊告訴你當這個指令運行時會發生什么事(CCB:這個新出來的視窗上,那條指令會是紅色的)。如果這個匯編指令里面沒有包括一個在方括號中的東西,(CCB:說明這個不是我們要的)那么再看看代碼地址列表中另一個代碼地址。如果有方括號,就是說CE認為找到了數值的指針了。
回到CE主視窗,(你可以讓那個擴展資訊視窗開著,但如果你關了,要記住在方括號中間的內容)(CCB:要關了那個有代碼地址列表的視窗,才能回到CE主視窗,但擴展資訊視窗可以不用關掉),並做一次4位元組的掃瞄,掃瞄擴展資訊視窗告訴你的十六進制數。(CCB:就是方括號里面的內容,如果方括號里面是[eax],那么看看擴展資訊視窗下面EAX=后面的數值)。當掃瞄完成時它可能返回一個或幾百個地址。大多數情況下你要的會是最小(CCB:指地址最小,也就是排在列表的最上面)那一個。現在點擊手工添加記憶體地址(Add address manually)並在pointer(指針)這個選項上打勾。

這個視窗將會改變,並允許你填入指針的地址和偏移量。
在地址那里填入你剛才掃瞄到的地址。
如果匯編指令在后面有一個計算(例如:[esi+12])那么把數值填在后面,否則讓它保持0(CCB:就是如果有類似那樣的計算,把12這個數值填在偏移量(OFFSET)那里,否則那里填0),如果是更復雜的指令,看看它的算式。

舉例說明更復雜的算式:
[EAX*2+EDX+00000310] eax=4C 並且 edx=00801234.(CCB:這時各個寄存器的值到底是多少,要看擴展資訊視窗下方,那里有各個寄存器在執行這條指令時的值)
在這個情況下EDX會是數值的指針,而EAX*2+00000310則是它的偏移量,所以你要填的偏移量會是2*4C+00000310=3A8.(這些都是在十六進制下計算的,使用WINDOWS的計算器在科學方式下用十六進制計算)。

回到TUT(CCB:?),點擊OK,這個地址將會加到列表上,如果沒搞錯,將會顯示P->xxxxxxxx,xxxxxxxx會是你找到的數值的地址。如果不正確,那你一定是哪里做錯了。
現在,使用那個指針改變數值為5000並鎖定(就是在下面的地址列表中,點最前面FROZEN那一欄的勾)它,然后(CCB:應該是這里才回到TUT吧?),點擊'Change pointer'按鈕,如果一切正確,那么NEXT按鈕將變成可見的了。

額外資訊:
在這個TUT中,事實上數值是由一個指針指向另一個指針(CCB:再指向真正的數值,就是使用了“指針的指針”,有點象繞口令:),但要完成這個TUT只需要一個指針。要找到這個指針(CCB:是說要找到指向指針的另一個指針),只要搜索是什么改變那個指針。
如果你懂匯編,你可能會看到類似這樣的:
mov eax,[ebp-4]
mov eax,[eax+310]
這些別搞混了,只使用擴展資訊視窗告訴你的數值。ebp-4指向堆棧中保存了指向這個指針的指針,但堆棧的位置總是在變化,所以不要搜索ebp,而要搜索eax的數值。


這一步,確實就夠復雜了,也許你到這一步真的有點想放棄了。不過,如果我告訴你,這是這個TUT的最后一步了,你還會想放棄嗎?呵呵,堅持啊,看不懂就問,把CCB這家伙問倒了才好呢:)。其實這就是對付DMA的方法之一了,就是先找到地址然后找到指針,找到指針就好辦了。

【做得好,你完成了CE的教程了,再玩玩這個TUT並學習一下其他的掃瞄方法怎樣工作的】

==============================================================

如果你一邊看一邊做,已經做到了這一步,CCB要恭喜你,你已經領到2005年第一學期的GH小學入學證書了,呵呵。以后就是個小學生了,可要聽家長和老C的話哦,不要搗亂,不要遲到曠課,知道嗎?

其實,這個教程,本身也並不很詳細,而且本身可能由於作者疏忽並且英語也不是作者的母語吧,所以里面也有些不正確的地方,有些地方我是根據我的理解做了修正的,雖然即使你做完成了這個教程,也不是說你就很了不起了,但至少,你已經學會了CE的基本操作了,只要再多做練習,熟悉CE的操作和各種掃瞄方式的使用,對付一些簡單的游戲,已經是游刃有余了,但要更深入地使用CE的更高級的功能,還要再多學習的。

其實到這里為止,CE界面上的一些東西還沒有詳細的講過呢,不過在你做完這個教程之前,其實講了可能你也聽不太清楚,所以我會在大家熟悉了CE的操作后,再另外寫一個相對全面一點的介紹CE各個部分和各個功能的帖子。

怎么寫了一夜,都不覺得是自己在寫東西,倒象是在翻譯呢?也許是職業病吧,告訴你,在很久很久以前,CCB還不懂電腦的時候,就是專業做翻譯的,不過不是做英語的翻譯:)。

有時真的搞不懂,我自己三分鐘就能做完的這個教程,翻譯起來再拼湊上自己的幾句,就竟然要花掉我五六個小時?也許,這就是創作和享受的差別吧。種田的人,從一棵谷苗到一把米,要花多長的時間?你卻一口就能把它吃下:)

《CE入門教程 -BY CCB》,教程第七步,自己翻譯了下,我英文很爛,只能勉強弄個大概意思,各位將就著看吧。

第7步 密碼=013370

代碼注入是一個將一小段代碼注入到目標進程中的技巧,然后使這個進程執行你寫入的自己的代碼。

在這一步教程中,你將有一個生命值和一個按鈕,這個按鈕每按一次將減少1點生命值。你的任務是使用代碼注入來增加這個生命值,使得每按一次按鈕增加2點生命值。

開始搜尋這個地址然后進入“找到寫這個地址的東西”。
然后減小生命值,當你已經找到地址后,顯示反匯程式化序(Show disassembler), 並找到這個地址,然后打開自動匯編視窗(Tools功能表->Auto Assemble)(Ctrl+a)
在tmplate上點擊然后再點擊Code Injection,並給出減少生命值的地址(如果程序沒有正確填寫的話)

那樣,將產生一個基本的自動匯程式化序視窗你可以用於你的代碼.

注意alloc, 那將用於為你的代碼分配一塊記憶體, 而在Win2000系統之前, 這種行為存在安全隱患,是不安全的(HZH:在Win200以前,對系統記憶體進行分配及代碼搜尋之類的操作,可能會導致系統崩潰),幸運的是這種情況在win200以后的版本得到改善.

同樣,也要注意line newmem語句及原始代碼,以及文本"Place your code here",正如你猜測的那樣,在這兒寫下你每次增加2點生命值的代碼.
在這種情況下,一個有用的匯編指令是"ADD".
下面是一些示例:
"ADD [00901234],9" 使[00901234]地址的值增加9
"ADD [ESP+4],9"   使地址指針[ESP+4]的值增加9

注意:
推荐你從原始生成代碼中刪除減少你生命值的那行代碼, 否則你將不得不增加3點生命值(你增加3點,而原始代碼減少1點,那樣最終結果是增加2點),這樣可能會造成混亂.

注意2:
在一些游戲中,原始代碼可能存在在多指令之外,並且某些時候(並非一直如此),這可能會發生在其他地方跳轉到你的跳轉指令結束,那樣將引起未知的行為.如果這種情況發生的話,你通常應該查看附近的指令,查看跳轉情況並進行修改,或者選擇使用一個不同的代碼注入開始地址.

最后,點擊 Write code.
第八步
多級指針: (密碼=525927)
這一步教學將會解釋該如何使用多級指針。
在第 6 步的教學中你應該了解到了簡單的1級指針的概念和用途, 以及如何由資料的地址找到真正的基址。
在本步教學中,你將面對的是4級指針的挑戰。它將是一個指向指針的指針的指針的指針,最終指向表示生命的數值。

開始的幾步與在第 6 步教學中操作基本相同。找出是什麼存取這個數值的,然后檢查指令和可能的基指針數值,以及它的偏移量, 並將這些數值填充或把它記下來。但是在這里與第6步教學中情況不同的是:你找出的數值其實也是一個指針。你必須依據這些數值,使用同樣的操作方法找出指向這個指針的指針。找出什麼訪問你發現的那個地址,審查匯編指令, 留意可能的指令和偏移量,並在下一步搜尋過程中加以使用。這種過程一直進行,直到不能更進一步搜尋為止(通常當基址是一個靜態的地址時,這個地址將以綠色顯示)。

點一下“Change Value(改變數值)”讓教程程序改變下生命數值。
如果你認為你已經發現指針路徑單擊“Change Register(改變寄存器)”按鈕。指針和數值將隨之
改變,並且你將有 3 秒時間來鎖定地址到 5000。

註解1: 這個問題也可以使用自動匯程式化序腳本或者使用指針掃瞄器加以解決。

註解2: 在某些情況(像本步教程)下,一個被推荐的做法是:改變CE軟體的設置中“代碼搜尋器Code
Finder)”中的相關設置。這樣,當你遇到像 mov eax,[eax] 的指令時,調試寄存器(Debugregisters)將顯示被改變之后的值,使得能利用這個值更容易找出指針。

註解3: 如果你仍在往下讀。你可能注意到,當你查看匯編指令時,這些指針是在相同的代碼塊位置被讀寫。這種情況並不總是會發生,但是當你在搜尋某個指針遇到麻煩的時候,真的有很大用處。

[[i] 本帖最後由 seep1234567890 於 2007-10-6 05:29 編輯 [/i]]

startady 發表於 2007-11-25 22:32

請問一下大大
我做到第三步的第二步時
怎麼樣都找不到數值了
ps 第三步未知初始數值  第一步找到的數值後面都是問號,第二步(Descreased value)就沒有數值了

這是什麼原因呢??

realyw999 發表於 2007-11-29 16:29

超多的东西有,需要时就会感激他内容的丰富了

osonic2008 發表於 2008-5-30 13:31

浮点数是怎么扫出来的

ameng216 發表於 2008-10-11 13:56

英文就英文了~!
咬咬牙!

chenweijr 發表於 2009-12-27 00:43

3QQQQQQQQQQQQQQQQQQQQ

頁: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.