Число элементов каталога смещений
a B4 ; Число элементов каталога смещений ( 4 байта) db 10 00 00 00 ;************ ; Здесь начинается первый элемент каталога: ; но у нас пока ничего нет - оставляем нули
a 138 ; Начало таблицы секций ; ; имя первой секции (8 символов) db '.code' 0 0 0 ; размер секции в памяти (4 байта) db 00 10 00 00 ; смещение секции относительно адреса загрузки (4 байта) db 00 10 00 00 ; размер данных секции в файле (4 байта) db 00 02 00 00 ; смещение начала данных секции в файле (4 байта) db 00 02 00 00 ; Пропускаем 12 байтов db 0 0 0 0 0 0 0 0 0 0 0 0 ; атрибуты первой секции (4 байта): ; код, разрешено исполнение и чтение db 20 00 00 60 ; ; данные второй секции - аналогично: db '.rdata' 0 0 db 00 10 00 00 db 00 20 00 00 db 00 02 00 00 db 00 04 00 00 db 0 0 0 0 0 0 0 0 0 0 0 0 db 40 00 00 40 ; ; данные третьей секции db '.data' 0 0 0 db 00 10 00 00 db 00 30 00 00 db 00 02 00 00 db 00 06 00 00 db 0 0 0 0 0 0 0 0 0 0 0 0 db 40 00 00 C0
m 0 l 200 100 w q
Перед записью созданного "образа заголовка" сдвигаем его на 100h байт, чтобы все записалось правильно. Сохраним этот текст в файле "Header.txt".
Теперь у нас есть шаблон, который можно вставлять в начало exe-файла с 3 секциями, размеры которых не превышают 200h байт каждая. Чтобы протестировать его, нужно собрать "настоящий" exe-файл с его использованием. Для этого немного схитрим: вставим две пустые секции (содержащие лишь нули) в качестве секций данных; а в секции кода используем всего 2 байта: EB FE. Это инструкция, передающая управление на себя (как мы узнаем в дальнейшем). Т.е. наша программа просто зацикливается; но пока нам большего и не надо.
В блокноте создадим еще 2 простых файла. Первый - "s1.txt" (содержит наш "код"):
n s1.bin r cx 200 f 100 l 200 0 e 100 eb fe w q
Второй - "s2.txt" (секция в 200h байт, заполненная нулями):
n s2.bin r cx 200 f 100 l 200 0 w q
А теперь в том же Блокноте создаем файл "make.bat":
@echo off debug < header.txt > report.lst debug < s1.txt >> report.lst debug < s2.txt >> report.lst copy /b header.bin+s1.bin+s2.bin+s2.bin nil.exe
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий