Здравствуйте vic_sea, Вы писали:
E>>Опиши подробно, что ты делаешь, по-моему дело не в asm а в C++
E>>Давай, объясни, что надо, что делаеться, что происходит, вот тогда и поразмыслим
VS>я исследую защиту программ друг от друга при взаимодействии COM клиента и сервера,
VS>в случаях in-process и out-of-process. COM сервер на C++,клиент на Delphi
VS>смысл в том чтобы в COM сервере вызвать такую ошибку чтобы клиент прибился Виндоузом
VS>в случае записывания мусора по случайному адресу клиент отрабатывает эксепшн,
VS>с UD2 и использованием throw из С++ то же самое — перехватывается.
VS>прибивает программу только порча стека:
VS>VS>_asm
VS>{
VS> mov esp,5451748
VS> ret
VS>}
VS>
VS>но при этом она молча закрывается и все.
VS>это немного не то что я хочу. хочется чтобы знаменитое окошко "коврик выполнил
VS>недопустимую операцию и будет свернут" вышло.
А что ж ты хотел, это же её внутренние обработчики. Во первых мне не известно, что Delphi кидает в обработчик исключений по умолчанию.
Тебе нужно вот что: зарегестрировать свой обработчик, и вернуть обработчик по умолчанию на место, если он был уничтожен Дельфой.
А то, что прога тихо закрываеться это ясно: стек исчерпан SEH не может выполниться!!!
Извини, сейчас мне пора, но срветую почитать Рихтера, хотя там такого нет, здесь надо покумекать.
Завтра буду!!!