වින්ඩෝස් හි ද්විමය 32 හෝ 64 බිට් දැයි පරීක්ෂා කරන්නේ කෙසේද?


352

වින්ඩෝස් හි ද්විමය බිට් 32 හෝ 64 දැයි පරීක්ෂා කිරීමට පහසු ක්‍රමයක් තිබේද? මම වැඩසටහන 32bit යන්ත්‍රයකට ගෙනයාමට පෙර පරීක්ෂා කර බැලිය යුතු අතර දර්ශනීය අසමත් වීමක් අත්විඳිය යුතුය.


මෙම ප්‍රශ්නය සමාන ය , කෙසේ වෙතත් එය පරීක්ෂා කිරීමට යම් වැඩක් අවශ්‍ය වේ.
ST3

4
Ula ගුයිලූම්: ක්‍රියාත්මක කළ හැකි රූප ක්‍රියාවලි නොවේ. කාර්ය කළමනාකරු පෙන්වන්නේ ක්‍රියාවලි පමණි.
IInspectable

Answers:


392

රිචඩ්ගේ පිළිතුරෙන් ශීර්ෂ අගයන් විමසා බැලීමෙන් පසු , මම වේගවත්, පහසු සහ පෙළ සංස්කාරකයක් පමණක් අවශ්‍ය විසඳුමක් ඉදිරිපත් කළෙමි. වින්ඩෝස් හි පෙරනිමි notepad.exe පවා ක්‍රියා කරයි.

  1. ක්‍රියාත්මක කළ හැකි දේ පෙළ සංස්කාරකයේ විවෘත කරන්න. Open...වින්ඩෝස් Open with...ක්‍රියාත්මක කළ හැකි අය සඳහා සන්දර්භය මෙනුවේ විකල්පයක් නොපෙන්වන හෙයින් ඔබට සංස්කාරකගේ දෙබස් ඇදගෙන යාමට හෝ භාවිතා කිරීමට සිදු විය හැකිය.

  2. පළමු සිදුවීමෙන් පසු මුද්‍රණය කළ හැකි පළමු අක්‍ෂර පරීක්ෂා කරන්න PE. මෙම කොටස බොහෝ දුරට අවම වශයෙන් යම් අවකාශයකින් වට වී ඇති අතර (එය විශාල ප්‍රමාණයක් විය හැකිය), එබැවින් එය දෘශ්‍යමය වශයෙන් පහසුවෙන් කළ හැකිය.

මෙන්න ඔබ සොයා ගැනීමට යන්නේ:

32-බිට්:

PE  L

64-බිට්:

PE  d†

අනතුරු ඇඟවීමේ වචනයක්: විශාල ලිපිගොනු වල පෙරනිමි නොට්පෑඩ් භාවිතා කිරීම ඉතා මන්දගාමී විය හැකි බැවින් මෙගාබයිට් හෝ ඊට වඩා විශාල ගොනු සඳහා එය භාවිතා නොකිරීම හොඳය. මගේ නඩුවේදී MiB 12 ගොනුවක් ප්‍රදර්ශනය කිරීමට තත්පර 30 ක් පමණ ගත විය. කෙසේ වෙතත්, නොට්පෑඩ් ++ ට 120 MiB ක්‍රියාත්මක කළ හැකි ක්ෂණිකව පාහේ ප්‍රදර්ශනය කිරීමට හැකි විය.

ඔබට අතිරේක මෘදුකාංගයක් ස්ථාපනය කළ නොහැකි යන්ත්‍රයක ගොනුවක් පරීක්ෂා කිරීමට අවශ්‍ය නම් මෙය විසඳුම ප්‍රයෝජනවත් වේ.

අමතර තොරතුරු:

ඔබ සතුව HEX-Editor තිබේ නම්, PE අත්සනෙහි ඕෆ්සෙට් එක ඕෆ්සෙට් හි පිහිටා ඇත 0x3C. අත්සන නම් PE\0\0(අකුරු "පී" සහ "ඊ" පසුව ශුන්‍ය බයිට් දෙකක්), ඉන්පසු ලිට්ල් එන්ඩියන් හි බයිට් මැෂින් වර්ග දෙකකි.

අදාළ අගයන් වේ 0x866464-bit ක්රියාත්මක කිරීම සඳහා සහ 0x014c32-bit එකක් සඳහා ( 64 86හා 4c 01පිළිවෙළින් බොහෝ endianness සඳහා ගලපා විට, නමුත් ඔබ hex වටිනාකමක් සොයන විට ඕනෑම යහපත් hex කර්තෘ ස්වයංක්රීයව බොහෝ endianness හැසිරවිය ඇත). තවත් බොහෝ අගයන් ඇත, නමුත් ඔබට මේවායින් කිසිවක් හමු නොවනු ඇත, නැතහොත් ඔබේ වින්ඩෝස් පරිගණකයේ එවැනි ක්‍රියාත්මක කළ හැකි ඒවා ක්‍රියාත්මක කිරීමට නොහැකි වනු ඇත.

මයික්‍රොසොෆ්ට් පීඊ සහ කෝෆ් පිරිවිතර යන්ත්‍ර වර්ග අංශයෙන් යන්ත්‍ර වර්ගවල සම්පූර්ණ ලැයිස්තුව සහ .exe පිරිවිතර සමඟ සොයාගත හැකිය .


25
හේයි, මේක ටිකක් හොර වැඩක්. වඩා හොඳ සඳහා, මෙය සැබවින්ම බහුතරයක් අවස්ථාවන් සඳහා වේගවත්ම හා පහසුම විසඳුම ලෙස පෙනෙන හෙයින් :)
Sepagram

6
නොට්පෑඩ් නොට්පෑඩ් ++ පරාජය කරන විට දුර්ලභ අවස්ථාව. නොට්පෑඩ් මෙම අයිතිය පෙන්වයි, නොට්පෑඩ් තුළ ඔබට එය පෙන්වීම සඳහා කේතීකරණයේ අවුල් සහගත නමුත් එය ක්‍රියාත්මක විය!
zar

3
ODCoDEmanX මෙම විකල්පය මඟින් IDE හෝ JIT ඔබ වෙනුවෙන් තේරීමක් කරයි. වැඩි විස්තර සඳහා මෙම ප්‍රශ්නය හෝ මෙම බ්ලොග් සටහන බලන්න.
ඇලෙක්සැන්ඩර් රේවෝ

2
Post මුළු පෝස්ට් එක පහත් කිරීමට පෙර කියවීමට ඔබ සැබවින්ම කරදර වූවා නම්, ඔබට එය දැක Microsoft PE and COFF Specificationගත හැකි වනු ඇත, එය ලබා ගත හැකි තරම් ලේඛනගත කොන්ත්‍රාත්තුවක් වන අතර PE ශීර්ෂයේ නිශ්චිත ලිපිනය සොයා ගන්නේ කෙසේද යන්න පිළිබඳ උපදෙස්. ඕනෑම .exeගොනුවක. මයික්‍රොසොෆ්ට් හි ක්‍රියාත්මක කළ හැකි ආකෘතිය පිළිබඳ මයික්‍රොසොෆ්ට් නිල පිරිවිතරයට වඩා විශ්වාසදායක ප්‍රභවයක් ඔබ සතුව ඇත්නම්, එය කුමක්දැයි දැන ගැනීමට මම කැමතියි.
ඇලෙක්සැන්ඩර් රේවෝ

6
"MZ" සමඟ ආරම්භ වන ලිපිගොනු සඳහා, ඔබ තව ටිකක් සොයා බැලිය යුතුය. "රිච්එම්කූ _........" ට පසුව, මම ඕෆ්සෙට් 0x110 හි PE..L සොයා ගතිමි.
jnnnnn

134

විකල්පය dumpbin.exeසහිත SDK මෙවලමට /headersමෙම තොරතුරු ඇතුළත් වේ, මේ දෙක සංසන්දනය කරන්න (මම ප්‍රධාන තොරතුරු සඳහා නිර්භීතව එකතු කර ඇත්තෙමි)

PS [64] E: \ # 4> ඩම්ප්බින් / ශීර්ෂ C: \ Windows \ system32 \ cmd.exe
මයික්‍රොසොෆ්ට් (ආර්) COFF / PE ඩම්පර් අනුවාදය 10.00.40219.01
ප්‍රකාශන හිමිකම (ඇ) මයික්‍රොසොෆ්ට් සංස්ථාව. සියලුම හිමිකම් ඇවිරිණි.


C ගොනුවේ ඩම්ප්: \ Windows \ system32 \ cmd.exe

PE අත්සන හමු විය

ගොනු වර්ගය: ක්‍රියාත්මක කළ හැකි රූපය

FILE HEADER VALUES
            8664 යන්ත්‍රය (x64)
               කොටස් 6 ක්
        4CE798E5 කාල දිනය මුද්දර සෙනසුරාදා නොවැම්බර් 20 09:46:13 2010
               සංකේත වගුවට ගොනු දර්ශකය 0
               සංකේත 0 ක්
              විකල්ප ශීර්ෂයේ F0 ප්‍රමාණය
              ලක්ෂණ 22 ක්
                   ක්‍රියාත්මක කළ හැකි
                   යෙදුමට විශාල (> 2GB) ලිපින හැසිරවිය හැකිය
[...]

හා

PS [64] E: \ # 5> ඩම්ප්බින් / ශීර්ෂ C: \ Windows \ syswow64 \ cmd.exe
මයික්‍රොසොෆ්ට් (ආර්) COFF / PE ඩම්පර් අනුවාදය 10.00.40219.01
ප්‍රකාශන හිමිකම (ඇ) මයික්‍රොසොෆ්ට් සංස්ථාව. සියලුම හිමිකම් ඇවිරිණි.


C ගොනුවේ ඩම්ප්: \ Windows \ syswow64 \ cmd.exe

PE අත්සන හමු විය

ගොනු වර්ගය: ක්‍රියාත්මක කළ හැකි රූපය

FILE HEADER VALUES
             14 සී යන්ත්‍රය (x86)
               කොටස් 4 ක්
        4CE78E2B කාල දිනය මුද්දර සෙනසුරාදා නොවැම්බර් 20 09:00:27 2010
               සංකේත වගුවට ගොනු දර්ශකය 0
               සංකේත 0 ක්
              විකල්ප ශීර්ෂයේ E0 ප්‍රමාණය
             ලක්ෂණ 102 යි
                   ක්‍රියාත්මක කළ හැකි
                   32 බිට් වචන යන්ත්‍රය
[...]

1
64bit Itanium exe සඳහා ඔබට (IA64) ද දැක ගත හැකිය.
ඩැරල් බ්‍රැටන්

21
මම dumpbin /headers | findstr "machine"
සුපර් යූසර්

3
Dumpbin.exe මෙහි පිහිටා ඇත:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
Devid

3
Av ඩේවිඩ්: අවශ්‍ය නොවේ (වීඑස් හි විවිධ අනුවාදයන්, පෙරනිමි ස්ථාපන ස්ථානය භාවිතා නොකිරීම, වින්ඩෝස් එස්ඩීකේ වෙතින් අනුවාදය භාවිතා කිරීම): ඒ නිසා මම නියම නොකළෙමි.
රිචඩ්

6
දෘශ්‍ය ස්ටුඩියෝ විධාන රේඛාවෙන් ඔබ එය දියත් කරන්නේ නම් ඩම්ප්බින් භාවිතා කිරීම පහසුය: stackoverflow.com/a/477389/1390430
බෙන්

52

ඔබට සම්පූර්ණ වින්ඩෝස් sigcheck.exeඑස්ඩීකේ හෝ විෂුවල් ස්ටුඩියෝ නොමැති නම් හෝ අවශ්‍ය නොවන්නේ නම්, ඔබට SysInternals වෙතින් භාවිතා කළ හැකිය :

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 අනුවාදය) සමඟ භාවිතා කිරීමට උත්සාහ කරන්න, එවිට සිග්චෙක් ඔබට එය "32 බිට්" යැයි කියනු ඇත ...
Matt

Attatt රසවත්. ලින්ක් පෑඩ් .net යෙදුමක් වගේ; සිග්චෙක් නිවැරදිව ක්‍රියාත්මක වන්නේ දේශීය ක්‍රියාත්මක කළ හැකි දේ මත පමණක් දැයි මම කල්පනා කරමි (මේ සඳහා).
බ්‍රයන්ටිස්ට්

2
ඔව්, එය .NET යෙදුමකි. .NET හි, එය පූර්ව සම්පාදනය කර නොමැති නම්, ඔබට "x86" හෝ "AnyCPU" ඉලක්ක කළ හැකිය. "x86" සෑම විටම බිට් 32 ලෙස ධාවනය වේ, නමුත් AnyCPU 64 බිට් 64 පද්ධතියක් මත ධාවනය වේ, නමුත් බිට් 32 පද්ධතියක් මත බිට් 32 ලෙස ක්‍රියා කරයි. SigCheck මෙය සලකා බලා අවම වශයෙන් ".NET 32 bit හෝ 64 bit (AnyCPU)" පෙන්විය යුතුය. උදාහරණයක් ලෙස ILSpy පවසන්නේ “ගෘහ නිර්මාණ ශිල්පය: AnyCPU (64-bit කැමති)” - නමුත් ILSpy නෙට් නොවන EXE සඳහා ක්‍රියා නොකරනු ඇත.
මැට්

1
"මෙම යෙදුමට මයික්‍රොසොෆ්ට් වින්ඩෝස් අවශ්‍යයි" යැයි කියමින් වින්ඩෝස් නොවන ("ඩොස්") මෙහෙයුම් පද්ධතිය සඳහා ඇති පැරණි "එම්එස්" ශීර්ෂය මෙන් එය එසේ විය හැකිය ... ;-)
මැට්

2
ඔව්, හොඳ පැරණි කාලවලදී, ඔබ ෂෙල් එකේ ඩොස් නිදොස්කරණය කර ඇති අතර කේතය විසුරුවා හැරිය හැකි (මෙම පණිවිඩය මුද්‍රණය කරන එක් ඩොස් ඇමතුමක අඩංගු විය) ... සහ පෙළ වෙනුවට "පිළිතුර 42 යි." :-D
මැට්

47

fileඋපයෝගීතාව (උදා: සිග්වින් වෙතින්) 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 ස්ථාපනය කර ඇති ඕනෑම සංවර්ධකයින් සඳහා මෙම විසඳුම බහුලව තිබේ.
ෆ්‍රොන්ටියර්

කවුළු තුළ ක්‍රියාත්මක කළ හැකි ගොනු MZවෙනුවට ඇත්තේ PEඇයි?
BattleTested

ඔබට සිග්වින් අවශ්‍ය නොවන්නේ නම් GNU උපයෝගිතා තනි ද්විමය වශයෙන් ලබා ගත හැකි බව සඳහන් කිරීම වටී. gnuwin32.sourceforge.net/packages/file.htm
එම්. ජේ. වොල්ෂ්

34

සරල ක්‍රමයක් නම් එය ක්‍රියාත්මක කිරීමයි (ඔබ එය විශ්වාස කරයි යැයි උපකල්පනය කර) සහ කාර්ය කළමනාකරු තුළ ඇති ක්‍රියාවලි පටිත්ත දෙස බලන්න. 32bit ක්‍රියාවලි ක්‍රියාවලි නාමයේ අවසානයේ "* 32" පෙන්වනු ඇත. එය ඔබේ පරිගණකයේ ධාවනය කිරීමට කැමති දෙයක් නොවේ නම් ඔබට EXE Explorer උත්සාහ කළ හැකිය . එය 32 හෝ 64bit ද ඇතුළුව ක්‍රියාත්මක කළ හැකි තොරතුරු පිළිබඳ සම්පූර්ණ තොරතුරු සමූහයක් පෙන්වනු ඇත.


9
අවාසනාවට, මෙය ක්‍රියාත්මක කළ හැකි ධාවනය කිරීමට ඔබට අවශ්‍ය වේ. සමහර විට ඔබ එය ක්‍රියාත්මක නොවන්නේ මන්ද යන්න පිළිබඳ දෝශ නිරාකරණ ක්‍රමයක් ලෙස වැඩසටහනේ ගෘහ නිර්මාණ ශිල්පය පරීක්ෂා කළ යුතුය.
මයික් ක්‍රිස්ටියන්සන්

8
කොහොමද කරන්නේ ඔබ එය dll ක්රියාත්මක?
user34660


1
තනතුරේ තිබිය යුතු am සමුරින්.
user34660

34 user34660 ඔබ තාක්‍ෂණිකව නිවැරදියි, ඩීඑල්එල් වෙත mainපිවිසුම් ස්ථානයක් නොමැති අතර එය තනිවම ක්‍රියාවලියක් ලෙස ක්‍රියාත්මක නොවේ. ආරම්භක ශ්‍රිතයක් පටවන විට එය හැඳින්වෙන නමුත් එය "ප්‍රධාන" නොවේ.
samis

29

බොහෝ අය විශිෂ්ට 7-zip ස්ථාපනය කර ඇති අතර 7-Zip ෆෝල්ඩරය ඔවුන්ගේ එකතු කර PATHඇත. 7-zip, MSI ගොනු සහ PE ක්‍රියාත්මක කළ හැකි වැනි ZIP සහ RAR හැර ගොනු ආකෘති තේරුම් ගනී. 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

21

ප්‍රොසෙස් එක්ස්ප්ලෝරර් හි 64-බිට් අනුවාදය ඔබට පැවසිය හැකිය. ක්‍රියාත්මක කළ හැකි ධාවනය කර ක්‍රියාවලියේ ගුණාංග කවුළුව විවෘත කරන්න. ප්‍රධාන පටිත්තෙහි "රූපය: 32 බිට්" හෝ "රූපය: 64 බිට්" යනුවෙන් ඇතුළත් කිරීමක් ඇත.

රූප විස්තරය මෙහි ඇතුළත් කරන්න


25
Simply run the executableඔබට වැඩසටහන ක්‍රියාත්මක කිරීමට අවශ්‍ය නැතිනම් කුමක් කළ යුතුද ?
සයිනෙටෙක්

4
Yn සයිනෙටෙක් මුල් ප්‍රශ්නයෙන් එය එසේ නොවේ.
ඇන්ඩ rew ලැම්බර්ට්

