Здравствуйте Алекс, Вы писали:
E>>Спасибо! Последний вопрос — а как определить адрес возврата?
А>Можно в начале функции поставить так:
А>А> DWORD retaddr;
А> __asm mov eax,[ebp+4];
А> __asm mov retaddr,eax
А>
А>хотя за результат я не ручаюсь.
И написать перед функцией (если компилятор — MSVC)
#pragma optimize( "y", off )
Чтоб оптимизатор установку ebp не поскипал.
Или, как уже говорили, использовать __declspec( naked ) и смотреть не на ebp, а на esp.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.