Windows에서 바이너리가 32 또는 64 비트인지 확인하는 방법은 무엇입니까?


319

Windows에서 바이너리가 32 비트인지 64 비트인지 쉽게 확인할 수 있습니까? 프로그램을 32 비트 시스템으로 옮기고 엄청난 실패를 경험하기 전에 확인해야합니다.


이 질문은 비슷 하지만 확인해야 할 작업이 있습니다.
ST3

3
@Guillaume : 실행 가능한 이미지는 처리되지 않습니다. 작업 관리자는 프로세스 만 보여줍니다.
IInspectable

답변:


346

Richard의 답변 에서 헤더 값을 검사 한 후 빠르고 쉽고 솔루션이 필요하며 텍스트 편집기 만 있으면됩니다. 심지어 Windows의 기본 notepad.exe도 작동합니다.

  1. 텍스트 편집기에서 실행 파일을 엽니 다. Open...Windows는 Open with...실행 파일의 상황에 맞는 메뉴에 옵션을 표시하지 않으므로 끌어서 놓거나 편집기 대화 상자를 사용해야 할 수도 있습니다 .

  2. 의 첫 번째 인쇄 후 첫 번째 인쇄 가능 문자를 확인하십시오 PE. 이 부분은 최소한 일부 공백으로 둘러싸 일 가능성이 높으므로 (많을 수도 있음) 시각적으로 쉽게 수행 할 수 있습니다.

찾을 내용은 다음과 같습니다.

x86 :

PE  L

x64 :

PE  d†

경고 : 큰 파일에서 기본 메모장을 사용하면 속도가 매우 느릴 수 있으므로 메가 바이트보다 크거나 적은 파일에는 사용하지 않는 것이 좋습니다. 필자의 경우 12 MiB 파일을 표시하는 데 약 30 초가 걸렸습니다. 그러나 메모장 ++은 120 MiB 실행 파일을 거의 즉시 표시 할 수있었습니다.

이 방법은 추가 소프트웨어를 설치할 수없는 컴퓨터에서 파일을 검사해야 할 경우에 유용합니다.

추가 정보:

HEX-Editor를 사용할 수있는 경우 PE Signature의 오프셋은 offset에 0x3C있습니다. 서명은 PE\0\0Little Endian에서 문자 "P"및 "E"뒤에 2 개의 널 바이트가 뒤 따릅니다.

관련 값은 0x8664x64 실행 파일과 0x14cx86에 대한 것입니다. 더 많은 가능한 값이 있지만 아마도 이러한 값을 얻지 못하거나 Windows PC에서 이러한 실행 파일을 실행할 수 없습니다.

시스템 유형의 전체 목록과 나머지 .exe 사양은 Microsoft PE 및 COFF 사양 시스템 유형 섹션 에서 찾을 수 있습니다 .


21
이봐, 이건 좀 해 키야 더 나은 점은 이것이 대부분의 경우에 가장 빠르고 쉬운 솔루션 인
것처럼 보이기 때문입니다.)

4
메모장이 notepad ++를 이길 때 드문 경우입니다. 메모장이 이것을 보여줍니다. 메모장에서는 인코딩으로 혼란스러워 보이지만 작동했습니다!
zar

2
@CoDEmanX이 옵션은 IDE 또는 JIT가 선택한다는 것을 의미합니다. 자세한 내용은 이 질문 또는이 블로그 게시물 을 참조하십시오.
Alexander Revo

2
@IInspectable 만약 당신이 실제로 전체 게시물을 다운 보팅하기 전에 전체 게시물을 읽는 것을 귀찮게했다면, 당신은 링크를 보았을 것입니다 Microsoft PE and COFF Specification. 이것은 문서화 된 계약서와 PE 헤더의 정확한 주소를 찾는 방법에 대한 지침입니다. 모든 .exe파일에서. Microsoft 자체 실행 파일 형식에 대한 Microsoft의 공식 사양보다 신뢰할 수있는 출처가 있다면 그것이 무엇인지 알고 싶습니다.
Alexander Revo

6
"MZ"로 시작하는 파일의 경우 조금 더 살펴 봐야합니다. "RichMQ _........"바로 다음에 오프셋 0x110에서 PE..L을 찾았습니다.
jnnnnn

120

이 SDK 도구 dumpbin.exe/headers옵션은이 정보를,이 두 (I 키 정보 굵은 추가 한) 비교를 포함

PS [64] E : \ # 4> 덤프 빈 / headers C : \ Windows \ system32 \ cmd.exe
Microsoft (R) COFF / PE 덤퍼 버전 10.00.40219.01
저작권 (C) Microsoft Corporation. 판권 소유.


