Bagaimana cara memeriksa apakah biner 32 atau 64 bit pada Windows?

319

Apakah ada cara mudah untuk memeriksa apakah biner 32 atau 64 bit pada Windows? Saya perlu memeriksa sebelum saya memindahkan program ke mesin 32bit dan mengalami kegagalan yang spektakuler.

Septagram
sumber
Pertanyaan ini serupa , namun membutuhkan beberapa usaha untuk memeriksanya.
ST3
3
@Guillaume: Gambar yang dapat dieksekusi bukanlah proses. Manajer Tugas hanya menunjukkan proses.
IInspectable

Jawaban:

346

Setelah memeriksa nilai header dari jawaban Richard , saya menemukan solusi yang cepat, mudah, dan hanya memerlukan editor teks. Bahkan notepad.exe standar Windows akan berfungsi.

  1. Buka editor teks yang dapat dieksekusi. Anda mungkin harus menyeret-dan-jatuhkan atau menggunakan Open...dialog editor , karena Windows tidak menampilkan Open with...opsi dalam menu konteks untuk executable.

  2. Periksa karakter yang dapat dicetak pertama setelah kejadian pertama PE. Bagian ini kemungkinan besar akan dikelilingi oleh setidaknya beberapa spasi putih (bisa banyak), sehingga dapat dengan mudah dilakukan secara visual.

Inilah yang akan Anda temukan:

x86:

PE  L

x64:

PE  d†

Kata peringatan: menggunakan Notepad default pada file besar bisa sangat lambat, jadi lebih baik tidak menggunakannya untuk file yang lebih besar dari satu megabyte atau beberapa. Dalam kasus saya dalam waktu sekitar 30 detik untuk menampilkan file 12 MIB. Notepad ++, bagaimanapun, mampu menampilkan 120 MiB yang dapat dieksekusi hampir secara instan.

Ini adalah solusi yang mungkin berguna jika Anda perlu memeriksa file pada mesin yang tidak dapat Anda instal dengan perangkat lunak tambahan.

Informasi tambahan:

Jika Anda memiliki HEX-Editor tersedia, offset PE Signature terletak di offset 0x3C. Tanda tangan adalah PE\0\0(huruf "P" dan "E" diikuti oleh dua byte nol), diikuti oleh Tipe Mesin dua byte di Little Endian.

Nilai yang relevan 0x8664untuk dieksekusi x64 dan 0x14cuntuk x86. Ada lebih banyak nilai yang mungkin, tetapi Anda mungkin tidak akan pernah menemukan salah satu dari ini, atau dapat menjalankan executable tersebut pada PC Windows Anda.

Daftar lengkap jenis mesin, bersama dengan spesifikasi .exe lainnya dapat ditemukan di bagian Jenis Mesin Spesifikasi Microsoft PE dan COFF .

Alexander Revo
sumber
21
Hei, ini agak berantakan. Dan menjadi lebih baik, karena ini sebenarnya tampaknya menjadi solusi tercepat dan termudah untuk sebagian besar kasus :)
Septagram
4
Contoh yang langka ketika notepad mengalahkan notepad ++. Notepad menunjukkan ini dengan benar, di notepad Anda telah dipusingkan dengan pengkodean untuk membuatnya ditampilkan tetapi berfungsi!
zar
2
@CoDEmanX opsi ini berarti IDE atau JIT membuat pilihan untuk Anda. Lihat pertanyaan ini atau posting blog ini untuk lebih jelasnya.
Alexander Revo
2
@Ispectable jika Anda benar-benar repot-repot membaca seluruh posting sebelum menurunkannya, Anda akan melihat tautannya Microsoft PE and COFF Specification, yang merupakan kontrak terdokumentasi sebanyak mungkin, serta petunjuk tentang cara menemukan alamat pasti header PE dalam .exefile apa pun . Jika Anda memiliki sumber yang lebih andal daripada spesifikasi resmi Microsoft tentang format Microsoft yang dapat dieksekusi, saya ingin tahu apa itu.
Alexander Revo
6
Untuk file yang dimulai dengan "MZ", Anda perlu melihat sedikit lebih jauh. Saya menemukan PE..L pada offset 0x110, tepat setelah "RichMQ _........".
jnnnnn
120

