Re[8]: Как сымитировать "недопустимую операцию"?
От: Edmond  
Дата: 15.07.02 10:04
Оценка:
Здравствуйте 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 не может выполниться!!!

Извини, сейчас мне пора, но срветую почитать Рихтера, хотя там такого нет, здесь надо покумекать.
Завтра буду!!!
С уважением, Edmond
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.