Вобщем как не делал, ни как не получается сделать файл исполняемым, те при его запуске, загрузчик пишет что это не PE файл, думаю что проблема с RVA первой секции и с ImageBase, большую часть секции кода отрезал (оч много), в файле всего 1 секция. ifolder.ru/7421105
Код (Text): Imagebase: 0x00404000 Должно быть кратно 0x10000 же! И, да - VirtualOffset первой секции должен быть выровнен на SectionAlignment - на 0x1000 в данном случае... Собственно, ты и сам это всё знаешь, разве нет? Кстати, была вроде какая-то тулза, которая 'эмулирует' работу загрузчика, но выводит кучу информации в процессе своей работы - т.е. если что не так, то это сразу видно... Кто-нибудь помнит, как называется?
>> Должно быть кратно 0x10000 же! откуда такое число? Насколько я знаю, image base должен быть кратен размеру страницы, который у обычных пользователей - 0x1000, а у особо одаренных, если не ошибаюсь, 0x100000 (не уверен). И то, все это только при отсутсвии релоков. или я в чем-то не прав? Ulv В windows 2000 необходимо, чтобы программа импортировала хотябы одну функцию (ExitProcess к примеру). Кроме того, File Allign должен быть как минимум 512, а Object Allign - не помню, толи 512, толи 4096, иначе твой экзешник будет работать только в виндах не младше XP.
MSoft Вполне убеждён, что Imagebase выравнивается в соответствии с гранулярностью выделения (allocation granularity or sth). 64K. n0hack Там есть импорт, только он отрезан
Как минимум у такоко маленького файла не может быть физ-ий размер первой секции 9200. Дальше не копал пока.
>VirtualOffset первой секции должен быть выровнен на SectionAlignment - на 0x1000 это да, я вкоде генератора не учел и написал =1000, а это ведь десят число и в переводе в hex получилось 3E8 >Кроме того, File Allign должен быть как минимум 512 ну он у меня 200h что есть 512, кстати глянул у простого файла - он тоже 200h >иначе твой экзешник будет работать только в виндах не младше XP мне и не надо чтобы в остальных работал, мне хотябы для висты >Кстати, была вроде какая-то тулза, которая 'эмулирует' работу загрузчика, но выводит кучу информации в процессе своей работы - т.е. если что не так, то это сразу видно... Кто-нибудь помнит, как называется? хорошо бы увидеть такую прогу, погуглил - пока ни чего не нашел.
Зачем эмулировать работу загрузчика, если родной загрузчик ПЕ файлов ОС, как и все функции в принципе реализованные в ОС выводят отладочные сообщения? Туда нужно копать, а не разбираться в нерабочих или частично нерабочих эмуляторах.
нашел прогу peverify которая вроде как проверяет на валидность (http://www.dweller.mail333.com/index.htm) также нашел еще одну ошибку в поле ImageSize, после его изменения эта прога ругается только на отсутствие импорта
Aspire Посмотри описание Global Flags'ов в винды. Скачай прогу gflags.exe и поставь галочку Show Loader Snaps. После ребута мониторь дебаг аутпут. Увидишь интересные сообщения от загрузчика
Гм... Вот, допустим, у исполняемого файла секция какая-нибудь не выровнена на SectionAlignment - всё, файлу отказано в загрузке. Разве загрузчик (при установленном флажке Show Loader Snaps) выведет причину отказа? Просто я не вижу. Неправильно смотрю?