Alat SDK dumpbin.exedengan /headersopsi menyertakan informasi ini, bandingkan keduanya (saya telah menambahkan huruf tebal untuk informasi utama)

PS [64] E: \ # 4> dumpbin / header C: \ Windows \ system32 \ cmd.exe
Microsoft (R) COFF / PE Dumper Versi 10.00.40219.01
Hak Cipta (C) Microsoft Corporation. Seluruh hak cipta.


Dump file C: \ Windows \ system32 \ cmd.exe

Tanda tangan PE ditemukan

Jenis File: GAMBAR EXECUTABLE

NILAI HEADER FILE
            Mesin 8664 (x64)
               6 jumlah bagian
        4CE798E5 cap tanggal waktu Sat 20 Nov 09:46:13 2010
               0 penunjuk file ke tabel simbol
               0 jumlah simbol
              Ukuran header F0 opsional
              22 karakteristik
                   Dapat dieksekusi
                   Aplikasi dapat menangani alamat besar (> 2GB)
[...]

dan

PS [64] E: \ # 5> dumpbin / header C: \ Windows \ syswow64 \ cmd.exe
Microsoft (R) COFF / PE Dumper Versi 10.00.40219.01
Hak Cipta (C) Microsoft Corporation. Seluruh hak cipta.


Dump file C: \ Windows \ syswow64 \ cmd.exe

Tanda tangan PE ditemukan

Jenis File: GAMBAR EXECUTABLE

NILAI HEADER FILE
             Mesin 14C (x86)
               4 jumlah bagian
        Stempel tanggal waktu 4CE78E2B, Sat 20 Nov 09:00:27 2010
               0 penunjuk file ke tabel simbol
               0 jumlah simbol
              E0 ukuran header opsional
             102 karakteristik
                   Dapat dieksekusi
                   Mesin kata 32 bit
[...]
Richard
sumber
1
Anda juga bisa melihat (IA64) untuk exe Itanium 64bit.
Darryl Braaten
21
seperti yang saya baca di tempat lain tentang superuser, menggunakan dumpbin /headers | findstr "machine"sangat menyederhanakan presentasi apa yang dicari QA ...
user1055604
3
Dumpbin.exe terletak di sini:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
Devid
3
@ David: tidak harus (versi VS berbeda, tidak menggunakan lokasi instal default, menggunakan versi dari Windows SDK): itu sebabnya saya tidak menentukan.
Richard
6
Lebih mudah menggunakan dumpbin jika Anda meluncurkannya dari command-line visual studio: stackoverflow.com/a/477389/1390430
Ben
46

Jika Anda tidak memiliki atau menginginkan seluruh Windows SDK atau Visual Studio, Anda dapat menggunakan sigcheck.exedari SysInternals :

sigcheck.exe C:\Windows\Notepad.exe

Keluaran:

Sigcheck v2.1 - File version and signature viewer
Copyright (C) 2004-2014 Mark Russinovich
Sysinternals - www.sysinternals.com

c:\windows\notepad.exe:
    Verified:       Signed
    Signing date:   8:59 AM 8/22/2013
    Publisher:      Microsoft Windows
    Description:    Notepad
    Product:        Microsoft« Windows« Operating System
    Prod version:   6.3.9600.16384
    File version:   6.3.9600.16384 (winblue_rtm.130821-1623)
    MachineType:    64-bit
