Техника защиты компакт-дисков от копирования

         

Мы видим, что цикл обработки


.text:004010A9 ; вращаем цикл обработки сообщений

.text:004010A9

.text:004010AB               pop             ebp

.text:004010AC               pop             ebx

.text:004010AD

.text:004010AD loc_4010AD:                                     ; CODE XREF: _WinMain@16+67^j

.text:004010AD               mov             eax, [esp+24h+Msg.wParam]

.text:004010B1               pop             edi

.text:004010B2               pop             esi

.text:004010B3               add             esp, 1Ch

.text:004010B6               retn           10h

.text:004010B6 _WinMain@16            endp

Листинг 16 дизассемблерный листинг функции обработки сообщений

Мы видим, что цикл обработки сообщений начинается с адреса 401050h и именно на этот адрес следует передать управление, чтобы возобновить работу "упавшей" программы. Пробуем сделать это и… программа работает!

Разумеется, настоящее приложение оживить намного сложнее, поскольку цикл обработки сообщений в нем рассредоточен по большому количеству функций, отождествить которые при беглом дизассемблировании невозможно. Тем не менее, приложения, построенные на основе общедоступных библиотек, (например, MFC (Microsoft Foundation Classes), OWVL (Object Windows Library),) обладают вполне предсказуемой архитектурой и реанимировать их вполне возможно.

Рассмотрим, как устроен цикл обработки сообщений в MFC. Большую часть своего времени исполнения MFC-приложения проводят внутри функции CWinThread::Run(void), которая периодически опрашивает очередь на предмет поступления свежих сообщений и рассылает их соответствующим обработчикам. Если один из обработчиков "споткнулся" и довел систему до критической ошибки, выполнение программы может быть продолжено в функции Run. В этом-то и заключается ее главная прелесть!

Функция не имеет явных аргументов, но принимает скрытый аргумент this, указывающей на экземпляр класса CWinThread или производный от него класс, без которого функция просто не сможет работать.

Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий