Вопрос следующего характера. Берем любой PE-файл и открываем его любым hex редактором. Смотрим структуру файла. _IMAGE_DOS_HEADER - заголовок доса, он у нас 64 байта длиной. Последние 4 байта e_lfanew указывает расположение заголовока PE файла. Как вообще проходит загрузка PE файла в windows? Читается только e_magic и e_lfanew или всё читается побайтно? Если это так, то получается можно вырезать вообще почти весь дос заголовок оставив первый и последний байт. Если нет, то как можно например в hex редакторе удалить часть заголовка и оставить работоспособный файл? Документация MSDN на англицком так что не шлите.
учил - не доучил юзал - на мои вопросы ответ не нашел статей на данную тему нет на васме ( во всяком случае затрагивающий мой вопрос). Есть аля книга (архив) где рассказана структура PE-файла, но как и во всех статьях дос заголовок ободят со словами что мол там и так все понятно и мы не будем рассказывать что из себя он представляет. Может плохо искал, тогда прошу прощения и прошу помощи в поиске информации на данную тему (на русском). нашелhttp://www.wasm.ru/article.php?article=1005005
Программному загрузчику из MZ-заголовка действительно нужен только сигнатура 'MZ' и e_lfanew. Так все кроме них из MZ-заголовка можно удалить, но вот при запуске программы под досом она встанет. PE-Модуль загружается в адресное пространство очень непросто и не сразу. Лучше поищите на это информацию. И еще английский подучите. Лучше не учить сам язык, а просто часто встречать английские слова. Например, бОльшую часть английских слов я выучил играя в Сегу и Денди и работая за компьютером, а не ковыряясь в словаре.
AndreyMust19, спасибо большое за ответ. Немного оффтопа: Вот тут http://www.wasm.ru/forum/viewtopic.php?id=29767&p=1 например похожая тема, человек задал вопрос, а ему в ответ примерно похожие ответы как мне от GoldFinch и _basmp_ - аля "ищите, сто раз обсуждали, и вообще гугл в помощь". 1. Если вопрос достаточно распостранен то нужен нормльный ФАК где будут приведены ссылки на данную тематику. Лично я столкнулся с той же проблемой, что и amvoz в похожет теме - инфы много, примеров нет практически либо нужная информация очень тяжело находится. 2. Вот вместо того чтобы писать абсолютно ненужную информацию аля "ищите, сто раз обсуждали, и вообще гугл в помощь", можно было не полениться и дать ссылки на хороший материал. Вообще заметил немного сложную обстановку на данном форуме, очень часто (не только на мои вопросы) отвечают неоднозначно. Я понимаю еслиб человек с одним сообщением залетел с темой аля ХХХЕЕЕЕЕЛП!!! расскажите как то и то! - такому и не грех указать направление в жо. Но ведь я и многие другие новички достаточно культурно написали в чем не могут разобраться и не могут найти нужной информации - зачем тогда им отвечать довольно грубо?! и самое главное бесполезно!
Если я правильно понял, PE-файл можно модифицировать так: MZ, потом PE заголовок и все что за ним, а вот на месте 0x03C (оно скорее всего выпадет на необязательное для чтения место в заголовке PE) указать на 3й байт в файле, т.е на начало PE заголовка и тем самым уменьшив размер файла на 126 байт.
ДОС заголовок состоит из самого заголовка (64 байта) и ДОС программы, которая под ДОСом выводит сообщение, что программа не может быть запущена в ДОС. Линкер от MS еще добавляет "печать Баала". Можно убрать эту программу-заглушку, оставив 64-битный заголовок. Сам _IMAGE_DOS_HEADER_ урезать не рекомендуется, иначе программа может не запуститься например в Win 9x. В хекс редакторе это сделать вряд ли получится, т.к. много чего придется пересчитывать. Делается это при сборке файла. Здесь есть статья специальная про минимизацию ДОС загловка, название не помню, там его вроде до 12 байт урезали...
Вот эта статья http://www.wasm.ru/article.php?article=1005005 Да действительно до 12 урезали: Code (Text): 00000000 4D 5A 00 00 01 00 00 00 01 00 00 00 50 45 00 00 MZ..........PE.. 00000010 4C 01 07 00 08 00 00 00 B0 21 CD 29 B4 4C CD 21 L........!.).L.! 00000020 E0 00 0E 01 0B 01 04 14 20 00 00 00 00 2E 00 00 ........ ....... 00000030 18 00 00 00 00 E0 00 00 00 10 00 00 0C 00 00 00 ................
Shoorup Стой, не уходи щас тебе через пару минут дам мою "статью" про PE-файлы! На, получай. Только эта статья все еще в работе!
не ухожу а хорошая статья очень кстати будет. Как правило все что я нахожу это 1-2 статьи любезно содраные друг с друга. дос заголовок вообще както бегло проходят. название полей перечислили а размеров например нет. Или часть перевели а часть так и оставили либо без пояснения либо просто без перевода.... очень тяжело разобраться по таким статьям, но коечто проясняется.
AndreyMust19, просто супер уже по первой главе! Это именно то что я искал! Прочитаю обязательно в ближайшее время, если интересно мнение и усваиваемость материала новичком - отпишусь.
Хочешь - дам мою статью про MZ-программы? offtop: Вообще по исследованию формата программ могу сказать что это должно быть именно исследование, а не только чтение "умных книжек". Читатель должен на практике проверить в статье каждое слово, чтобы как говориться, все это "пощупать собственными руками".
Полюбому я всегда проверяю практически - так сказать закрепляю теорию практикой. А цель стоит изучить PE формат. А вообще буду благодарен любому материалу по данной теме (желательно конечно на русском языке)
А что, хидеры отменили? Затереть можно, оставив остальные байты, вырезать - нет. Нельзя удалять части структур, можно лишь их накладывать друг на друга, чем собственно и занимаются люди ,когда соревнуются в том, насколько маленьким можно сделать exe
Shoorup Скачай книжку П. В. Румянцева "Исследование программ Win32: до дизассемблера и отладчика" -- подробно разжеван PE-формат
Mikl___, книгу скачал, спасибо за наводку как всегда Если не ошибаюсь видел твою мессбокс размером 49 байт!