上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[page6]
Pointers: (PW=098712)
In the previous step I explained how to use the Code finder to handle
changing locations.
But that method alone makes it difficult to find the address to set the
values you want.
Thats why there are pointers:
指標(密碼=098712)
在前一步教學裡,我解釋了如何使用機械碼搜尋工具去處理一直在本機電腦上變動的位
址。
但是由於每個變動的位址(在每個遊戲中)都有其獨自的變動方式,使得你要找到數值
位址更難度。
這就是這裡為何要說明指標(Pointer)的原因了:

At the bottom you'll find 2 buttons.
One will change the value, and the other changes the value AND the location
of the value.
For this step you dont really need to know assembler, but it helps a lot if
you do.
在視窗底部你將找到兩個按鈕。
其中一個將會改變數值,另一個則會改變數值和pointer
在這一步裡你不須要會組合語言,但是會的話會對你有很大的幫助。

First find the address of the value. When you've found it use the function
to find out what writes to that address.
Change the value again, and a item will show in the list. Double click that
item. (or select and click on more info) and
a new window will open with detailed information on what happened when the
instruction ran.
首先先找到這個數值的位址。
當你已經找到它時,請找出哪個位址在對這個位址寫入資料。
再改變一次數值,且找到的位址(寫入資料的位址)會出現在
("Find out what writes to this address")列表中,雙按它(或選取後按下
"More info"按鈕)。
雙按它時會出現一個debug視窗(assembler instruction),詳細的列出了當組譯器運
作時(各暫存器)發生了什麼事。

If the assembler instruction doesn't have anything between a '[' and ']'
then use another item in the list.
If it does it will say what it think will be the value of the pointer you
need.
如果debug視窗中的程式碼沒有"["和"]",則請用在debug視窗中別的程式碼。
如果你選對了程式碼,那將會在more info視窗中說明要找到pointer位址須要的位址
(即要給數值分配位址所須的位址)
板主註:(more info視窗=extra info視窗)
板主註2:我看到的程式碼為"00455df3 89 10 -mov [eax],edx"

Go back to the main cheat engine window (you can keep this extra info
window open if you want, but if you close it, remember what is between the
[ and ] ) and do a 4 byte scan in hexadecimal for the value the extra info
told you.
When done scanning it may return 1 or a few hundred addresses. Most of the
time the address you need will be the smallest one. Now click on manually
add and select the pointer checkbox.
回到CE的主畫面中(如果你想要的話,可以保留extra info視窗,但你若關閉它的話,
請記得在"["和"]"的內容)並搜尋數值型態為4 byte、16進制(hexadecimal)的搜尋,
搜尋的數值則為在extra info視窗中看到的("[]"內的位址的)值。
板主註:[eax]就是指eax用的位址,關閉extra info視窗,回到列出機械碼的視窗
    中,可以看到"00455df3 89 10 -mov [eax],edx"這行,其中0045df3就是位
    址了,在下文中搜尋這筆值必須省略00
板主註2:若不省略00的話,CE只會鎖定pointer位址值不會鎖定數值位址值
板主註3:每個人的pointer位址未必相同,且重新執行程式會導至pointer位址改變
當完成搜尋後,也許CE會傳回給你1或數百筆找到的位址。
大部份的時候你須要的將會是最小(值)的一個位址。
現在按下"add address manually"手動加位址到表格區並將"pointer"的核取方塊打
勾。

The window will change and allows you to type in the address of a pointer
and a offset.
Fill in as address the address you just found.
If the assembler instruction has a calculation (e.g: [esi+12]) at the end
then type the value in thats at the end. else leave it 0. If it was a more
complicated instruction look at the calculation.
按下打勾後,視窗將會改變大小,可以讓你可以輸入pointer的位址值及你要指派給它
的偏移位址。
填入你剛才找到的指標(pointer)位址(一樣要省略00,指派位址因為程式碼沒有加任
何值免填)。
如果debug視窗顯示是計算式(如"[esi+12]"),那麼末端(offset欄)
就要填上你看到的數值(以前例來說是12)。
否則則讓offset欄保持0即可。
如果有更複雜的算式的程式碼,請參考以下的計算方式。