briantis
sumber
4
Tampaknya tidak selalu akurat: Cobalah untuk menggunakannya dengan LinqPad.exe (versi AnyCPU-64bit) dan Sigcheck akan memberi tahu Anda itu "32 bit" ...
Matt
@ Matt menarik. LinqPad terdengar seperti aplikasi .net; Saya ingin tahu apakah sigcheck hanya berfungsi dengan benar pada executable asli (untuk tujuan ini).
briantist
2
Ya, ini adalah aplikasi .NET. Di .NET, jika belum dikompilasi, Anda dapat menargetkan "x86" atau "AnyCPU". "x86" akan selalu berjalan sebagai 32 bit, tetapi AnyCPU akan berjalan sebagai 64bit pada sistem 64 bit, tetapi sebagai 32 bit pada sistem 32 bit. SigCheck harus mempertimbangkan ini dan menunjukkan setidaknya ".NET 32 bit atau 64 bit (AnyCPU)". ILSpy misalnya mengatakan dalam kasus ini "Arsitektur: AnyCPU (64-bit lebih disukai)" - tetapi ILSpy tidak akan bekerja untuk non-.NET EXE.
Matt
1
Mungkin itulah masalahnya, seperti tajuk "MZ" lama yang hanya ada untuk OS non-Windows ("DOS") yang mengatakan "Aplikasi ini memerlukan Microsoft Windows" ... ;-)
Matt
2
Ya, masa lalu yang baik, di mana Anda memiliki debugger DOS di shell dan dapat membongkar kode (yang hanya berisi satu panggilan DOS tunggal mencetak pesan ini) ... dan ganti teks dengan "Jawabannya adalah 42." :-D
Matt
38

Saya dapat mengkonfirmasi bahwa fileutilitas (misalnya dari cygwin) akan membedakan antara executable 32- dan 64-bit. Mereka muncul sebagai berikut:

32.exe: PE32 executable (GUI) Intel 80386, for MS Windows
64.exe: PE32+ executable (console) x86-64, for MS Windows

Seperti yang Anda lihat, sangat jelas yang mana. Selain itu membedakan antara konsol dan executable GUI, juga jelas mana yang.

wmassingham
sumber
1
Solusi ini cukup umum tersedia untuk semua pengembang yang telah menginstal msysgit.
FrontierPsycho
Mengapa file yang dapat dieksekusi di windows MZbukan PE?
BattleTested
Patut dicatat bahwa utilitas GNU dapat diperoleh sebagai binari individual jika Anda tidak membutuhkan Cygwin. gnuwin32.sourceforge.net/packages/file.htm
MJ Walsh
32

Metode sederhana adalah menjalankannya (dengan asumsi Anda memercayainya) dan lihat tab proses di task manager. Proses 32bit akan menampilkan "* 32" di akhir nama proses. Jika itu bukan sesuatu yang Anda inginkan untuk dijalankan di komputer Anda, Anda dapat mencoba EXE Explorer . Ini akan menampilkan sejumlah besar info tentang executable termasuk apakah itu 32 atau 64bit.

Dracs
sumber
8
Sayangnya, ini mengharuskan Anda untuk menjalankan executable. Mungkin Anda perlu memeriksa arsitektur program sebagai metode pemecahan masalah mengapa tidak berjalan.
Mike Christiansen
6
Bagaimana Anda menjalankan DLL?
user34660
1
@samusarin yang seharusnya ada di pos.
user34660
@ user34660 Secara teknis Anda benar, DLL tidak memiliki maintitik masuk dan tidak akan dijalankan sebagai proses yang berdiri sendiri. Ada fungsi inisialisasi yang dipanggil ketika dimuat tetapi itu bukan "utama".
samis
24

Banyak orang memasang 7-zip yang luar biasa , dan telah menambahkan folder 7-Zip ke mereka PATH. 7-zip memahami format file selain ZIP dan RAR, seperti file MSI dan executable PE. Cukup gunakan baris perintah 7z.exepada file PE (Exe atau DLL) dalam pertanyaan:

7z l some.exe | more
7z l some.exe | findstr CPU

Keluaran akan mencakup baris sebagai berikut, dengan CPUbaris yang membaca salah satu x86atau x64, yang ditanyakan di sini:

Path = C:\Extra\AV\neroAacEnc.exe
Type = PE
CPU = x86
Characteristics = Executable 32-bit

Path = C:\Extra\AV\LAME\lame_enc.dll
Type = PE
CPU = x86
Characteristics = Executable DLL 32-bit

