Лучше всего было бы взять заголовок включаемого файла C с именем winnt.h, который находится в вашем стандартном VS Professional (обычно это C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ include), и оттуда загрузить. EXE в PE-самосвал или использовать Hex Dumper.
1. Посмотрите на заголовок DOS со смещения 0x0.
2. Заголовок NT будет следовать сразу после заголовка DOS.
3. Идентификатор машины - это то, что вы ищете. Идентификатор машины для CF (ARM / MIPS) будет 0x010C / 0x0169 соответственно. Если вы хотите потратить больше времени на осмотр достопримечательностей .. читайте дальше,
4. Затем у вас есть каталог данных, следующий сразу после заголовка NT. Это 15-я запись в каталоге данных, указывающая, является ли .EXE .NET или нет. Если это 0, то это нативный .EXE.
В совокупности вы можете определить, является ли исполняемый файл .NET и для CF.
Смотрите здесь для более подробной информации.
Надеюсь, это поможет,
С наилучшими пожеланиями,
Том.