2014-01-16 4 views
2

Это моя функция ASM код:Инструкция ASM Call вызывает переполнение стека?

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? –

Смежные вопросы