ක්‍රියාත්මක කළ හැකි වේගයෙන් පිටවන්නේ නැතිනම් මෙය මට පහසුම ක්‍රමයයි.
starbeamrainbowlabs

11
කොහොමද කරන්නේ ඔබ එය dll ක්රියාත්මක?
user34660

17

වඩාත්ම සරල ක්‍රමය (දත්ත රහස්‍ය නොවන විට)

ද්විමය බිට් 32 හෝ 64 බිට් දැයි සොයා ගැනීමට සරලම ක්‍රමය Virustotal බව මට පෙනී File detailගියේය.

මෙම Additional informationවිකල්පය ගොනුව පිළිබඳ බොහෝ ප්‍රයෝජනවත් තොරතුරු සපයයි.

වෛරස් විශ්ලේෂණය


[Virustotal TrID


14

ක්‍රියාත්මක කළ හැකි සහ පසුව ක්‍රියාවලි ගවේෂකය හෝ ඒ හා සමාන මෙවලමක් පරික්ෂා කිරීමේ ක්‍රමයට පැහැදිලි අඩුපාඩු තිබේ:

  1. අපි ක්රියාවලිය ක්රියාත්මක කළ යුතුයි.
  2. කෙටිකාලීන ක්‍රියාදාමයන් සඳහා (echo hello world වර්ග වැනි), ක්‍රියාවලි ගවේෂකය නව ක්‍රියාවලියක් ආරම්භ වී ඇති බව ලියාපදිංචි නොකරනු ඇත.

Dumpbin.exe ක්‍රමයට බොහෝ විට අරමුණ විසඳිය හැකිය.

තවත් විකල්පයක් වනුයේ සිග්වින්ගේ ගොනු විධානය භාවිතා කිරීමයි. කෙසේ වෙතත්, මම එය කවුළු මත පරීක්ෂා කර නැත. එය ලිනක්ස් මත හොඳින් ක්‍රියා කරයි.

Usage: file program_under_test.exe

සංස්කරණය කරන්න: කවුළුව මත file.exe පරීක්ෂා කර ඇත. හොඳින් වැඩ කරයි. :)


1
ඩ්‍රැක්ස්ගේ ක්‍රමවේදය එතරම් ප්‍රයෝජනවත් නොවන අවස්ථා කිහිපයක් ඇති බව පැවසීමට අවශ්‍ය විය.
anishsane

3
>> කතුවරයාට මග හැරීමට අවශ්‍ය වූ වැඩසටහන ක්‍රියාත්මක කිරීම සඳහා මෙය තවමත් අවශ්‍ය වේ: නැත .. අපි එය ක්‍රියාත්මක කරන්නේ: file.exe program_under_test.exe
anishsane

1
සම්පූර්ණ cygwinපැකේජය ස්ථාපනය කිරීමෙන් වැළකී සිටීමට කැමති අයට gnuwin32 fileපැකේජය ලබා ගත හැකිය .
බොබ්

6
ishishishane සම්පූර්ණයෙන්ම වැරදියි. fileහුදෙක් තැටියේ දත්ත ද්විමය ආකෘතියෙන් කියවන අතර ඒවා හඳුනාගන්නා ඕනෑම මැජික් අංකයක් පරික්ෂා කර දත්ත ගබඩාවකට සාපේක්ෂව. වින්ඩෝස් 32-බිට් වැඩසටහන් PE32 ලෙසද 64-බිට් සහ .නෙට් වැඩසටහන් PE32 + ලෙසද පැමිණේ. තිත්තකම fileමුළුමනින්ම ශුන්‍ය වෙනසක් ඇති කරයි - 32-බිට් සහ 64-බිට් යෙදුම් දෙකටම තැටියෙන් දත්ත කියවිය හැකිය, එය අවශ්‍ය වන්නේ එයයි.
බොබ්

1
Ar මාක් හා! ඒ වන රසවත්. මම හිතන්නේ ඒ කියන්නේ .NET ධාවන කාල කඳ කොටස 32-බිට්. එබැවින් එය තත්පරයක භාගයක් සඳහා බිට් 32 ක්‍රියාවලියක් ක්‍රියාත්මක කරයි, නමුත් එම ක්‍රියාවලිය කරන්නේ .NET ධාවන කාලය ආරම්භ කිරීම පමණි, එය ස්වදේශීය 64-බිට් ක්‍රියාවලියක් නිර්මාණය කරයි.
ක්ලැක්

13

