Добавим эту функцию. Для этого
Добавим эту функцию. Для этого в конце файла 'rdata.txt' добавляем соответствующую строку:
db 0 0 "GetMessageA" 0 db 0 0 "DispatchMessageA" 0 0 db 0 0 "TranslateMessage" 0
m 2000 l 200 100 w q
Второй 0 после "DispatchMessageA" нужен для выравнивания начала следующей строки по четному адресу. Необходимо также изменить (тоже в двух местах - для IAT(2) и таблицы поиска User32.dll) строки:
; запас для 3-й ф-ции db 0 0 0 0
на строки:
; TranslateMessage db ea 20 0 0
В файле code.txt очередные 11 байтов нужно добавить до вызова DispatchMessageA (не забыв изменить смещение в инструкции безусловного перехода на начало цикла), так что конец файла будет выглядеть так:
; вызов GetMessageA (по адресу в IAT(2) 402010h) db ff 15 10 20 40 0 ; параметр TranslateMessage - адрес MSG (403020h) db 68 20 30 40 0 ; вызов TranslateMessage (по адресу в IAT(2) 402018h) db ff 15 18 20 40 0 ; параметр DispatchMessageA - адрес MSG (403020h) db 68 20 30 40 0 ; вызов DispatchMessageA (по адресу в IAT(2) 402014h) db ff 15 14 20 40 0 ; возврат на "цикл" (-41 байт) db eb d7
m 0 l 200 100 w q
Вот теперь, построив очередную версию wnd.exe, мы получим почти полноценный текстовый редактор! Хотя пока он работает лишь с одной строкой; но зато создан полностью в машинных кодах!
На сегодня этого достаточно. Не забудьте "прибить" работающие приложения - закрытия окна недостаточно для их завершения (пока). В заключение хочу заметить, что подобный способ завершения приложений, конечно, не является нормальным, и система может начать (и, возможно, у вас уже не раз начинала) работать нестабильно, так что придется ее перезагружать. Поэтому перед началом таких экспериментов лучше закрыть все остальные приложения, особенно, если вы работаете в них с важными данными.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий