Как выполнить двоичный анализ файла Windows exe? - PullRequest
0 голосов
/ 12 июля 2020

Я хочу выполнить двоичный анализ файла Windows EXE без вызова Windows API (потому что я буду делать это из другой ОС). Я хочу использовать guish 2 x 2 типа:

  • Это оконная программа или программа командной строки?
  • Это программа Win32 или Win64?

Я надеюсь, что есть общие битовые структуры, которые я могу запросить.

1 Ответ

0 голосов
/ 14 июля 2020

Ссылка Спецификация Microsoft PE и COFF была полезной, но немного сложной. Вот мой результат:

Каждая программа Windows имеет программный блок DOS, показывающий текст вроде «Эта программа не может быть запущена под DOS» или аналогичный текст. Длина блока DOS может быть разной. Раздел "настоящая Windows программа" начинается позже. Адрес начального смещения программы Windows закодирован в байтах смещения 0x3 c и 0x3d. 0x3d содержит значение hi, а 0x3 c значение lo. Таким образом, вам нужно вычислить 256 * (0x3d) + (0x3 c), чтобы получить адрес смещения реальной программы Windows.

Настоящая программа Windows начинается с четырех байтов: «PE» , за которым следуют два нулевых байта. Пятый и шестой байт - это 0x4c01, если это программа Win32, и 0x6486, если это программа Win64.

Чтобы проверить, является ли программа текстовой, вы должны прочитать байт смещения (отсчитывается от «PE» = 0x00 ) 0x5 c. Значение 3 означает текстовую, 2 означает оконную GUI программу.

...