Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для Windows/Dos > не соответствие размера файла и данных в заголовке


Автор: Lonley 4.11.2005, 00:51
ПРИВЕТ

файл td286.exe - если кто встречал
4D5A A800 2800 BF00 6000 3001 FFFF B205 8000 0000 0000 0000 3E00 0000 0100 FB50
4d5a - c этим все ясно
а вот дальше
A800 - кол-во байт в последней странице файла MZ - формата

2800 - кол-во 512 страниц т.е. размер файла в 512 байтных страницах
ну что ж посчитаем
a800 -> 00a8 -> 168
2800 -> 0028 -> 40 * 512 = 20480 + 168 = 20648 байт весь файл а фактически он 549611
почему черт возьми... как в заголовке хранится не правильная информация ????

Автор: Akina 4.11.2005, 13:49
Цитата(Lonley @ 4.11.2005, 01:51)
как в заголовке хранится не правильная информация ????

В заголовке хранится информация не о длине файла - это забота файловой системы на диске - а длина загружаемой в память части файла при его запуске. Остальное в память при старте не грузится и может загружаться или иным способом использоваться кодом уже в процессе работы. Обычный встроенный оверлей...

Автор: Lonley 5.11.2005, 00:43
я немного ошибся в первом примере нужно было отнять одну страницу
4D5A 2E00 0200 0100... вот пример заголовка обычного файла MZ формата
2E00 -> 002e -> 46
0200 -> 0002 - > (2 - 1) * 512 + 46 = 558 байт все четко сходится среальным размером файла
да и в книге В.Юров специальный справочник сказано что по смещение 0004h ---> находится
длина файла MZ-формата в 512 байтных страницах
а загружаемая в память программа расчитывается по формуле (2-1)*512 + 46 - размер заголовка * 16
-------------------------
да в первом примере это встроенный оверлей я незнал что могут быть встроенные оверлеи
а есть способ определить что в программе есть встроенный оверлей или что программа использует оверлей

Автор: oleg1973 5.11.2005, 10:40
размер файла на диске- размер загружаемого образа - размер заголовка=размер оверлея )

Автор: Lonley 5.11.2005, 14:36
спаибо

Автор: oleg1973 5.11.2005, 14:46
Lonley
кстати виндос на это вообще не смотрит
тоесть если файл ре/ехе то мсдос заголовок может быть каким угодно (от балды)
главное чтоб была сигнатура РЕ по нужному смешению и соответственно сам РЕ заголовок не совсем уродский (там тоже много допусков)

п.с.
был топик про самый маленький ехе для винды
там все подробно расжевывалось про РЕ/ехе

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)