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

1. Определение архитектуры через Диспетчер задач

Если программа уже запущена, вы можете быстро проверить её разрядность:

  1. Нажмите правую кнопку мыши на кнопке "Пуск" и выберите "Диспетчер задач".
  2. Перейдите на вкладку "Подробности" (или Сведения).
  3. Найдите столбец "Платформа" для соответствующего процесса. Если он не отображается, кликните правой кнопкой по заголовку любого столбца и включите его в меню "Выбрать столбцы".

2. Использование утилиты Sigcheck

Sigcheck - это полезная утилита от Microsoft Sysinternals, позволяющая быстро получить информацию о разрядности файлов:

  1. Скачайте Sigcheck с официального сайта и распакуйте его в удобное место.
  2. Запустите командную строку (не забудьте запустить её от имени администратора, если просматриваете системные файлы).
  3. Перейдите в папку с распакованным архивом, используя команду:
    cd путь_к_папке
  4. Введите команду для проверки разрядности:
    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 также позволяет легко определить разрядность файлов. Вот как её использовать`

  1. Скачайте и установите утилиту File для Windows.
  2. Откройте командную строку и перейдите в папку, где она установлена:
    cd C:\Program Files (x86)\GnuWin32\bin
  3. Введите команду:
    file "путь_к_файлу"

    Вы получите информацию о файле, включая его архитектуру (например, "PE32 executable" для 32-бит или "PE32+ executable" для 64-бит).

Надеюсь, этот обзор способов поможет вам легко определить архитектуру EXE и DLL файлов. Если у вас остались вопросы или вы хотите поделиться своим опытом, не стесняйтесь оставлять комментарии!

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *