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


Шаблон оконного приложения - часть 2


Файл "rdata.txt" будет иметь теперь следующий вид:

n rdata.bin r cx 400 f 2000 l 400 0 a 2000 ; 1-я IAT (для Kernel32.dll) ; GetModuleHandleA db f0 21 0 0 ; ExitProcess db 4 22 0 0 db 0 0 0 0 ; 2-я IAT (User32.dll) ; CreateWindowExA db 12 22 0 0 ; GetMessageA db 24 22 0 0 ; DispatchMessageA db 32 22 0 0 ; TranslateMessage db 46 22 0 0 ; DefWindowProc db 5a 22 0 0 ; RegisterClassExA db 6c 22 0 0 ; PostQuitMessage db 80 22 0 0 db 0 0 0 0

a 2088 ; таблица поиска для Kernel32.dll ; GetModuleHandleA db f0 21 0 0 ; ExitProcess db 4 22 0 0 db 0 0 0 0 ; таблица поиска для User32.dll ; CreateWindowExA db 12 22 0 0 ; GetMessageA db 24 22 0 0 ; DispatchMessageA db 32 22 0 0 ; TranslateMessage db 46 22 0 0 ; DefWindowProcA db 5a 22 0 0 ; RegisterClassExA db 6c 22 0 0 ; PostQuitMessage db 80 22 0 0 db 0 0 0 0

a 2110 ; Таблица импорта: 2 записи + завершающая (0) ; запись для Kernel32.dll ; смещение таблицы поиска db 88 20 0 0 db 0 0 0 0 0 0 0 0 ; смещение строки "Kernel32.dll" db a0 21 0 0 ; смещение IAT(1) db 0 20 0 0 ; запись для User32.dll ; смещение таблицы поиска db 94 20 0 0 db 0 0 0 0 0 0 0 0 ; смещение строки "User32.dll" db ad 21 0 0 ; смещение IAT(2) db 0C 20 0 0 ; завершение таблицы

a 21a0 ; имена модулей db "Kernel32.dll" 0 db "User32.dll" 0

a 21f0 ; имена функций db 0 0 "GetModuleHandleA" 0 0 db 0 0 "ExitProcess" 0 db 0 0 "CreateWindowExA" 0 db 0 0 "GetMessageA" 0 db 0 0 "DispatchMessageA" 0 0 db 0 0 "TranslateMessage" 0 0 db 0 0 "DefWindowProcA" 0 0 db 0 0 "RegisterClassExA" 0 0 db 0 0 "PostQuitMessage" 0

m 2000 l 400 100 w q

Обратите внимание на сделанные изменения. Размер файла увеличен до 400h. Оставлено свободное место между IAT и таблицами поиска; между таблицами поиска и таблицей импорта; оставлен резерв для расширения самой таблицы импорта, а также место между именами модулей и таблицей имен импортируемых функций. Все соответствующие смещения в таблицах изменены.




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



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