파일 C : \ Windows \ system32 \ cmd.exe의 덤프

PE 서명 발견

파일 유형 : EXECUTABLE IMAGE

파일 헤더 값
            8664 기계 (x64)
               6 개의 섹션
        4CE798E5 타임 스탬프 토요일 11 월 20 일 09:46:13 2010
               기호 테이블에 대한 0 파일 포인터
               0 개의 기호
              옵션 헤더의 F0 크기
              22 특성
                   실행 가능
                   응용 프로그램은 큰 (> 2GB) 주소를 처리 할 수 ​​있습니다
[...]

PS [64] E : \ # 5> 덤프 빈 / headers C : \ Windows \ syswow64 \ cmd.exe
Microsoft (R) COFF / PE 덤퍼 버전 10.00.40219.01
저작권 (C) Microsoft Corporation. 판권 소유.


파일 C : \ Windows \ syswow64 \ cmd.exe 덤프

PE 서명 발견

파일 유형 : EXECUTABLE IMAGE

파일 헤더 값
             14C 머신 (x86)
               섹션 수
        4CE78E2B 타임 스탬프 토요일 11 월 20 일 09:00:27 2010
               기호 테이블에 대한 0 파일 포인터
               0 개의 기호
              옵션 헤더의 E0 크기
             102 특성
                   실행 가능
                   32 비트 워드 머신
[...]

1
64 비트 Itanium exe에 대해서는 (IA64)를 볼 수도 있습니다.
Darryl Braaten

21
내가 수퍼 유저의 다른 곳에서 읽었을 dumpbin /headers | findstr "machine"때 QA가 찾고있는 것을 쉽게
표현할 수 있습니다

3
DUMPBIN.EXE은 여기에 있습니다 :C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
DEVID

3
@David : 반드시 (필요하지 않음) (Windows SDK의 버전을 사용하여 기본 설치 위치를 사용하지 않고 VS의 다른 버전) : 이것이 내가 지정하지 않은 이유입니다.
Richard

6
Visual Studio 명령 줄에서 dumpbin을 실행하는 것이 가장 쉽습니다. stackoverflow.com/a/477389/1390430
Ben

46

전체 Windows SDK 또는 Visual Studio가 없거나 필요하지 않은 경우 sigcheck.exeSysInternals에서 사용할 수 있습니다 .

sigcheck.exe C:\Windows\Notepad.exe

산출:

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

4
항상 정확한 것은 아닌 것 같습니다 : LinqPad.exe (AnyCPU-64bit 버전)와 함께 사용해보십시오. Sigcheck는 "32 비트"라고 알려줍니다.
Matt

@ 매트 흥미. LinqPad는 .net 앱처럼 들립니다. sigcheck가 원시 실행 파일에서만 올바르게 작동하는지 궁금합니다 (이 목적으로).
briantist

2
예, .NET 앱입니다. .NET에서 사전 컴파일되지 않은 경우 "x86"또는 "AnyCPU"를 대상으로 할 수 있습니다. "x86"은 항상 32 비트로 실행되지만 AnyCPU는 64 비트 시스템에서 64 비트로 실행되지만 32 비트 시스템에서는 32 비트로 실행됩니다. SigCheck는이를 고려하여 최소한 ".NET 32 비트 또는 64 비트 (AnyCPU)"를 표시해야합니다. 예를 들어 ILSpy는이 경우 "아키텍처 : AnyCPU (64 비트 선호)"라고 말하지만 ILSpy는 .NET EXE가 아닌 경우에는 작동하지 않습니다.
Matt

1
"이 응용 프로그램에는 Microsoft Windows가 필요합니다"라는 말이 아닌 Windows ( "DOS") OS 용으로 존재하는 이전 "MZ"헤더와 같은 경우가 있습니다. ... ;-)
Matt

2
예, 셸에 DOS 디버거가 있고 코드를 분해 할 수있는 좋은 예전에는 (이 메시지를 인쇄하는 단일 DOS 호출 만 포함되어 있음) 텍스트를 "답은 42입니다"로 바꿉니다. :-D
Matt

38

file유틸리티 (예 : cygwin)가 32 비트와 64 비트 실행 파일을 구분할 것임을 확인할 수 있습니다 . 다음과 같이 나타납니다.

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

보시다시피 어느 것이 어느 것인지가 매우 분명합니다. 또한 콘솔과 GUI 실행 파일을 구별하며 어느 것이 어느 것인지 분명합니다.


1
이 솔루션은 msysgit을 설치 한 모든 개발자에게 일반적으로 사용 가능합니다.
FrontierPsycho

