Полезные советы

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

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

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

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

Sigcheck

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

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

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

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

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

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

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

В архиве также доступны варианты программы для 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() }     } }

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

Читайте также:  Виза в Италию

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

Примечание: если 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) и дополнительная информация:

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

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

Источник

Вам также может понравиться...

Добавить комментарий