Path = C:\Extra\AV\FFmpeg\bin\ffmpeg.exe
Type = PE
CPU = x64
64-bit = +
Characteristics = Executable LargeAddress NoRelocs NoLineNums NoLocalSyms NoDebugInfo

Path = C:\Extra\AV\FFmpeg\bin\avcodec-56.dll
Type = PE
CPU = x64
64-bit = +
Characteristics = Executable DLL LargeAddress NoLineNums NoLocalSyms NoDebugInfo
Lumi
sumber
wow saya tidak pernah tahu bahwa 7z bisa melakukan ini. Mungkin ini berisi fileimplementasi di dalamnya?
phuclv
17

Versi 64-bit dari Proses Explorer dapat memberi tahu Anda. Cukup jalankan executable dan buka jendela properti proses. Pada tab utama ada entri yang mengatakan "Gambar: 32 Bit" atau "Gambar: 64 Bit".

masukkan deskripsi gambar di sini

Andrew Lambert
sumber
23
Simply run the executableDan bagaimana jika Anda tidak ingin menjalankan program?
Synetech
3
@ Sinetech Pertanyaan aslinya tidak menyiratkan bahwa itu masalahnya.
Andrew Lambert
Ini adalah metode termudah bagi saya, kecuali jika executable terlalu cepat keluar.
starbeamrainbowlabs
7
Bagaimana Anda menjalankan DLL?
user34660
15

Cara paling sederhana (saat data tidak dirahasiakan)

Saya menemukan bahwa Virustotal File detail adalah cara paling sederhana untuk mengetahui apakah biner adalah 32 bit atau 64 bit.

The Additional informationpilihan memberikan selain informasi banyak membantu tentang file.

Analisis viral


[Virustotal TrID

rawa-goyang
sumber
12

Metode menjalankan yang dapat dieksekusi & kemudian memeriksa dalam proses explorer atau alat serupa, memiliki beberapa kelemahan yang jelas:

  1. Kita harus menjalankan prosesnya.
  2. Untuk proses yang berumur pendek (seperti jenis dunia echo hello.), Penjelajah proses mungkin bahkan tidak mendaftar bahwa proses baru telah dimulai.

Metode Dumpbin.exe dapat memecahkan tujuan mungkin.

Alternatif lain adalah menggunakan perintah file cygwin . Namun, saya belum mengujinya di windows. Ini bekerja dengan baik di Linux.

Usage: file program_under_test.exe

EDIT: Baru saja menguji file.exe di jendela. bekerja dengan baik. :)

anishsane
sumber
1
Hanya ingin mengatakan, bahwa ada beberapa situasi, di mana metode Dracs tidak akan banyak membantu.
anishsane
3
>> Ini masih memerlukan menjalankan program yang penulis ingin hindari: Tidak .. kami menjalankannya seperti: file.exe program_under_test.exe
anishsane
1
Dan mereka yang ingin menghindari menginstal seluruh cygwinpaket dapat mengambil paket gnuwin32file .
Bob
6
@anishsane Benar-benar salah. filecukup membaca data dari disk dalam format biner dan memeriksa setiap angka ajaib yang mengidentifikasinya, membandingkannya dengan database. Program 32-bit Windows muncul sebagai PE32, dan program 64-bit dan .NET muncul sebagai PE32 +. Bitness fileitu sendiri benar-benar membuat perbedaan nol - baik aplikasi 32-bit dan 64-bit dapat membaca data dari disk, yang hanya itu yang dibutuhkan.
Bob
1
@MarcH Ha! Itu adalah menarik. Saya menduga itu berarti. Rintisan NET runtime adalah 32-bit. Jadi itu menjalankan proses 32-bit untuk sepersekian detik, tetapi semua proses yang dilakukan adalah memulai .NET runtime, yang menciptakan proses 64-bit asli.
clacke
10

Inilah solusi Powershell, tidak ada ketergantungan eksternal atau apa pun. Buka Powershell, rekatkan fungsi di sana (tekan Enter dua kali sehingga Anda kembali ke prompt), lalu gunakan seperti dalam contoh saya di bawah fungsi:

