| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 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 кстати виндос на это вообще не смотрит тоесть если файл ре/ехе то мсдос заголовок может быть каким угодно (от балды) главное чтоб была сигнатура РЕ по нужному смешению и соответственно сам РЕ заголовок не совсем уродский (там тоже много допусков) п.с. был топик про самый маленький ехе для винды там все подробно расжевывалось про РЕ/ехе |