Squeak.ru - шаблоны программирования

Как программно получить версию компилятора VC из PE-файла?

CFF Explorer может определять версию компилятора VC из файла PE. он показывает "Microsoft Visual C ++ 8" для моего exe-файла, который статически связан с libCMT (без зависимости от dll).

Как это сделать? Он должен отвечать на какую-то неизвестную мне структуру в PE файле.

ОБНОВЛЕНИЕ:

  1. CFF Explorer может получить правильную версию VC-компилятора для статически связанного PE-файла (нет зависимости DLL от msvcmXX.dll, msvcpXX.dll или msvcrXX.dll)
  2. Даже если я очистил поля LinkerVersion / ImageVersion / SubsytstemVersion / OperratingSystemVersion в необязательном заголовке PE до ZERO, проводник CFF все еще может знать правильную версию компилятора VC.

Кажется, обозреватель CFF использует очень надежный способ определения версии компилятора VC.


Ответы:


1

Заголовок PE содержит некоторую информацию о компоновщике (или компиляторе). Проверить:

http://wiki.osdev.org/PE

а также:

http://mirror.sweon.net/madchat/vxdevl/papers/winsys/pefile/pefile.htm

Волшебное слово в заголовке PE может быть ключом к вашему ответу.

изменить:

Кажется, проводник CFF полагается на подпись кода. Я нашел здесь интересный пост:

Определение компилятора, созданного Win32 PE

В ответе RBerteig внутренние символы могут использоваться для определения компилятора.

http://www.codeproject.com/Articles/24417/Portable-Executable-PE-Code-Injection-Injecting-a

Из этого сообщения адрес _main является одной из подписей для его определения.

и это сообщение: http://ntcore.com/files/richsign.htm

дать больше информации о подписи компилятора Microsoft.

21.12.2012
  • CFF Explorer не полагается на MajorLinkerVersion / MiniLinkerVersion. Я попытался очистить эти поля до НУЛЯ, затем снова открыть PE-файл с помощью CFF Explorer, он все еще может получить правильный компилятор и отображаться в информации о файле. 21.12.2012
  • @ user325320 Выполните поиск по сигнатуре компилятора и получите интересный результат :) 21.12.2012
  • Спасибо, я сбросил часть расширенной подписи до нуля, и она все еще может получить правильный номер версии. довольно удивительно, я отправлю электронное письмо автору по этому поводу, надеюсь, он свяжется со мной 22.12.2012
  • Для меня CFF Explorer и PE Detective не работают, они всегда сообщают, что компилятор был Microsft Visual C ++ 8.0, даже если вместо него использовались Intel, Mingw64 или любой другой. Есть ли другой инструмент лучше? С Уважением. 31.10.2014
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...