මෙන්න පවර්ෂෙල් විසඳුමක්, බාහිර පරායත්තතා හෝ කිසිවක් නැත. පවර්ෂෙල් විවෘත කරන්න, එහි ක්‍රියාකාරිත්වය අලවන්න (ඔබ දෙවරක් එබීමෙන් ඔබ නැවත විමසුමට පැමිණේ), ඉන්පසු ශ්‍රිතයට පහළින් ඇති මගේ උදාහරණවල මෙන් එය භාවිතා කරන්න:

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

සිනිඳු බව. ඉහත පිටපත ගොනුව වෙත යොමු කිරීමක් විවෘතව ඇති බව පෙනේ. මම පළමු වරට පවර්ෂෙල් වසා දැමූ තෙක් ගොඩනගා ගත නොහැකි විය (ඩීඑල්එල් \ බින්ගෙන් ප්‍රශ්න කිරීමට ස්ක්‍රිප්ට් ධාවනය විය).
samis

1
ඉතා සිසිල්. +1. Itanium අනිවාර්යයෙන්ම 64bit වුවද :)
පොහොසත් හෝමොල්කා

am සමුසුරින්: සමහර විට $stream.dispose();වසා දැමීමෙන් පසුව එකතු කළ හැකිද? ගොනු හැසිරවීම් නිදහස් කළ යුතුය. ( stackoverflow.com/questions/1999858/… )
යෝරික්


9

32-බිට් ලෙස සලකුණු කර ඇති ක්‍රියාත්මක කළ හැකි පවා 64-බිට් ලෙස ධාවනය කළ හැකි නම්, උදාහරණයක් ලෙස එය .NET ක්‍රියාත්මක කළ හැකි අතර එය 32- හෝ 64-බිට් ලෙස ධාවනය කළ හැකිය. වැඩි විස්තර සඳහා /programming/3782191/how-do-i-determine-if-a-net-application-is-32-or-64-bit බලන්න , එයට පිළිතුරක් ඇත .NET යෙදුමක් ක්‍රියාත්මක වන්නේ කෙසේද යන්න තීරණය කිරීමට CORFLAGS උපයෝගීතාව භාවිතා කළ හැකිය.

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

සිසිල් විධානය, නමුත් එය ස්වදේශීය (කළමනාකරණය නොකරන ලද) ක්‍රියාත්මක කළ හැකි / ඩීඑල්එස් සඳහා ක්‍රියා නොකරනු ඇත. ( corflags : error CF008 : The specified file does not have a valid managed header)
ටොමාස් ගන්ඩෝර්

@ ටොමාස්ගන්ඩර් ඔව්, මෙම පිළිතුරේ සන්දර්භය කළමනාකරණය කළේ කේතය පමණි. කළමනාකරණය නොකළ කේතයට අනෙක් පිළිතුරු මගින් පිළිතුරු සපයයි. මා දන්නා පරිදි, 32- හා 64-බිට් යන දෙකම ක්‍රියාත්මක කිරීම අතර මාරු විය හැක්කේ කළමනාකරණය කළ කේතයකට පමණි.
BlueMonkMN

7

මගේ ශත දෙක යැපුම් වෝකර් බාගත කර ක්‍රියාත්මක කළ හැකි ගොනුවක ගෘහ නිර්මාණ ශිල්පය සඳහා භාවිතා කර ඇත්තේ කුමක් දැයි පරීක්ෂා කරන්න.

එය භාවිතා කරන්නේ කෙසේද:

යෙදුම බාගත කර එය ආරම්භ කරන්න, විවෘත අයිකනය මත ක්ලික් කරන්න * .exe ගොනුවක් සොයා ගන්න → තෝරන්න සහ පරාවර්තන ස්කෑන් කිරීමෙන් පසු පතුලේ එක් තීරුවක “ගෘහ නිර්මාණ” විස්තර ඇති දත්ත සහිත ජාලයක් ඔබට පෙනේ (x86, x64)

ක්‍රියාත්මක කළ හැකි විවෘත කර ගොඩනංවන ගෘහ නිර්මාණ ශිල්පය බලන්න

පරායත්ත ඇවිදීමේ තිර රුව



5

ඔබ වින්ඩෝස් 7 හි සිටී නම්, වින්ඩෝස් එක්ස්ප්ලෝරර් එකක, ක්‍රියාත්මක කළ හැකි දේ මත දකුණු ක්ලික් කර ගුණාංග තෝරන්න. ගුණාංග කවුළුවෙහි අනුකූලතා පටිත්ත තෝරන්න. අනුකූලතා ප්‍රකාරය යටතේ ඔබට වින්ඩෝස් එක්ස්පී පෙනේ නම්, මෙය බිට් 32 ක්‍රියාත්මක කළ හැකි ය. ඔබ වින්ඩෝස් විස්ටා දුටුවහොත් එය බිට් 64 කි.


