Win32 в машинных кодах


Сообщения Windows - часть 3


Зато изменить потребуется файл rdata.txt. GetMessageA и другие функции, которые мы собираемся добавить потом, находятся в одном модуле User32.dll, поэтому вторую IAT и вторую таблицу поиска придется увеличить на 12 байтов, а таблицу импорта и следующие за ней строки сместить. Соответственно потребуется также изменить смещения строк во всех таблицах. Файл rdata.txt будет выглядеть следующим образом:

n rdata.bin r cx 200 f 2000 l 200 0 a 2000 ; 1-я IAT (для Kernel32.dll) ; GetModuleHandleA db 94 20 0 0 ; ExitProcess db a8 20 0 0 db 0 0 0 0 ; 2-я IAT (User32.dll) ; CreateWindowExA db b6 20 0 0 ; GetMessageA db c8 20 0 0 ; запас для 2-й ф-ции db 0 0 0 0 ; запас для 3-й ф-ции db 0 0 0 0 db 0 0 0 0 ; таблица поиска для Kernel32.dll ; GetModuleHandleA db 94 20 0 0 ; ExitProcess db a8 20 0 0 db 0 0 0 0 ; таблица поиска для User32.dll ; CreateWindowExA db b6 20 0 0 ; GetMessageA db c8 20 0 0 ; запас для 2-й ф-ции db 0 0 0 0 ; запас для 3-й ф-ции db 0 0 0 0 db 0 0 0 0 ; Таблица импорта: 2 записи + завершающая (0) ; запись для Kernel32.dll ; адрес таблицы поиска db 20 20 0 0 db 0 0 0 0 0 0 0 0 ; адрес строки "Kernel32.dll" db 7c 20 0 0 ; адрес IAT(1) db 0 20 0 0 ; запись для User32.dll ; адрес таблицы поиска db 2c 20 0 0 db 0 0 0 0 0 0 0 0 ; адрес строки "User32.dll" db 89 20 0 0 ; адрес IAT(2) db 0C 20 0 0 ; завершение таблицы db 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 db "Kernel32.dll" 0 db "User32.dll" 0 db 0 0 "GetModuleHandleA" 0 0 db 0 0 "ExitProcess" 0 db 0 0 "CreateWindowExA" 0 db 0 0 "GetMessageA" 0

m 2000 l 200 100 w q

В секции кода после вызова функции CreateWindowExA добавляется вызов функции GetMessageA (предварительно в стек помещаются 4 параметра - три нулевых и адрес структуры MSG в секции данных). Цикл также меняется: теперь внутри него находится функция GetMessageA, и соответствующая инструкция должна передать управление команде помещения в стек первого параметра для этой функции. Теперь это уже не просто цикл, а цикл обработки сообщений - один из главных элементов приложения Windows (хотя сама обработка пока не совсем полноценная).




Начало  Назад  Вперед



Книжный магазин