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


Окна Windows - часть 5


m 2000 l 200 100 w q

Секция, как обычно, строится "в два прохода"; чтобы сразу получить нужные смещения в режиме ассемблирования, образ в debug собирается по тому же смещению, что и образ в памяти (2000h), а затем для записи переносится по смещению 100h. После строки "GetModuleHandleA" дополнительный 0 поставлен для выравнивания, т.к. строки в таблице имен должны начинаться по четному адресу. Теперь секция кода (файл code.txt):

n code.bin r cx 200 f 0 l 200 0 a 0 ; параметр GetModuleHandleA = 0 db 6a 0 ; вызов GetModuleHanldeA (по адресу в IAT(1) 402000h) db ff 15 0 20 40 0 ; параметры CreateWindowExA ; дополнительное число (0) db 6a 0 ; описатель модуля (в EAX) db 50 ; описатель меню (0) db 6a 0 ; описатель окна-владельца (0) db 6a 0 ; высота окна db 68 0 1 0 0 ; ширина окна db 68 50 1 0 0 ; координата y db 68 0 1 0 0 ; координата x db 68 50 1 0 0 ; стиль окна db 68 0 0 cf 10 ; адрес имени окна (в секции данных - 403010h) db 68 10 30 40 0 ; адрес имени класса (в секции данных - 403000h) db 68 0 30 40 0 ; расширенный стиль окна (0) db 6a 0 ; вызов CreateWindowEx (по адресу в IAT(2) 40200Ch) db ff 15 c 20 40 0 ; параметр ExitProcess (код завершения = 0) db 6a 0 ; вызов ExitProcess (по адресу в IAT(1) 402004h) db ff 15 4 20 40 0

m 0 l 200 100 w q

Осталось слегка подправить наш шаблон заголовка. Скопируем файл header.txt в рабочий каталог. Изменения требует лишь начало каталога смещений. Находим строку "Здесь начинается первый элемент каталога:" и вставляем такой кусок:

; смещение таблицы экспорта (4 байта) db 0 0 0 0 ; размер таблицы экспорта (4 байта) db 0 0 0 0 ; Второй элемент каталога: ; смещение таблицы импорта (4 байта) db 28 20 0 0 ; размер таблицы импорта (4 байта) db 3c 0 0 0

Файл "make.bat" традиционный:

@echo off debug &lt header.txt &gt report.lst debug &lt code.txt &gt&gt report.lst debug &lt rdata.txt &gt&gt report.lst debug &lt data.txt &gt&gt report.lst copy /b header.bin+code.bin+rdata.bin+data.bin wnd.exe




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



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