function Test-is64Bit {
    param($FilePath=“$env:windir\notepad.exe”)

    [int32]$MACHINE_OFFSET = 4
    [int32]$PE_POINTER_OFFSET = 60

    [byte[]]$data = New-Object -TypeName System.Byte[] -ArgumentList 4096
    $stream = New-Object -TypeName System.IO.FileStream -ArgumentList ($FilePath, 'Open', 'Read')
    $stream.Read($data, 0, 4096) | Out-Null

    [int32]$PE_HEADER_ADDR = [System.BitConverter]::ToInt32($data, $PE_POINTER_OFFSET)
    [int32]$machineUint = [System.BitConverter]::ToUInt16($data, $PE_HEADER_ADDR + $MACHINE_OFFSET)
    $stream.Close()

    $result = "" | select FilePath, FileType, Is64Bit
    $result.FilePath = $FilePath
    $result.Is64Bit = $false

    switch ($machineUint) 
    {
        0      { $result.FileType = 'Native' }
        0x014c { $result.FileType = 'x86' }
        0x0200 { $result.FileType = 'Itanium' }
        0x8664 { $result.FileType = 'x64'; $result.is64Bit = $true; }
    }

    $result
}

Berikut ini contoh output:

D:\> Test-is64bit

FilePath               FileType Is64Bit
--------               -------- -------
C:\Windows\notepad.exe x64         True


D:\> Test-is64bit 'C:\Program Files (x86)\Mozilla Firefox\firefox.exe'

FilePath                                           FileType Is64Bit
--------                                           -------- -------
C:\Program Files (x86)\Mozilla Firefox\firefox.exe x86        False
megamorf
sumber
Kelicikan. Skrip di atas tampaknya membiarkan referensi ke file terbuka. Tidak dapat membangun sampai saya pertama kali menutup PowerShell (menjalankan skrip untuk menginterogasi DLL di \ bin).
samis
1
Sangat keren. +1. Itanium sudah pasti 64bit :)
Rich Homolka
@samusarin: mungkin tambahkan $stream.dispose();setelah tutup? Harus melepaskan file menangani. ( stackoverflow.com/questions/1999858/… )
Yorik
1
versi yang lebih lengkap dapat ditemukan di Periksa apakah exe 64-bit
phuclv
6

Bahkan executable yang ditandai sebagai 32-bit dapat berjalan sebagai 64-bit jika, misalnya, ini adalah .NET yang dapat dijalankan sebagai 32- atau 64-bit. Untuk informasi lebih lanjut, lihat https://stackoverflow.com/questions/3782191/how-do-i-determine-if-a-net-application-is-32-or-64-bit , yang memiliki jawaban yang mengatakan bahwa Utilitas CORFLAGS dapat digunakan untuk menentukan bagaimana aplikasi .NET akan berjalan.

Output CORFLAGS.EXE

Untuk eksekusi 32-bit:

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x3
ILONLY    : 1
32BITREQ  : 1
32BITPREF : 0
Signed    : 0

Untuk 64-bit yang dapat dieksekusi:

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32+
CorFlags  : 0x1
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 0
Signed    : 0

Untuk executable yang dapat dijalankan sebagai 32- atau 64-bit dan akan berjalan sebagai 64-bit jika memungkinkan:

Version   : v2.0.50727
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x1
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 0
Signed    : 0

Untuk executable yang dapat berjalan sebagai 32- atau 64-bit, tetapi akan berjalan sebagai 32-bit kecuali dimuat ke dalam proses 64-bit:

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x20003
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 1
Signed    : 0
BlueMonkMN
sumber
Perintah keren, tetapi itu tidak akan berfungsi untuk executable / dll asli (tidak dikelola). ( corflags : error CF008 : The specified file does not have a valid managed header)
Tomasz Gandor
@ ThomaszGandor Ya, konteks jawaban ini hanya kode yang dikelola. Kode yang tidak dikelola dijawab oleh jawaban lain. Sejauh yang saya tahu, hanya kode yang dikelola yang dapat beralih antara mengeksekusi sebagai 32- dan 64-bit.
BlueMonkMN
4

