В Windows 10 и 11 существует три основных архитектуры исполняемых файлов и библиотек DLL: x86 (32-бит), x64 (64-бит) и ARM64. В некоторых случаях может понадобиться узнать архитектуру конкретного двоичного файла без его запуска. В этой статье мы рассмотрим несколько способов, как это сделать.
1. Определение архитектуры через Диспетчер задач
Если программа уже запущена, вы можете быстро проверить её разрядность:
- Нажмите правую кнопку мыши на кнопке "Пуск" и выберите "Диспетчер задач".
- Перейдите на вкладку "Подробности" (или Сведения).
- Найдите столбец "Платформа" для соответствующего процесса. Если он не отображается, кликните правой кнопкой по заголовку любого столбца и включите его в меню "Выбрать столбцы".
2. Использование утилиты Sigcheck
Sigcheck - это полезная утилита от Microsoft Sysinternals, позволяющая быстро получить информацию о разрядности файлов:
- Скачайте Sigcheck с официального сайта и распакуйте его в удобное место.
- Запустите командную строку (не забудьте запустить её от имени администратора, если просматриваете системные файлы).
- Перейдите в папку с распакованным архивом, используя команду:
cd путь_к_папке - Введите команду для проверки разрядности:
sigcheck64 "путь_к_файлу"или воспользуйтесь соответствующей версией Sigcheck, если ваша система 32-битная или ARM.
В результате вы увидите информацию об архитектуре файла в поле MachineType.
3. Проверка через PowerShell
Также вы можете написать простой скрипт на PowerShell:
Write-Host "=== Определитель архитектуры файлов (EXE/DLL) ===" -ForegroundColor CyanWrite-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 не запускает скрипт из-за политики безопасности, используйте команду:
Set-ExecutionPolicy RemoteSigned
Это позволит запускать файлы с расширением .ps1.
4. Использование утилиты File
Утилита File также позволяет легко определить разрядность файлов. Вот как её использовать`
- Скачайте и установите утилиту File для Windows.
- Откройте командную строку и перейдите в папку, где она установлена:
cd C:\Program Files (x86)\GnuWin32\bin - Введите команду:
file "путь_к_файлу"Вы получите информацию о файле, включая его архитектуру (например, "PE32 executable" для 32-бит или "PE32+ executable" для 64-бит).
Надеюсь, этот обзор способов поможет вам легко определить архитектуру EXE и DLL файлов. Если у вас остались вопросы или вы хотите поделиться своим опытом, не стесняйтесь оставлять комментарии!