-1 කිසිසේත්ම සත්‍ය නොවේ. විවිධ 32 සහ 64 බිටු ද්විමය සියල්ල අනුකූලතා Windows 8
ප්‍රකාරයක්

Et පීටර් මම වින්ඩෝස් 7 හි ස්වල්පයක් උත්සාහ කර ඇති අතර එය සෑම විටම මට වැඩ කළේය. පෙරනිමි අනුකූලතා ප්‍රකාරය වින්ඩෝස් 8 වන ද්විමය පිළිබඳ උදාහරණයක් ඔබට දිය හැකිද? ඔබ කුමන වින්ඩෝස් වලද? ස්තූතියි.
අක්ෂය

මම සර්වර් 2012 ආර් 2 හි සිටින අතර අහඹු ද්විමය කිහිපයක් උත්සාහ කර ඇත්තෙමි. සමහර 32bit ඒවා පෙන්වන Windows XP SP2නමුත් අනෙක් ඒවා ලෙස Vistaහෝ පෙන්වයි Windows 8. එබැවින් මෙම ක්රමය නිවැරදි නොවේ.
පීටර් හැන්ඩෝෆ්

EtPeterHahndorf ඔවුන්ගේ භාෂාව ටිකක් අක්‍රීය නමුත් ඔහු අදහස් කළේ ඔබ ගැළපුම පහළට වැටෙන විට, එක්ස්පී විකල්පයක් නම් එය 32bit වේ. එසේ නොමැතිනම් ඔබට ඇති එකම විකල්පය Vista-
onwards නම්

5

ඔබේ සන්දර්භය මෙනුවට 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 ගොනුව මත දෙවරක් ක්ලික් කරන්න: වින්ඩෝස් ලේඛකාධිකාරයේ නව යතුරක් එක් කරනු ඇත:

[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]

ක්‍රියාත්මක කළ හැකි ගොනුවක් මත දකුණු ක්ලික් කිරීමෙන් එය සන්දර්භය මෙනුවේ " 32/64 බිට් ටෙස්ට් " ලෙස දිස්වනු ඇත .

අයිතමය ක්ලික් කිරීමෙන් c:\\temp\\x86TestStart.bat\VBscript ගොනුව ආරම්භ වන කණ්ඩායම් ගොනුව ආරම්භ x86or64.vbsවන අතර එය exe අත්සන කියවා ප්‍රති .ල පෙන්වයි.

ඔබට රෙජිස්ට්රි සමඟ සම්බන්ධ වීමට නොහැකි නම් හෝ අවශ්‍ය නොවන්නේ නම්, .vbs ගොනුව ක්වික්ලැන්ච් තීරුවේ පිටපත් කර එය ක්‍රියාත්මක කළ හැකි ලෙස ඇදගෙන යන්න.


2

මෙය සඳහන් කර ඇති බවක් මා දැක නැත. NTCore විසින් CFF Explorer නමින් PE viewer වැඩසටහනක් ඇත , එමඟින් ඔබට මෙම තොරතුරු ලබා දිය හැකිය. එය බාගත කර අතේ ගෙන යා හැකි ලෙස ධාවනය කළ හැකි නමුත් ඔබට අවශ්‍ය නම් එය ස්ථාපනය කළ හැකිය.

ද්විමය ( .exe, .dllආදිය) මත දකුණු ක්ලික් කර "CFF Explorer සමඟ විවෘත කරන්න" තෝරන්න. Nt ශීර්ෂයන් වෙත යන්න -> ගොනු ශීර්ෂය -> "ලක්ෂණ" ක්ෂේත්‍රය මත "මෙතැන ක්ලික් කරන්න" ක්ලික් කරන්න

එය 32bit වැඩසටහනක් නම්, "32 බිට් වචන යන්ත්‍රය" සලකුණු කොටුව සලකුණු කරනු ලැබේ. උදාහරණයක් ලෙස, පහත රූපයේ ඔබට දැකිය හැකි පරිදි මම නොට්පෑඩ් ++ හි 32bit අනුවාදය ස්ථාපනය කර ඇත්තෙමි. නැතිනම් එය 64bit ය.

රූප විස්තරය මෙහි ඇතුළත් කරන්න


සීඑෆ්එෆ් ගවේෂකය සමඟ ඉක්මන් ක්‍රමයක් තිබේ: ගොනුවක් පූරණය කළ විගසම, “ගොනු වර්ගය” යටතේ ඔබට “අතේ ගෙන යා හැකි ක්‍රියාත්මක කළ හැකි 64” හෝ “අතේ ගෙන යා හැකි ක්‍රියාත්මක කළ හැකි 32” ඇත
ආතර් වී

2