왜 Windows의 실행 파일 MZ대신에 실행 파일 이 PE있습니까?
BattleTested

Cygwin이 필요하지 않은 경우 GNU 유틸리티를 개별 바이너리로 얻을 수 있습니다. gnuwin32.sourceforge.net/packages/file.htm
MJ Walsh

32

간단한 방법은 실행하고 (신뢰한다고 가정) 작업 관리자의 프로세스 탭을 살펴 보는 것입니다. 32 비트 프로세스는 프로세스 이름 끝에 "* 32"를 표시합니다. 컴퓨터에서 기꺼이 실행하려는 것이 아닌 경우 EXE 탐색기를 사용해보십시오 . 32 또는 64 비트인지 여부를 포함하여 실행 파일에 대한 모든 정보를 보여줍니다.


8
불행하게도, 실행 파일을 실행해야합니다. 실행되지 않는 이유에 대한 문제 해결 방법으로 프로그램의 아키텍처를 확인해야 할 수도 있습니다.
Mike Christiansen

6
어떻게 당신은 DLL을 실행?
user34660


1
@samusarin은 게시물에 있어야합니다.
user34660

@ user34660 기술적으로 정확합니다. DLL에 main진입 점이 없으므로 독립 프로세스로 실행되지 않습니다. 로드 될 때 호출되는 초기화 함수가 있지만 "메인"이 아닙니다.
samis

24

많은 사람들이 훌륭한 7-zip을 설치했으며 7-Zip 폴더를에 추가했습니다 PATH. 7-zip은 ZIP 및 RAR 이외의 파일 형식 (예 : MSI 파일 및 PE 실행 파일)을 이해합니다. 7z.exe해당 PE 파일 (Exe 또는 DLL)에서 명령 줄 을 사용하면됩니다 .

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

출력은 다음과 같이 행을 포함하며, CPU행은 x86또는로 읽 x64습니다.

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

와우 나는 7z가 이것을 할 수 있다는 것을 결코 알지 못했다. 아마도 file내부 에 구현 이 포함 되어 있습니까?
phuclv

17

64 비트 버전의 Process Explorer 가 알려줄 수 있습니다. 실행 파일을 실행하고 프로세스의 속성 창을 열기 만하면됩니다. 기본 탭에는 "Image : 32 Bit"또는 "Image : 64 Bit"라는 항목이 있습니다.

여기에 이미지 설명을 입력하십시오


23
Simply run the executable프로그램 을 실행 하지 않으려면 어떻게해야 합니까?
Synetech

3
@Synetech 원래 질문은 그렇지 않다는 것을 암시하지 않습니다.
Andrew Lambert

실행 파일이 너무 빨리 종료되지 않는 한 이것이 가장 쉬운 방법입니다.
starbeamrainbowlabs

7
어떻게 당신은 DLL을 실행?
user34660

15

가장 간단한 방법 (데이터가 기밀이 아닌 경우)

나는 것을 발견 Virustotal은 File detail 바이너리 32 비트 또는 64 비트인지 확인하는 가장 간단한 방법입니다.

Additional information옵션은 파일에 대한 유용한 정보를 제공합니다.

바이러스 총 분석


[버추얼 TrID


12

실행 파일을 실행하고 프로세스 탐색기 또는 유사한 도구를 체크인하는 방법에는 몇 가지 명백한 단점이 있습니다.

  1. 프로세스를 실행해야합니다.
  2. 수명이 짧은 프로세스 (예 : echo hello world 유형)의 경우 프로세스 탐색기는 새 프로세스가 시작되었음을 등록하지 못할 수도 있습니다.

Dumpbin.exe 방법은 아마도 목적을 해결할 수 있습니다.

또 다른 대안은 cygwin의 파일 명령 을 사용하는 것 입니다. 그러나 Windows에서 테스트하지 않았습니다. Linux에서 잘 작동합니다.

Usage: file program_under_test.exe

편집 : 방금 창에서 file.exe를 테스트했습니다. 잘 작동합니다. :)


1
Dracs의 방법이별로 도움이되지 않는 상황이 있다고 말하고 싶었습니다.
anishsane

3
>>이 여전히 저자 피하기 위해 원하는 프로그램을 실행해야합니다 : 아니 .. 우리가 같이 실행 : file.exe가 program_under_test.exe
anishsane

1
그리고 전체 cygwin패키지를 설치하지 않으려는 사람들 은 gnuwin32 file패키지를 얻을 수 있습니다 .
Bob

