2011-09-03 26 views
1

我嘗試使用下面的代碼如何告訴內嵌ASM變量是十六進制

__declspec(naked) void StubStart() 
{ 
    __asm{ 
     MOV EAX, oep 
     JMP EAX 
    } 
} 

,我想告訴它「OEP」變量是十六進制,但我想我不能把這兩個(0x和h)來告訴它,它是在十六進制。 我該怎麼辦?

+1

'oep is in hex'是什麼意思?它不是一個int型變量嗎? – Mat

+0

是的,我認爲我的問題是我可以在內聯asm上放置一個變量,並且如果變量發生變化,它會取變量的值。 – Caffeinatedwolf

回答

4

oep變量很可能只是一個int(或其他一些整數類型)。

無論如何,如果你沒有

oep = 0x55; 

oep = 55; 

它最終將在計算機的二進制表示...你不能說一個變量包含一個十六進制值,小數值或八進制值...它包含一個整數。

+0

好的謝謝,但是當我把它的原始值像0x23F56它工作正常,但當我使用變量它失敗.. – Caffeinatedwolf

+0

我的意思是通過來自十六進制的例子128不等於十進制傳遞128。這兩個數字不相等。 – Caffeinatedwolf

+0

你從哪裏得到這個號碼,你應該在16位基礎上解析*,而不是10位。 – aioobe