එහෙත්, WSL හි fileඅණ බොහෝ සෙයින් ක්‍රියාත්මක වේ.

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

1

මගේ ශත දෙක: සී ++ සංවර්ධකයෙකු ලෙස, යැපුම් ඇවිදින්නෙකු ( http://www.dependencywalker.com/ ) ඉතා තොරතුරු සහිත වන අතර එය බිටු 64/32 පෙන්වීම පමණක් නොව ඊට සම්බන්ධ සෑම ඩීඑල් එකක්ම: රූප විස්තරය මෙහි ඇතුළත් කරන්න

සෑම ගොනු නාමයකම වම්පස 64 ක් ඔබට දැක ගත හැකිය ...


1
තිර රුව මගින් පිළිතුර පෙන්වන්නේ නැත - 32bit vs 64bit තොරතුරු ...
TomEus

OmTomEus තිර පිටපතෙහි "64" ඇත, නමුත් ගොනු නාමයේ නොව ගොනු ලාංඡනය තුළ (දකුණු පැත්තේ)
phuclv

1

වින්ඩෝස් 10 හි කාර්ය කළමනාකරුගේ වේදිකා තීරුව

වින්ඩෝස් 7 හි වේදිකා තීරුවක් නොමැත. එබැවින් වින්ඩෝස් 7 කාර්ය කළමනාකරු එය පෙන්වන්නේ නැත.

කවුළු 10 හි තීරු තේරීම තවදුරටත් 'දර්ශනය' යටතේ නොමැත. වින්ඩෝස් 10 හි, විස්තර පටිත්තෙහි ඇති විට, ඔබ තීරු ශීර්ෂය මත දකුණු ක්ලික් කර 'තීරු තෝරන්න'. ඉන්පසු 'වේදිකාව' සඳහා කොටුව සලකුණු කරන්න.

රූප විස්තරය මෙහි ඇතුළත් කරන්න

රූප විස්තරය මෙහි ඇතුළත් කරන්න


1
මේ සඳහා යෙදුම ක්‍රියාත්මක කිරීම අවශ්‍ය වන අතර එය නුසුදුසු විය හැකිය. එසේම, ඔබට ඩීඑල්එල් ධාවනය කළ නොහැක.
ඇන්ඩ්‍රියාස් රෙජ්බ්‍රෑන්ඩ්

Nd ඇන්ඩ්‍රියාස් රෙජ්බ්‍රෑන්ඩ් සාධාරණ කරුණක් නම්, ඔහු ඩීඑල් එකක් ගැන සඳහන් නොකලත්, ඔහු ඉල්ලුම් පත්‍රය පමණක් කීවේය .. එසේම ඩීඑල්එල් EXE සමඟ 'බිට්නස්' සමඟ
ගැලපෙනු ඇත

1

පවර්ෂෙල් හි මගේ සරල අනුවාදය, මගේ පරීක්ෂණ වලින් 100% විශ්වාසදායක බව පෙනේ.

Clear-Host
$Check32Bit = $null
$Check64Bit = $null

$File = "C:\WINDOWS\system32\notepad.exe"

$ExeData = get-content $File -totalcount 50

$Check32Bit = $ExeData | select-string -Pattern "PE..L" -Quiet
$Check64Bit = $ExeData | select-string -Pattern "PE..d†" -Quiet

if ($Check32Bit) {
"File is 32bit (x86)"
}
elseif ($Check64Bit) {
"File is 64bit (x64)"
}
else {
"Couldn't identify if the file is 32bit or 64bit"
}

0
  • යෙදුම ක්‍රියාත්මක කරන්න
  • කාර්ය කළමනාකරු විවෘත කරන්න
  • දකුණු ක්ලික් කර ඩම්ප් ගොනුව සාදන්න
  • පහළ මාර්ගය සටහන් කරන්න
  • මාර්ගයට ගොස් .DMPවිෂුවල් ස්ටුඩියෝ හි ඩම්ප් විවෘත කරන්න
  • එහිදී ඔබට සියලු විස්තර ලැබේ
  • ක්‍රියාවලි ගෘහ නිර්මාණ ශිල්පය පරීක්ෂා කරන්න:

4
මෙම පිළිතුර යෙදුම ක්‍රියාත්මක කිරීම අවශ්‍ය බව අවධාරනය කිරීමට මම බැඳී සිටිමි. පෙර අදහස් දැක්වූවන් යෝජනා කළේ මෙය නුසුදුසු විය හැකි බවයි. එසේම, සියලු වින්ඩෝස් වේදිකාවල දෘශ්‍ය ස්ටුඩියෝ ස්වයංක්‍රීයව ලබා ගත නොහැක.
ජී-මෑන් පවසන්නේ 'මොනිකා නැවත
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.