example of a more complicated instruction:
[EAX*2+EDX+00000310] eax=4C and edx=00801234.
In this case EDX would be the value the pointer has, and EAX*2+00000310 the
offset, so the offset you'd fill in would be 2*4C+00000310=3A8.(this is all
in hex, use cal.exe from windows in scientific mode to calculate)
一個有著複雜算式的程式碼範例:
[EAX*2+EDX+00000310] eax=4c,且edx=00801234。
在這個程式碼裡,EDX的值就是指標(pointer)的位址了,且
EAX*2+00000310的結果就是該填入offset欄的值,所以應是2*4c+00000310=3A8。
(這些數值都是使用十六進制來計算,你可以使用windows的小算盤(檔名calc.exe)
切換成工程模式來計算)

Back to the tutorial, click OK and the address will be added, If all went
right the address will show P->xxxxxxx, with xxxxxxx being the address of
the value you found. If thats not right, you've done something wrong.
Now, change the value using the pointer you added in 5000 and freeze it.
Then click Change pointer, and if all went right the next button will
become visible.
回到教學程式,按下"OK"並將(指標的(pointer的))位址加入表格區,如果一切步驟都
做對的話,表格區會將pointer的位址前面加個p,表示為"P->xxxxxxx"
,xxxxxxx是一開始的值的位址的十六進制值。
如果不是,表示你已經做錯一些步驟了。
現在,改變指標(pointer)位址的值為5000並鎖定它。
然後回到教學程式按下"Change pointer"鈕,且一切都做對的話"next"按鈕將變成可
以看到(並可按下)的。

extra:
In this tutorial the value is actually pointed to by a pointer to a pointer
, but to finish this tutorial only 1 pointer will be needed.
To find the pointer to this pointer, just search for what changes the value
of the pointer.
If you know assembler, you may see something like
mov eax,[ebp-4]
mov eax,[eax+310]
Dont be confused by this.
just use the value the extra info window tells you.
ebp-4 points to the stack which contained the pointer to this pointer, but
the stack location does change all the time, so dont search for ebp, search
for the value of eax
額外補充:
在這個教學中,數值位址用的指標(pointer)是被另一個指標指向的,但是要完成這個
教學,只須要一個指標就夠了。
板主註:為免搞混,以下數值用指標稱a指標,指標的指標稱b指標
要找到a指標的指標,就要搜尋a指標的值的改變(這就是"change pointer"按鈕另一作
用)。
如果你懂組合語言,你可以看到一些像是
mov eax.[ebp-4]
mov eax.[eax+310]
不要被這些(程式碼)迷惑了。
你正好可用extra info視窗告訴你的訊息來使用這些數值。
ebp-4的內容會送至堆疊器,以被用來控制b指標指向a指標,但本機電腦的堆疊器是一
直都在改變的,所以不要搜尋有ebp在內容內的程式碼,搜尋eax的數值才行。
スポンサーサイト

管理者にだけ表示を許可する
http://fatalfury.blog61.fc2.com/tb.php/31-2fb9c80d
この記事にトラックバックする(FC2ブログユーザー)
// HOME // 
Powered By FC2ブログ. copyright © 2005 history of garou all rights reserved.
GOOGLE ADS

統計、feed訂閱
留言板
PROFILE

fatalfury

Author:fatalfury
之前考慮了一段時間
從是否要寫BLOG
到各家BLOG服務的比較都花了不少時間
最後決定在這落腳了…
做為一個格鬥人+巴哈人的家… :)

最近の記事
最近のCOMMENT

最近のTRACKBACK

月別ARCHIVE
カテゴリー
ブロとも申請フォーム
RSSFEED

輸入你的信箱以訂閱更新消息:

Delivered by FeedBurner

LINK
站內搜尋

TAG LIST
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。