12.07.2015 Views

Взлом GSM - Xakep Online

Взлом GSM - Xakep Online

Взлом GSM - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

взломКрис КасперскиЭнциклопедияантиотладочныхприемовОбработка необрабатываемых исключенийОтладчики, работающие через MS Debugging API (OllyDbg, IDA-Pro, MS VC),вынуждены мириться с тем, что отладочные процессы «страдают» хроническимиособенностями поведения. Они «ломают» логику программы, и этос огромной выгодой используют защитные механизмы. В частности, APIфункцияSetUnhandledExceptionFilter() под отладчиком вообще не вызывается— вовсе не баг отладчика, а документированная фича системы!066FundamentalsРассматривая обработку структурных исключений в предыдущемвыпуске, мы мельком упомянули, что всякий процесс от рождения получаетпервичный обработчик структурных исключений, назначаемыйоперационной системой по умолчанию. Если программист забыл (илине захотел) назначать свои собственные обработчики, то все исключения,возникающие в ходе выполнения программы, попадают в пастьпервичного обработчика. Он расположен в NTDLL.DLL и, в зависимостиот настроек оси, либо вызывает «Доктора Ватсона», либо выводитзнаменитый диалог о критической ошибке с вариантами: «ОК»— завершить приложение в аварийном режиме и «Cancel» — вызыватьJust-in-Time отладчик (в роли которого может выступать и Ольга).То же самое происходит, если программист устанавливает один илинесколько обработчиков структурных исключений, но никто из них не всостоянии справиться с ситуацией — вот они и передают исключениедруг другу, пока оно не докатится до системного обработчика. Системныйобработчик легко подменить своим (было бы желание). Достаточновместо ссылки на предыдущий EXCEPTION_REGISTRATION затолкатьв поле prev значение «-1». Это будет свидетельствовать, что данныйобработчик — последний в цепочке.Как вариант, можно воспользоваться API-функцией SetUnhandledExceptionFilter(), перекрывающей обработчик исключенийверхнего уровня (top-level exception handler). Да, именно «верхнего»,поскольку Windows создавалась в Америке, расположенной на противоположнойстороне Земли, где люди ходят вверх ногами. Первичныйсистемный обработчик, с их точки зрения, находится на вершинепирамиды структурных исключений, в то время как русские программистысклоны рассматривать его как «основание». Но это все лирика, адело-то в том, что...Функция SetUnhandledExceptionFilter(), перекрываясистемный обработчик, в неволе работать отказывается, то естьполучает управление только, когда процесс не находится под от-xàêåð 07 /115/ 08

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!