Требования заголовка PE

Каковы требования файла PE (PE/COFF)? Какие поля должны быть установлены, которые оценивают, как минимум для того, чтобы позволять это "работать" в Windows (т.е. выполнение "мочат" инструкцию и затем закрываются, без ошибки).

Библиотека, которую я создаю сначала, является компоновщиком: Теперь, проблемой, которую я имею, является файл PE (PE/COFF). Я не знаю то, что "требуется" для файла PE, прежде чем он сможет на самом деле выполниться на моей платформе. Моей платформой тестирования является Vista. Я получаю сообщение об ошибке, говоря, что "Это не допустимый исполняемый файл Win32". когда я выполняю его путем двойного щелчка, и я получаю "Доступ запрещен". при выполнении его с CLI cmd. У меня есть два раздела, .text и .data.

Я реализовал заголовки PE в соответствии с несколькими документами онлайн, т.е. MSDN и некоторой другой сторонней документацией. Если я использую Hex-редактор, он почти походит на регулярный файл PE. Я не использую импорта, ни IAT, ни любых каталогов в заголовке PE.

Править: Я добавил, что в таблице импорта, все еще допустимый .exe-файл, говорится мой Windows. Я попытался использовать значения, которые также упоминаются в наименьшем руководстве файла PE. Никакая удача. Действительно единственная вещь, которую я, может казаться, не выясняю, - то, что требуется и что не. Некоторые руководства говорят мне, что все требуется, пока другие говорят о депрекациях: и это может быть нуль.

Я надеюсь, что это - достаточно информации.Заранее спасибо.


Необработанные данные (согласно просьбе) текущего заголовка PE:

4D 5A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 00 50 45 00 00 4C 01 02 00 C8 7A 55 4B 00 00 00 00 00 00 00 00 E0 00 82 01 0B 01 0D 25 00 10 00 00 00 10 00 00 00 00 00 00 00 10 00 00 00 10 00 00 00 20 00 00 00 00 40 00 00 10 00 00 00 02 00 00 01 00 0B 00 00 00 00 00 03 00 0A 00 00 00 00 00 00 22 00 00 38 01 00 00 00 00 00 00 03 00 00 00 00 40 00 00 00 40 00 00 00 40 00 00 00 40 00 00 00 00 00 00 0E 00 00 00 00 00 00 00 00 00 00 00 00 20 00 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2E 74 65 78 74 00 00 00 00 00 00 00 00 10 00 00 00 02 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 20 00 00 60 2E 69 64 61 74 61 00 00 00 00 00 00 00 20 00 00 00 02 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 00 00 C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3C 20 00 00 00 00 00 00 00 00 00 00 24 20 00 00 34 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4B 45 52 4E 45 4C 33 32 2E 64 6C 6C 00 00 00 00 01 00 00 80 00 00 00 00 01 00 00 80 00 00 00 00
5
задан Pindatjuh 19 January 2010 в 13:18
поделиться

5 ответов

Вы можете попробовать книгу вроде .NET 2.0 IL Assembler. В этой книге есть целая глава, посвященная тому, как выглядит исполняемый файл в формате PE (и как выглядит .Net PE).

Вы также можете попробовать загрузить ваши PE-файлы с помощью PE File Reader и проверить результаты. Если программа чтения PE не справляется с вашим PE, значит, у вас есть указатель на то, что дает сбой.

Вот DLL для чтения PE-файлов , которую я написал (с исходным кодом). Также существует графический интерфейс (с исходным кодом), который его использует.

Исходный код полностью открыт (не обременен GPL), поэтому вы можете делать с ним все, что хотите (кроме наложения на него GPL, которая помешает его открытию полностью), включая закрытие вашей версии.

1
ответ дан 14 December 2019 в 08:51
поделиться

Это полная боль для копирования пасты в шестнадцатеричный редактор, поэтому, к сожалению, я не могу сказать что-то слишком умное сразу с BAT.

Вещи, чтобы заметить в файле PE: Убедитесь, что ваш заголовок DOS действителен. Убедитесь, что Image_Optional_Header правильно отформатирован, потому что, несмотря на это имя, Windows не очень нравится, чтобы он не был сделан правильно.

Для получения дополнительной информации, выше и за пределами формата MS, поиск PE.TXT , один из лучших направляющих домов к формату PE, который я знаю.

Если вы можете опубликовать только байты, я мог бы попытаться поместить его в свои собственные анализаторы PE и посмотреть, могу ли я помочь больше.

2
ответ дан 14 December 2019 в 08:51
поделиться

Это статья о создании Tiny PE исполняемых файлов может представлять интерес: в частности, он упоминает, что погрузчик Win2K нуждается в Kernel32.dll для импортирования, так что это может быть стоить расследование.

2
ответ дан 14 December 2019 в 08:51
поделиться

Спецификация Microsoft PE/COFF - единственная спецификация, о которой я знаю.

0
ответ дан 14 December 2019 в 08:51
поделиться

То, что вы пытаетесь сделать, зависит от версии Windows, которую вы используете. Например, способ чтения PE-файлов в Windows 2000 отличается от способа чтения их в Windows 7. Я пользователь OSX, но в Windows 7 я не могу манипулировать PE-файлами способами, которые работали бы в Windows 2000 и более ранних версиях. Я не тестировал XP или Vista (или другие между 2000 и Win7), чтобы увидеть, когда Windows начала по-другому читать PE. В Windows 7 игнорируется каждый бит памяти в заголовке и заглушке MS-DOS.Единственные 2 части, которые имеют значение, - это «магическое число» (СЛОВО, равное «MZ») и смещение PE, которое представляет собой DWORD, который определяет место в памяти для начала заголовка PE. Я не уверен, действительно ли Windows игнорирует все остальные значения в заголовке и заглушке MS-DOS в 100% случаев, но за исключением двух, о которых я только что упомянул, если все остальные значения установлены на 0, действующая исполняемая программа будет работать должным образом. .

В Windows 2000 и ранее я не знаю, было ли то, что я упомянул выше, правдой, но в то время вам было разрешено изменять длину заглушки MS-DOS (или, возможно, удалить ее), при условии, что PE Значение смещения все еще указывало на правильное место в памяти для поиска заголовка PE. В Windows 7, если вы вообще измените длину заглушки MS-DOS, даже если PE Offset указывает на правильное измененное местоположение, Windows не запустит exe и заявит, что это недопустимое приложение Win32.

4D 5A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Это наименьший MS- Часть PE-файла для DOS может присутствовать в Windows 7, но при этом иметь действующий, работающий исполняемый файл. Этот бит нельзя сократить.

Надеюсь, это проясняет некоторые вещи.

2
ответ дан 14 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: