Как посмотреть разрядность EXE и DLL файлов в Windows

Способы посмотреть архитектуру исполняемых файлов и DLL в WindowsВ Windows 11/10 современных версий вы можете встретить три основных архитектуры исполняемых файлов и библиотек DLL — x86 (32-бит), x64 (64-бит), ARM64.

В некоторых случаях может потребоваться узнать архитектуру конкретного двоичного файла, не запуская его. В этой инструкции подробно о способах сделать это, если возникла такая необходимость.

Sigcheck

Прежде чем приступить, отмечу, что если речь идёт об EXE-файле программы и вы его уже запустили, достаточно открыть «Диспетчер задач» (правый клик по кнопке «Пуск» — «Диспетчер задач»), перейти на вкладку «Сведения» (Подробности) и посмотреть значение в столбце «Платформа» для соответствующего процесса:

Платформа процесса в диспетчере задач Windows

Если столбец не отображается, нажмите правой кнопкой мыши по заголовку любого столбца и включить отображение в диалоговом окне «Выбрать столбцы».

Один из самых простых способов получения информации о разрядности (архитектуре) исполняемого файла или DLL — утилита Sigcheck из Microsoft Sysinternals. Она предназначена для других целей, но прекрасно подойдёт и для рассматриваемой задачи:

  1. Скачайте Sigcheck с официального сайта и распакуйте в удобное расположение.
  2. Запустите командную строку (от имени администратора, если требуется просмотр информации о файлах в системных папках).
  3. Перейдите в папку с распакованным архивом с помощью команды
    cd путь_к_папке
  4. Введите команду (для запуска в x64 версии Windows)
    sigcheck64 "путь_к_файлу"
    Добавить в заметки чтобы посмотреть позже?

    Чтобы узнавать о свежих записях укажите email:

    и вы сразу увидите результат, включающий в себя архитектуру файла в поле MachineType: Получение информации об архитектуре в Sigcheck

В архиве также доступны варианты программы для 32-бит систем (sigcheck.exe) и для ARM (sigcheck64a.exe), используйте в команде тот файл, который соответствует установленной на вашем компьютере ОС.

Windows PowerShell

Архитектура исполняемых файлов указывается в их заголовке и потенциально мы можем увидеть эту информацию даже в блокноте или в любом HEX-редакторе. Но проще будет автоматизировать задачу.

Достаточно создать следующий скрипт PowerShell (расширение .ps1, сохранить в кодировке ANSI для правильного отображения русского языка):

Write-Host "=== Определитель архитектуры файлов (EXE/DLL) ===" -ForegroundColor Cyan
Write-Host "Можно просто перетаскивать файлы в это окно." -ForegroundColor Cyan while ($true) { Write-Host "`nВведите путь к файлу (или введите 'Exit' для выхода):" -ForegroundColor White $path = Read-Host ">" if ($path -match "^(?i)exit$") { Write-Host "Выход из программы..." -ForegroundColor DarkGray break } $path = $path.Trim('"', "'", " ") if (-Not (Test-Path -Path $path -PathType Leaf)) { Write-Host "Ошибка: Файл не найден!" -ForegroundColor Red continue } try { $stream = [System.IO.File]::OpenRead($path) $reader = New-Object System.IO.BinaryReader($stream) $stream.Seek(60, [System.IO.SeekOrigin]::Begin) | Out-Null $peOffset = $reader.ReadInt32() $stream.Seek($peOffset, [System.IO.SeekOrigin]::Begin) | Out-Null $signature = $reader.ReadUInt32() if ($signature -ne 0x00004550) { Write-Host "[-] Это не корректный EXE/DLL файл Windows!" -ForegroundColor Red continue } $machine = $reader.ReadUInt16() switch ($machine) { 0x014C { Write-Host "[+] Архитектура: 32-bit (x86)" -ForegroundColor Yellow } 0x8664 { Write-Host "[+] Архитектура: 64-bit (x64)" -ForegroundColor Green } 0xAA64 { Write-Host "[+] Архитектура: 64-bit (ARM64)" -ForegroundColor Magenta } 0x01C4 { Write-Host "[+] Архитектура: 32-bit (ARM)" -ForegroundColor DarkYellow } 0x0200 { Write-Host "[+] Архитектура: 64-bit (Intel Itanium IA-64)" -ForegroundColor Gray } default { Write-Host "[?] Архитектура: Неизвестна (Hex-код: 0x$($machine.ToString('X4')))" -ForegroundColor Gray } } } catch { Write-Host "[-] Ошибка при чтении файла: $_" -ForegroundColor Red } finally { if ($reader) { $reader.Close() } if ($stream) { $stream.Close() } }
}

Запустить его и либо указывать пути к файлам, либо просто перетаскивать их на открывшееся окно, получая информацию о разрядности:

Получение сведений об архитектуре в PowerShell

Примечание: если PowerShell не запускает скрипт из-за политики безопасности, введите команду

Set-ExecutionPolicy RemoteSigned

подтвердите выполнение, после чего файлы .ps1 будут исправно запускаться.

Утилита File

И ещё одна простая небольшая утилита для определения типа файлов — File. Версия для Windows доступна для загрузки на этом сайте.

Порядок использования аналогичен таковому для Sigcheck:

  1. Переходим в папку с file.exe, в случае расположения установки по умолчанию команда будет иметь следующий вид:
    cd C:Program Files (x86)GnuWin32bin
  2. Вводим команду
    file "путь_к_интересующему_файлу"
  3. Вывод будет отличаться: для 32-бит файлов вы увидите «PE32 executable», для большинства x64 файлов — «PE32+ executable» (в случае ARM64 также будет указание на архитектуру Aarch64). Дополнительно отображается информация о том, является ли приложение консольным или графическим (GUI) и дополнительная информация: Использование утилиты File

Надеюсь, те, кому требовалась такая информация, смогли найти в материале подходящий для себя способ определения архитектуры, для которой был скомпилирован исполняемый файл Windows.

+ +