6
@anishsane 완전히 잘못되었습니다. file디스크에서 이진 형식으로 데이터를 읽고 데이터베이스와 비교하여 데이터를 식별하는 모든 마법의 숫자를 확인합니다. Windows의 32 비트 프로그램은 PE32로, 64 비트 및 .NET 프로그램은 PE32 +로 나타납니다. file32 비트 및 64 비트 응용 프로그램 모두 디스크에서 데이터를 읽을 수 있으므로 필요한 비트만으로도 비트 자체의 차이는 전혀 없습니다.
Bob

1
@MarcH Ha! 즉 이다 흥미 롭군요. .NET 런타임 스텁이 32 비트임을 의미한다고 생각합니다. 따라서 순식간에 32 비트 프로세스를 실행하지만 모든 프로세스는 .NET 런타임을 시작하여 기본 64 비트 프로세스를 만듭니다.
clacke

10

다음은 Powershell 솔루션이며 외부 종속성이 없습니다. Powershell을 열고 거기에 함수를 붙여 넣은 다음 (Enter 키를 두 번 눌러 프롬프트로 돌아갑니다) 함수 아래의 예제와 같이 사용하십시오.

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
}

출력 예는 다음과 같습니다.

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

매끈함. 위의 스크립트는 파일에 대한 참조를 열어 둔 것으로 보입니다. 처음 powershell을 닫을 때까지 빌드 할 수 없었습니다 (\ bin에서 DLL을 조사하는 스크립트 실행).
samis

1
매우 시원합니다. +1. Itanium은 확실히 :)하지만 64 비트입니다
리치 Homolka에게

@samusarin : $stream.dispose();닫은 후에 추가 할 수 있습니까? 파일 핸들을 해제해야합니다. ( stackoverflow.com/questions/1999858/… )
Yorik

1
보다 완벽한 버전에서 찾을 수 있습니다 EXE가 64 비트 인 경우 체크
phuclv

6

예를 들어 32 비트 또는 64 비트로 실행할 수있는 .NET 실행 파일 인 경우 32 비트로 표시된 실행 파일도 64 비트로 실행될 수 있습니다. 자세한 내용은 https://stackoverflow.com/questions/3782191/how-do-i-determine-if-a-net-application-is-32-or-64-bit를 참조 하십시오 . CORFLAGS 유틸리티를 사용하여 .NET 애플리케이션 실행 방법을 결정할 수 있습니다.

CORFLAGS.EXE 출력

32 비트 실행 파일의 경우 :

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

64 비트 실행 파일의 경우 :

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

32 비트 또는 64 비트로 실행할 수 있고 가능한 경우 64 비트로 실행되는 실행 파일의 경우 :

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

32 비트 또는 64 비트로 실행할 수 있지만 64 비트 프로세스로로드되지 않으면 32 비트로 실행되는 실행 파일의 경우 :

Version   : v4.0.30319
CLR Header: 2.5
PE        : PE32
CorFlags  : 0x20003
ILONLY    : 1
32BITREQ  : 0
32BITPREF : 1
Signed    : 0

멋진 명령이지만 기본 (관리되지 않는) 실행 파일 / dll에서는 작동하지 않습니다. ( corflags : error CF008 : The specified file does not have a valid managed header)
Tomasz Gandor

@TomaszGandor 예,이 답변의 컨텍스트는 관리 코드 전용입니다. 관리되지 않는 코드는 다른 답변에 의해 답변됩니다. 내가 아는 한 관리 코드 만 32 비트와 64 비트로 실행을 전환 할 수 있습니다.
BlueMonkMN


3

Windows 7의 경우 Windows 탐색기에서 실행 파일을 마우스 오른쪽 단추로 클릭하고 특성을 선택하십시오. 속성 창에서 호환성 탭을 선택하십시오. 호환성 모드 섹션에 Windows XP가 표시되면 32 비트 실행 파일입니다. Windows Vista가 표시되면 64 비트입니다.


-1 전혀 사실이 아닙니다. 다양한 32 비트 및 64 비트 바이너리는 모두 호환 모드Windows 8
Peter Hahndorf

@ Peter Windows 7에서 꽤 많은 것을 시도했지만 항상 저에게 효과적이었습니다. 기본 호환성 모드가 Windows 8 인 이진의 예를 들어 주시겠습니까? 또한 어떤 Windows를 사용하고 있습니까? 감사.
axxis

Server 2012 R2를 사용하고 임의의 바이너리를 시도했습니다. 일부 32 비트는로 표시 Windows XP SP2되지만 일부는 Vista또는로 표시됩니다 Windows 8. 따라서이 방법은 올바르지 않습니다.
Peter Hahndorf 2016 년

3

컨텍스트 메뉴에 32/64 비트 테스트를 추가하는 방법

