Как запускается PE-файл?

Тема в разделе "WASM.BEGINNERS", создана пользователем Shoorup, 11 фев 2009.

  1. Shoorup

    Shoorup Member

    Публикаций:
    0
    Вопрос следующего характера. Берем любой PE-файл и открываем его любым hex редактором. Смотрим структуру файла. _IMAGE_DOS_HEADER - заголовок доса, он у нас 64 байта длиной. Последние 4 байта e_lfanew указывает расположение заголовока PE файла.
    Как вообще проходит загрузка PE файла в windows? Читается только e_magic и e_lfanew или всё читается побайтно? Если это так, то получается можно вырезать вообще почти весь дос заголовок оставив первый и последний байт. Если нет, то как можно например в hex редакторе удалить часть заголовка и оставить работоспособный файл?
    Документация MSDN на англицком так что не шлите.
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    учи английский
    юзай поиск
    читай статьи на васме
     
  3. Shoorup

    Shoorup Member

    Публикаций:
    0
    учил - не доучил
    юзал - на мои вопросы ответ не нашел
    статей на данную тему нет на васме ( во всяком случае затрагивающий мой вопрос). Есть аля книга (архив) где рассказана структура PE-файла, но как и во всех статьях дос заголовок ободят со словами что мол там и так все понятно и мы не будем рассказывать что из себя он представляет. Может плохо искал, тогда прошу прощения и прошу помощи в поиске информации на данную тему (на русском).

    нашелhttp://www.wasm.ru/article.php?article=1005005
     
  4. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    не байт, а дворд. и не так недавно вроде GoldFinch эксперименты на тему представлял. ищите
     
  5. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Программному загрузчику из MZ-заголовка действительно нужен только сигнатура 'MZ' и e_lfanew. Так все кроме них из MZ-заголовка можно удалить, но вот при запуске программы под досом она встанет.
    PE-Модуль загружается в адресное пространство очень непросто и не сразу. Лучше поищите на это информацию.
    И еще английский подучите. Лучше не учить сам язык, а просто часто встречать английские слова. Например, бОльшую часть английских слов я выучил играя в Сегу и Денди и работая за компьютером, а не ковыряясь в словаре.
     
  6. Shoorup

    Shoorup Member

    Публикаций:
    0
    AndreyMust19, спасибо большое за ответ.

    Немного оффтопа: Вот тут http://www.wasm.ru/forum/viewtopic.php?id=29767&p=1 например похожая тема, человек задал вопрос, а ему в ответ примерно похожие ответы как мне от GoldFinch и _basmp_ - аля "ищите, сто раз обсуждали, и вообще гугл в помощь".
    1. Если вопрос достаточно распостранен то нужен нормльный ФАК где будут приведены ссылки на данную тематику. Лично я столкнулся с той же проблемой, что и amvoz в похожет теме - инфы много, примеров нет практически либо нужная информация очень тяжело находится.
    2. Вот вместо того чтобы писать абсолютно ненужную информацию аля "ищите, сто раз обсуждали, и вообще гугл в помощь", можно было не полениться и дать ссылки на хороший материал.
    Вообще заметил немного сложную обстановку на данном форуме, очень часто (не только на мои вопросы) отвечают неоднозначно. Я понимаю еслиб человек с одним сообщением залетел с темой аля ХХХЕЕЕЕЕЛП!!! расскажите как то и то! - такому и не грех указать направление в жо. Но ведь я и многие другие новички достаточно культурно написали в чем не могут разобраться и не могут найти нужной информации - зачем тогда им отвечать довольно грубо?! и самое главное бесполезно!
     
  7. Shoorup

    Shoorup Member

    Публикаций:
    0
    Если я правильно понял, PE-файл можно модифицировать так:
    MZ, потом PE заголовок и все что за ним, а вот на месте 0x03C (оно скорее всего выпадет на необязательное для чтения место в заголовке PE) указать на 3й байт в файле, т.е на начало PE заголовка и тем самым уменьшив размер файла на 126 байт.
     
  8. _tmp17628

    _tmp17628 New Member

    Публикаций:
    0
    ДОС заголовок состоит из самого заголовка (64 байта) и ДОС программы, которая под ДОСом выводит сообщение, что программа не может быть запущена в ДОС. Линкер от MS еще добавляет "печать Баала".
    Можно убрать эту программу-заглушку, оставив 64-битный заголовок. Сам _IMAGE_DOS_HEADER_ урезать не рекомендуется, иначе программа может не запуститься например в Win 9x.
    В хекс редакторе это сделать вряд ли получится, т.к. много чего придется пересчитывать. Делается это при сборке файла.

    Здесь есть статья специальная про минимизацию ДОС загловка, название не помню, там его вроде до 12 байт урезали...
     
  9. Shoorup

    Shoorup Member

    Публикаций:
    0
    Вот эта статья http://www.wasm.ru/article.php?article=1005005 Да действительно до 12 урезали:
    Код (Text):
    1. 00000000 4D 5A 00 00 01 00 00 00 01 00 00 00 50 45 00 00 MZ..........PE..
    2. 00000010 4C 01 07 00 08 00 00 00 B0 21 CD 29 B4 4C CD 21 L........!.).L.!
    3. 00000020 E0 00 0E 01 0B 01 04 14 20 00 00 00 00 2E 00 00 ........ .......
    4. 00000030 18 00 00 00 00 E0 00 00 00 10 00 00 0C 00 00 00 ................
     
  10. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Shoorup
    Стой, не уходи щас тебе через пару минут дам мою "статью" про PE-файлы!

    На, получай.
    Только эта статья все еще в работе!
     
  11. Shoorup

    Shoorup Member

    Публикаций:
    0
    не ухожу:) а хорошая статья очень кстати будет. Как правило все что я нахожу это 1-2 статьи любезно содраные друг с друга. дос заголовок вообще както бегло проходят. название полей перечислили а размеров например нет. Или часть перевели а часть так и оставили либо без пояснения либо просто без перевода.... очень тяжело разобраться по таким статьям, но коечто проясняется.
     
  12. Shoorup

    Shoorup Member

    Публикаций:
    0
    AndreyMust19, просто супер уже по первой главе! Это именно то что я искал! Прочитаю обязательно в ближайшее время, если интересно мнение и усваиваемость материала новичком - отпишусь.
     
  13. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Хочешь - дам мою статью про MZ-программы?

    offtop:
    Вообще по исследованию формата программ могу сказать что это должно быть именно исследование, а не только чтение "умных книжек". Читатель должен на практике проверить в статье каждое слово, чтобы как говориться, все это "пощупать собственными руками".
     
  14. Shoorup

    Shoorup Member

    Публикаций:
    0
    Полюбому я всегда проверяю практически - так сказать закрепляю теорию практикой. А цель стоит изучить PE формат. А вообще буду благодарен любому материалу по данной теме (желательно конечно на русском языке)
     
  15. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    А что, хидеры отменили?
    Затереть можно, оставив остальные байты, вырезать - нет.
    Нельзя удалять части структур, можно лишь их накладывать друг на друга, чем собственно и занимаются люди ,когда соревнуются в том, насколько маленьким можно сделать exe
     
  16. n0name

    n0name New Member

    Публикаций:
    0
    http://www.phreedom.org/solar/code/tinype/
     
  17. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Shoorup
    Скачай книжку П. В. Румянцева "Исследование программ Win32: до дизассемблера и отладчика" -- подробно разжеван PE-формат
     
  18. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    _basmp_ экспериментами на эту тему в основном Mikl___ занимался
     
  19. Shoorup

    Shoorup Member

    Публикаций:
    0
    Mikl___, книгу скачал, спасибо за наводку как всегда:) Если не ошибаюсь видел твою мессбокс размером 49 байт!
     
  20. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Shoorup
    Ошибаешься -- меньше 97 байт не получается и только под WinXP -- здесь скорее всего