Anda juga dapat menggunakan filealat dari dalam bundel msys dari mingw . Ini bekerja seperti perintah unix. Serupa bekerja filealat dari GNUwin32 .

Bastian Ebeling
sumber
3

Jika Anda menggunakan Windows 7, pada Windows Explorer, klik kanan pada executable dan pilih Properties. Di jendela properti pilih tab Kompatibilitas. Jika di bawah bagian Mode Kompatibilitas Anda melihat Windows XP, ini adalah 32 bit yang dapat dieksekusi. Jika Anda melihat Windows Vista, itu 64 bit.

axxis
sumber
-1 tidak benar sama sekali. Berbagai binari 32 dan 64 bit semuanya ditampilkan dalam Mode KompatibilitasWindows 8
Peter Hahndorf
@ Peter Saya sudah mencoba beberapa di Windows 7 dan selalu berhasil untuk saya. Bisakah Anda memberikan contoh biner di mana mode kompatibilitas default adalah Windows 8? Anda juga menggunakan Windows apa? Terima kasih.
Axxis
Saya di Server 2012 R2 dan mencoba beberapa biner acak. Beberapa 32bit menunjukkan sebagai Windows XP SP2tetapi yang lain menunjukkan sebagai Vistaatau Windows 8. Jadi metode ini tidak benar.
Peter Hahndorf
3

Cara menambahkan uji 32/64 bit ke menu konteks Anda

Buat file teks bernama exetest.reg dan berisi kode ini:

Windows Registry Editor Version 5.00

; What will appear in the contextual menu when right-clicking on a .exe file
[HKEY_CLASSES_ROOT\exefile\shell\command32_64]
@="32/64 bit test"

; What to do with it
; here, %1 is the file given as argument of the script
[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]
@="\"c:\\temp\\x86TestStart.bat\" \"%1\""

Buat file teks bernama x86TestStart.bathanya berisi baris kode ini dan simpan di C: \ temp:

c:\temp\x86or64.vbs %1

Buat file teks bernama x86or64.vbsmengandung kode ini dan simpan di C: \ temp:

rem Reading binary file in VBScript: http://stackoverflow.com/questions/21249440/modify-first-two-bytes-of-a-file-using-vbscript
rem Info on executables: https://dmoj.ca/problem/exe

rem x86/64 signature is located dinamycally; its position is addressed
rem from bytes in 0x3C-0x3D position.

rem Possible signatures;
rem "PE..L" (hex code: 50.45.00.00.4C) = 32 bit
rem "PE..d†" (hex code: 50.45.00.00.64.86) = 64 bit

' ------------------------------------
' Source code by Jumpkack 2015
' ------------------------------------

' Read all arguments from command line:
Set args = Wscript.Arguments

' Store first argument (full path to file)
FileName = args(0)

' Find address of executable signature:
FirstChars = readBinary(FileName)
FirstChars = FirstChars
Addr1 = asc(mid(FirstChars,61,1))
Addr2 = asc(mid(FirstChars,62,1))
AddrFinal = Addr2*256 + Addr1 + 1

' Check signature:
if ucase(hex(asc(mid(FirstChars,AddrFinal+4,2)))) = "4C" then Wscript.Echo Filename & " is a 32 bit executable."
if ucase(hex(asc(mid(FirstChars,AddrFinal+4,2)))) = "64" then Wscript.Echo Filename & " is a 64 bit executable."


Function readBinary(path)
    Dim a, fso, file, i, ts
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set file = fso.getFile(path)
    If isNull(file) Then
        wscript.echo "File not found: " & path
        Exit Function
    End If
    Set ts = file.OpenAsTextStream()
    'a = makeArray(file.size)
    a=""
    i = 0
    While (Not ts.atEndOfStream) and (i<60000)
       'a(i) = ts.read(1)
       a = a + ts.read(1)
       i = i + 1
    Wend
    ts.close
    readBinary = a
 End Function

Klik dua kali pada file exetest.reg: kunci baru akan ditambahkan di registri windows:

[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]