exetest.reg 라는 텍스트 파일을 작성하고 다음 코드를 포함하십시오.

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\""

x86TestStart.bat이 코드 줄만 포함 된 이름의 텍스트 파일을 작성하고 C : \ temp에 저장하십시오.

c:\temp\x86or64.vbs %1

x86or64.vbs이 코드를 포함하는 이름의 텍스트 파일을 작성하고 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

exetest.reg 파일을 두 번 클릭하십시오. Windows 레지스트리에 새 키가 추가됩니다.

[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]

실행 파일을 마우스 오른쪽 버튼으로 클릭하면 상황에 맞는 메뉴에 " 32/64 비트 테스트 " 로 나타납니다 .

항목을 클릭하면 배치 파일 c:\\temp\\x86TestStart.bat\이 시작되어 VBscript 파일이 시작 x86or64.vbs되어 exe 서명을 읽고 결과를 표시합니다.

레지스트리를 조작 할 수 없거나 변경하고 싶지 않은 경우 QuickLaunch 막대에서 .vbs 파일을 복사하고 실행 파일을 드래그하십시오.


3

내 두 센트는 종속성 워커를 다운로드 하고 실행 파일 중 하나에서 아키텍처가 사용 된 것을 확인합니다.

사용 방법:

그냥 응용 프로그램을 다운로드하고 시작하고 열기 아이콘을 클릭 → * .exe 파일 찾기 → 선택 및 반사 스캔이 완료되면 하단에 하나의 열에 "아키텍처"세부 정보가있는 그리드가 표시됩니다 (x86, x64)

실행 파일을 열고 빌드 아키텍처를 확인하십시오.

종속성 워커 스크린 샷


1

나는 이것을 언급하지 않았습니다. 이 정보를 제공 할 수있는 NTCore의 CFF Explorer라는 PE 뷰어 프로그램 이 있습니다. 휴대용으로 다운로드하여 실행할 수 있지만 원하는 경우 설치할 수도 있습니다.

바이너리 ( .exe, .dll등)를 마우스 오른쪽 버튼으로 클릭 하고 "CFF 탐색기로 열기"를 선택하십시오. Nt 헤더로 이동-> 파일 헤더-> "특성"필드에서 "여기를 클릭하십시오"를 클릭하십시오.

32 비트 프로그램 인 경우 "32 비트 워드 머신"확인란이 선택됩니다. 예를 들어 아래 이미지에서 볼 수 있듯이 32 비트 버전의 Notepad ++를 설치했습니다. 그렇지 않으면 64 비트입니다.

여기에 이미지 설명을 입력하십시오


CFF 탐색기를 사용하면 더 빠른 방법이 있습니다. 파일을로드 할 때 즉시 "파일 형식"아래에 "Portable Executable 64"또는 "Portable Executable 32"
Arthur.V

0
  • 응용 프로그램을 실행
  • 작업 관리자를 엽니 다
  • 마우스 오른쪽 단추를 클릭하고 덤프 파일을 작성하십시오.
  • 경로를 메모
  • .DMPVisual Studio에서 경로로 이동하여 덤프를 엽니 다.
  • 거기 당신은 모든 세부 사항을 얻을
  • 프로세스 아키텍처 확인 :

3
이 답변에 응용 프로그램을 실행해야한다는 사실을 강조해야한다고 생각합니다. 이전 의견 제시 자들은 이것이 바람직하지 않다고 제안했다. 또한 모든 Windows 플랫폼에서 Visual Studio를 자동으로 사용할 수있는 것은 아닙니다.
G-Man

0

내 두 센트 : C ++ 개발자로서 종속성 워커 ( http://www.dependencywalker.com/ )는 64/32 비트뿐만 아니라 관련된 모든 Dll을 표시하는 매우 유익합니다. 여기에 이미지 설명을 입력하십시오

모든 파일 이름 왼쪽에 64가 표시됩니다 ...


1
스크린 샷에 답이 표시되지 않음
-32

0

그러나 WSLfile명령은 크게 작동합니다.

file /mnt/c/p/bin/rg.exe 출력 :

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

file /mnt/c/p/bin/u.exe 출력 :

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

0

Windows 10의 작업 관리자에서 플랫폼 열

Windows 7에는 플랫폼 열이 없습니다. 따라서 Windows 7 작업 관리자에는 표시되지 않습니다.

Windows 10에서 열 선택은 더 이상 '보기'에 있지 않습니다. Windows 10의 경우 세부 정보 탭에서 열 머리글을 마우스 오른쪽 단추로 클릭 한 다음 '열 선택'을 클릭하십시오. 그런 다음 '플랫폼'확인란을 선택하십시오.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.