2014-01-16 28 views
2

這是我的ASM功能代碼:ASM調用指令會導致堆棧溢出?

PUSH EBP 
MOV EBP, ESP 
SUB ESP, 8 
CALL 00401E20 
LEAVE 
RETN 

有在0x00401E20一個函數,它不帶任何參數,並且不返回任何值。哪個是調用函數的正確方法?

OllyDbg說「堆棧溢出」並評論第4行。對不起,我是ASM的新手,有什麼想法?

在此先感謝。

+1

你需要**步入**該功能,看看什麼是真正導致崩潰。 – karlphillip

+0

感謝您的評論。我怎樣才能做到這一點?請查看下面我的評論,這是導致我認爲崩潰的原因。 – cdonts

+1

你的問題似乎是*如何使用ollydbg *,並且網上有很多教程。請記住,**步驟**和**步驟**之間存在差異(快捷鍵:F7)。 – karlphillip

回答

3

也許你應該在離開和返回之前嘗試POP。

試試這個:

PUSH EBP 
MOV EBP, ESP 
SUB ESP, 8 

CALL 00401E20 

MOV ESP, EBP 
POP EBP 

LEAVE 
RETN 
+0

+1這當然是一個問題。 – karlphillip

+0

謝謝,但它不起作用:-(更具體地說,OllyDbg評論說:'CALL DWORD PTR DS:[1000A000]'。任何其他想法? – cdonts

+0

00401E20函數中的代碼是什麼? –