Ini akan muncul sebagai " uji 32/64 bit " dalam menu konteks setelah mengklik kanan pada file yang dapat dieksekusi.

Mengklik item akan menghasilkan file batch mulai c:\\temp\\x86TestStart.bat\, yang memulai file VBscript x86or64.vbs, yang membaca tanda tangan exe dan menunjukkan hasil.

Jika Anda tidak dapat atau tidak ingin merusak registri, cukup salin file .vbs di bilah QuickLaunch, dan seret yang dapat dieksekusi di atasnya.

jumpjack
sumber
3

Dua sen saya hanya akan mengunduh dependensi walker dan memeriksa arsitektur apa yang telah digunakan di salah satu file yang dapat dieksekusi.

Bagaimana cara menggunakannya:

Cukup unduh aplikasi, mulai saja, klik ikon buka → cari file * .exe → pilih dan di bagian bawah setelah pemindaian refleksi selesai Anda melihat kotak dengan data di mana satu kolom memiliki detail "arsitektur" di dalamnya (x86, x64)

Buka executable dan lihat arsitektur build

tangkapan layar dependency walker

Stenly
sumber
1

Saya belum melihat ini disebutkan. Ada program penampil PE yang disebut CFF Explorer oleh NTCore , yang dapat memberikan Anda informasi ini. Itu dapat diunduh dan dijalankan sebagai portable, tetapi Anda dapat menginstalnya juga, jika Anda mau.

Klik kanan pada biner ( .exe, .dlldll.) Dan pilih "Buka dengan CFF Explorer". Pergi ke Nt Headers -> File Header -> Pada bidang "Karakteristik" klik "Klik di sini"

Jika program 32bit, kotak centang "32 bit word machine" akan dicentang. Sebagai contoh, saya telah menginstal Notepad ++ versi 32bit seperti yang Anda lihat pada gambar di bawah ini. Kalau tidak, itu 64bit.

masukkan deskripsi gambar di sini

Nikos
sumber
Ada cara yang lebih cepat dengan CFF explorer: segera ketika memuat file, di bawah "tipe file" Anda memiliki "Portable Executable 64" atau "Portable Executable 32"
Arthur.V
0
  • jalankan aplikasi
  • buka Task Manager
  • klik kanan dan buat file dump
  • catat jalurnya
  • buka path dan buka .DMPdump di Visual Studio
  • di sana Anda mendapatkan semua detailnya
  • periksa arsitektur proses:
pengguna429538
sumber
3
Saya merasa berkewajiban untuk menggarisbawahi fakta bahwa jawaban ini mengharuskan menjalankan aplikasi. Komentator sebelumnya menyarankan bahwa ini mungkin tidak diinginkan. Juga, Visual Studio tidak akan secara otomatis tersedia di semua platform Windows.
G-Man
0

dua sen saya: sebagai pengembang C ++, dependency walker ( http://www.dependencywalker.com/ ) sangat informatif, tidak hanya menampilkan 64/32 bit, tetapi juga setiap Dll yang terlibat: masukkan deskripsi gambar di sini

Anda dapat melihat 64 di sebelah kiri setiap nama file ...

ingconti
sumber
1
Tangkapan layar tidak menampilkan jawabannya - 32bit vs 64bit info ...
TomEus
0

Namun, WSL 's fileperintah bekerja sangat.

file /mnt/c/p/bin/rg.exe akan menghasilkan:

/mnt/c/p/bin/rg.exe: PE32+ executable (console) x86-64, for MS Windows

file /mnt/c/p/bin/u.exe akan menghasilkan:

/mnt/c/p/bin/u.exe: PE32 executable (GUI) Intel 80386, for MS Windows, UPX compressed
Bohr
sumber
0

Kolom platform di task manager windows 10

Windows 7 tidak memiliki kolom platform. Jadi task manager Windows 7 tidak akan menunjukkannya.

Di windows 10 memilih kolom tidak lagi di bawah 'tampilan'. Di Windows 10, ketika di tab detail, Anda klik kanan tajuk kolom lalu 'pilih kolom'. Kemudian centang kotak untuk 'platform'.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

barlop
sumber