SendMessage

Тема в разделе "WASM.RESEARCH", создана пользователем syntax, 8 ноя 2004.

  1. syntax

    syntax New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2004
    Сообщения:
    1
    Адрес:
    Russia
    Объясните почему после вызова SendMessageA из SoftIce в стэке появлятся 16 лишних байт. Как восстановить стэк после вызова этой функции.

    Заранее благодарен.
     
  2. Funbit

    Funbit Member

    Публикаций:
    0
    Регистрация:
    13 апр 2003
    Сообщения:
    92
    Адрес:
    Russia
    хороший вопрос! и правда, откуда они там появляются? :)



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



    пример из головы:
    Код (Text):
    1.  
    2. ...
    3. esp:12fea4 | push eax
    4. esp:12fea0 | push ebx
    5. esp:12fe9с | push ecx
    6. esp:12fe98 | push edi
    7. esp:12fe94 | call SendMessageA
    8. esp:12fea4 | test eax, eax
    9. ....
    10.  




    каждый параметр требует 4 байта стека,

    всего 4 штуки, соответственно всего байт 4*4=16 (12fea4-12fe94).

    внутри, ф-ция SendMessage перед выходом (ret)

    подправляет стек (add esp, 10h).



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



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