· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.RESEARCH —› SendMessage

Посл.отвђт Сообщенiе


Дата: Ноя 8, 2004 19:58:11

Объясните почему после вызова SendMessageA из SoftIce в стэке появлятся 16 лишних байт. Как восстановить стэк после вызова этой функции.
Заранее благодарен.


Дата: Ноя 8, 2004 22:09:53

хороший вопрос! и правда, откуда они там появляются? :)

может быть потому что SendMessage сама за собой стек чистит ? :

пример из головы:
...
esp:12fea4 | push eax 
esp:12fea0 | push ebx
esp:12fe9с | push ecx
esp:12fe98 | push edi
esp:12fe94 | call SendMessageA
esp:12fea4 | test eax, eax
....


каждый параметр требует 4 байта стека,
всего 4 штуки, соответственно всего байт 4*4=16 (12fea4-12fe94).
внутри, ф-ция SendMessage перед выходом (ret)
подправляет стек (add esp, 10h).

это такая специальная конвенция, называется StdCall.

или может быть я не правильно понял вопрос ?


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.077