2010-09-30 65 views

回答

1

我你使用OllyDbg中看到的,所以做出了一點relavent您的情況:

DS表明,它(地址)是在數據段,[0040207A]是數據段中的地址。如果你轉到(olly的crtl + g)地址0x40207A,你會看到一些字節,這是指向MessageBoxA的指針。只需注意,你缺少地址指向的元素的大小(在本例中爲DWORD PTR),完整指令應爲MOV EAX, DWORD PTR DS:[0040207A]

在數據轉儲(左下角的窗口)中,它應該類似於: (依賴於插件和confings),在這種情況下,它會看起來像0040207A EA 07 D5 77

在CPU窗口,它可能會通過正確分析奧利:0040207A MessageBoxA EA 07 D5 77 User32.MessageBoxA

而且不,地址0040207A可能不靜態的,所以去那裏會在不同的會話中可能無法正常工作,因爲Windows重新綁定了虛擬二進制文件Ÿ

更新

這樣看來,無論你的裝配知識和x86架構的知識是真窮,因此我建議你在這些問題上,wikipedia is a good start讀了,否則你不會明白如何在彙編級別上處理地址和指針

+1

'0040207A = base_of_DS + 0040207A',但是我怎麼才能在第一個地方看到'base_of_DS'? – COMer 2010-10-08 07:25:12

+1

@COMer:「DS基礎」定義在您檢查的圖像的PE中,並且僅適用於您的圖像。在olly下,你可以使用內存映射(crtl-M iirc)來查看各種內存映射部分,'.data'是數據段(不過請注意,這不是真的,'DS:'可以用在任何東西上,只是一個訪問/尋址模式)。你會很好地給組裝的藝術一個閱讀(這些天免費) – Necrolis 2010-10-08 07:36:44

+0

DS的基地應該是'77D507EA-0040207A = 7794E770',但我已經檢查了內存映射(請參閱我的更新後的帖子),那裏是不是這樣的地址:( – COMer 2010-10-08 08:42:00