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


Простейшее приложение - часть 8


w q

Готово почти все; единственное, что осталось - подправить PE-заголовок в нашем шаблоне. Скопируем файл Header.txt, созданный в прошлый раз, в рабочий каталог. Теперь в нашем приложении есть таблица импорта, и надо указать ее смещение (2056h) и размер (3Ch) в каталоге. Найдите в файле Header.txt строку "; Здесь начинается первый элемент каталога:". Теперь переделайте его начало следующим образом:

; смещение таблицы экспорта (4 байта) db 0 0 0 0 ; размер таблицы экспорта (4 байта) db 0 0 0 0 ; Второй элемент каталога: ; смещение таблицы импорта (4 байта) db 56 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 msg.exe

Запустив make.bat, мы получим файл msg.exe. Прежде чем запускать его, внимательно проверьте файл отчета report.lst на предмет сообщений об ошибках. Всего один неверно введенный символ (например, русская буква е в команде e) вызовет ошибку, отладчик не выполнит соответствующую команду, в результате создаваемая нами структура окажется неверной, что может привести к совершенно неожиданным результатам и даже вызвать сбой всей системы (особенно если это ошибка в PE-заголовке).

Если же все нормально - хлопайте в ладоши! Вот оно, наше окно, собственноручно созданное самым честным образом в самых что ни на есть настоящих машинных кодах. Теперь самое время изучить функцию Win32 API MessageBoxA подробнее, давая ей в качестве параметров другие строки и значения стилей - для этого они и были здесь приведены. Успехов!




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



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