2017-07-14 94 views
0

我試圖做一些字節注入程序來執行一個特定的任務ecx+5C等於一個特定的地址,我提供了一個立即值。我正在嘗試執行如下操作:cmp [ecx+5C], 1D59D3BC。但是我得到一個錯誤。有誰知道我可以如何將寄存器+偏移地址與x86彙編中的直接地址進行比較?如何比較x86程序集中的兩個地址?

+2

你什麼錯誤? – zx485

+0

看看[**在彙編程序**中尋址](https://stackoverflow.com/questions/2364162/addressing-in-assembler)並獲取答案中引用的.pdf。 (對你的問題的簡短回答是*刪除'[]'s *來比較地址 - 而不是存儲在該地址的值....) –

+4

可能你正在尋找'cmp ecx,1D59D3BCh - 5Ch'? –

回答

3

我正在嘗試做如下操作:cmp [ecx+5C], 1D59D3BC
但是我得到一個錯誤。

可能的原因,爲什麼這會失敗:

  • 您需要指定一個十六進制的前綴或後綴的彙編接受你的指令。
  • 您需要指定操作的大小。彙編程序不會爲你猜測。

嘗試以下任何一種(取決於你的彙編):

cmp dword ptr [ecx + 5Ch], 1D59D3BCh 
cmp dword ptr [ecx + 0x5C], 0x1D59D3BC 
cmp dword [ecx + 5Ch], 1D59D3BCh 
cmp dword [ecx + 0x5C], 0x1D59D3BC 

有誰知道我怎麼能寄存器+偏移地址與在x86彙編立即地址?

lea eax, [ecx + 5Ch] ;put the address in EAX 
cmp eax, 1D59D3BCh ;compare with the immediate 

但作爲較短顯示PaulH在註釋:

cmp ecx, 1D59D3BCh - 0000005Ch