উইন্ডোজে কোনও বাইনারি 32 বা 64 বিট কিনা তা কীভাবে পরীক্ষা করবেন?


319

উইন্ডোজে কোনও বাইনারি 32 বা 64 বিট কিনা তা পরীক্ষা করার কোনও সহজ উপায় আছে? প্রোগ্রামটি 32 বিট মেশিনে নিয়ে যাওয়ার আগে আমাকে পরীক্ষা করে দেখার দরকার এবং দর্শনীয় ব্যর্থতার অভিজ্ঞতা রয়েছে।


এই প্রশ্নটি অনুরূপ , তবে এটি পরীক্ষা করতে কিছু কাজ প্রয়োজন।
এসটি 3

3
@ গুইলাউম: এক্সিকিউটেবল ছবিগুলি প্রক্রিয়া নয়। টাস্ক ম্যানেজার কেবল প্রক্রিয়াগুলি দেখায়।
IInspectable

উত্তর:


346

রিচার্ডের উত্তর থেকে শিরোনামের মানগুলি পরীক্ষা করার পরে , আমি একটি সমাধান নিয়ে এসেছি যা দ্রুত, সহজ এবং কেবল একটি পাঠ্য সম্পাদক দরকার। এমনকি উইন্ডোজের ডিফল্ট নোটপ্যাড.এক্সই কাজ করবে।

  1. টেক্সট এডিটরে এক্সিকিউটেবল খুলুন। আপনাকে সম্পাদকের Open...ডায়ালগটি টেনে এনে ছেড়ে দিতে হতে পারে , কারণ উইন্ডোজ Open with...এক্সিকিউটেবলের জন্য প্রসঙ্গ মেনুতে বিকল্প প্রদর্শন করে না show

  2. প্রথম ঘটনার পরে প্রথম মুদ্রণযোগ্য অক্ষরগুলি পরীক্ষা করুন PE। এই অংশটি সম্ভবত কমপক্ষে কিছু সাদা জায়গা (এটি অনেকাংশে হতে পারে) দ্বারা বেষ্টিত হওয়ার সম্ভাবনা রয়েছে, সুতরাং এটি সহজেই দৃষ্টিকটুভাবে করা যায়।

আপনি যা সন্ধান করতে চলেছেন তা এখানে:

এক্স 86:

PE  L

x64:

PE  d†

সতর্কতার শব্দ: বড় ফাইলগুলিতে ডিফল্ট নোটপ্যাড ব্যবহার করা খুব ধীর হতে পারে, তাই কোনও মেগাবাইট বা কয়েকটি এর চেয়ে বড় ফাইলগুলির জন্য এটি ব্যবহার না করাই ভাল। আমার ক্ষেত্রে 12 টি এমআইবি ফাইল প্রদর্শন করতে 30 সেকেন্ড সময় নিয়েছিল। নোটপ্যাড ++ তবে প্রায় 120 তত্কালীন এক্সিকিউটেবলের সাথে এমআইবি প্রদর্শন করতে সক্ষম হয়েছিল।

আপনি কোনও অতিরিক্ত সফ্টওয়্যার ইনস্টল করতে পারবেন না এমন কোনও মেশিনে কোনও ফাইল পরীক্ষা করার প্রয়োজন হলে সমাধানটি কার্যকর হতে পারে।

অতিরিক্ত তথ্য:

আপনার যদি একটি এইচএক্স-সম্পাদক উপলব্ধ থাকে তবে পিই স্বাক্ষরের অফসেট অফসেটে অবস্থিত 0x3C। স্বাক্ষরটি হ'ল PE\0\0(অক্ষর "পি" এবং "ই" এর পরে দুটি নাল বাইট) এবং তার পরে লিটল এন্ডিয়ানে দুটি বাইট মেশিন টাইপ হয়।

প্রাসঙ্গিক মানগুলি 0x8664এক্স 64 এক্সিকিউটেবল এবং 0x14cএক্স 86 এর জন্য। আরও অনেকগুলি সম্ভাব্য মান রয়েছে তবে আপনি সম্ভবত এর মধ্যে কোনওটির মুখোমুখি হতে পারবেন না বা আপনার উইন্ডোজ পিসিতে এই জাতীয় নির্বাহক চালাতে সক্ষম হবেন।

মেশিনের ধরণের সম্পূর্ণ তালিকা সহ বাকী .exe স্পেসিফিকেশনগুলি মাইক্রোসফ্ট পিই এবং সিওএফএফ স্পেসিফিকেশন মেশিন প্রকার বিভাগে পাওয়া যাবে।


21
আরে, এটা বরং হ্যাকি। এবং সর্বোত্তম হিসাবে, যেহেতু এটি প্রকৃতপক্ষে বেশিরভাগ ক্ষেত্রে ক্ষেত্রে সবচেয়ে দ্রুত এবং সহজ সমাধান হিসাবে
প্রতীয়মান হয়েছে

4
নোটপ্যাড নোটপ্যাড ++ কেটে গেলে বিরল উদাহরণ। নোটপ্যাড এই অধিকারটি দেখায়, নোটপ্যাডে আপনার এনকোডিংয়ের সাথে এটি দেখানোর জন্য গোলমাল হয়েছে তবে এটি কার্যকর হয়েছে!
জার

2
@ কোডেম্যানএক্স এই বিকল্পটির অর্থ আইডিই বা জেআইটি আপনার জন্য পছন্দ করে। দেখুন এই প্রশ্নের অথবা এই ব্লগ পোস্টে আরো বিস্তারিত জানার জন্য।
আলেকজান্ডার রেভো

2
@Inspectable আপনি যদি সম্পূর্ণ পোস্টটি ডাউন ডাউন করার আগে পড়তে উদ্বিগ্ন হয়ে থাকেন তবে আপনি লিঙ্কটি দেখতে পেতেন Microsoft PE and COFF Specification, এটি যে কোনও ডকুমেন্টেড চুক্তি হিসাবে পেতে পারে, পাশাপাশি পিই শিরোনামের সঠিক ঠিকানা কীভাবে সন্ধান করতে হয় তার জন্য নির্দেশাবলী যে কোনও .exeফাইলের মধ্যে মাইক্রোসফ্টের নিজস্ব নির্বাহযোগ্য বিন্যাসে মাইক্রোসফ্টের অফিসিয়াল স্পেসিফিকেশনের চেয়ে যদি আপনার কাছে আরও নির্ভরযোগ্য উত্স থাকে তবে আমি এটি জানতে আগ্রহী to
আলেকজান্ডার রেভো

6
"এমজেড" দিয়ে শুরু হওয়া ফাইলগুলির জন্য আপনাকে আরও কিছুটা দেখার প্রয়োজন। আমি "রিচএমকিউ _........" এর ঠিক পরে 0x110 অফসেটে পিই..এল পেয়েছি।
jnnnnn

120

বিকল্পটির dumpbin.exeসাথে থাকা এসডিকে সরঞ্জামটিতে /headersএই তথ্য অন্তর্ভুক্ত রয়েছে, এই দুটি তুলনা করুন (মূল তথ্যের জন্য আমি সাহস যোগ করেছি)

পিএস []৪] ই: \ # 4> ডাম্পবিন / শিরোনাম সি: \ উইন্ডোজ \ সিস্টেম 32 \ সেমিডি.এক্সই
মাইক্রোসফ্ট (আর) সিএফএফ / পিই ডাম্পার সংস্করণ 10.00.40219.01
কপিরাইট (সি) মাইক্রোসফ্ট কর্পোরেশন। সর্বস্বত্ব সংরক্ষিত.


ফাইল ডাম্প সি: \ উইন্ডোজ \ system32 \ সেমিডি.এক্সে

পিই স্বাক্ষর পাওয়া গেছে

ফাইলের ধরণ: কার্যকরী চিত্র IM

ফাইল হেডার মূল্য
            8664 মেশিন (x64)
               বিভাগের 6 সংখ্যা
        4CE798E5 সময় তারিখ স্ট্যাম্প শনিবার 20 নভেম্বর 09:46:13 2010
               প্রতীক টেবিলের 0 টি ফাইল পয়েন্টার
               প্রতীক সংখ্যা 0
              0চ্ছিক শিরোনামের F0 আকার
              22 বৈশিষ্ট্য
                   সম্পাদনযোগ্য
                   অ্যাপ্লিকেশন বড় (> 2 জিবি) ঠিকানাগুলি পরিচালনা করতে পারে
[...]

এবং

PS [64] E: \ # 5> ডাম্পবিন / শিরোনাম সি: \ উইন্ডোজ ys syswow64 \ cmd.exe
মাইক্রোসফ্ট (আর) সিএফএফ / পিই ডাম্পার সংস্করণ 10.00.40219.01
কপিরাইট (সি) মাইক্রোসফ্ট কর্পোরেশন। সর্বস্বত্ব সংরক্ষিত.


ফাইলটির ডাম্প সি: \ উইন্ডোজ ys syswow64 \ cmd.exe

পিই স্বাক্ষর পাওয়া গেছে

ফাইলের ধরণ: কার্যকরী চিত্র IM

ফাইল হেডার মূল্য
             14 সি মেশিন (x86)
               বিভাগের 4 সংখ্যা
        4CE78E2B সময় তারিখ স্ট্যাম্প শনিবার 20 নভেম্বর 09:00:27 2010
               প্রতীক টেবিলের 0 টি ফাইল পয়েন্টার
               প্রতীক সংখ্যা 0
              0চ্ছিক শিরোনামের E0 আকার
             102 বৈশিষ্ট্য
                   সম্পাদনযোগ্য
                   32 বিট শব্দ মেশিন
[...]

1
আপনি 64 আইবিটি ইটানিয়াম এক্সের জন্যও (আইএ 64৪) দেখতে পাবেন।
ড্যারিল ব্রাটেন

21
যেহেতু আমি dumpbin /headers | findstr "machine"
সুপারইউজারে

3
ডাম্পবিন.এক্স্সি এখানে অবস্থিত:C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
ডেভিড

3
@ ডেভিড: অগত্যা নয় (ভিএস-র বিভিন্ন সংস্করণ, ডিফল্ট ইনস্টল অবস্থানটি ব্যবহার না করে, উইন্ডোজ এসডিকে সংস্করণ ব্যবহার করে): এজন্য আমি নির্দিষ্ট করেছিলাম না।
রিচার্ড

6
আপনি যদি ভিজ্যুয়াল স্টুডিও কমান্ড-লাইন থেকে এটি চালু করেন তবে ডাম্পবিন ব্যবহার করা সবচেয়ে সহজ: stackoverflow.com/a/477389/1390430
বেন

46

যদি আপনার কাছে পুরো উইন্ডোজ এসডিকে বা ভিজ্যুয়াল স্টুডিও না থাকে বা চান, আপনি sigcheck.exeসিসইন্টার্নালস থেকে ব্যবহার করতে পারেন :

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
সর্বদা নির্ভুল বলে মনে হয় না: এটি লিনকপ্যাড.এক্সই (যেকোনও ইউএসইউপিউ-64৪ বিট সংস্করণ) দিয়ে ব্যবহার করার চেষ্টা করুন এবং সিগচেক আপনাকে বলবে এটি "32 বিট" ...
ম্যাট

@ ম্যাট আকর্ষণীয় লিনকপ্যাডটি। নেট অ্যাপের মতো শোনাচ্ছে; আমি অবাক হয়েছি যে সিগচেক কেবল দেশীয় এক্সিকিউটেবলের (এই উদ্দেশ্যে) সঠিকভাবে কাজ করে।
ব্রিটিশবাদী

2
হ্যাঁ, এটি একটি। নেট অ্যাপ্লিকেশন। .NET- এ, যদি এটি পূর্বপাঠিত না হয় তবে আপনি "x86" বা "যেকোনও ইউএসইপিইউ" লক্ষ্যবস্তু করতে পারেন। "x86" সর্বদা 32 বিট হিসাবে চলবে, তবে যেকোনো সিপিইউ 64 বিট সিস্টেমে 64 বিট হিসাবে চলবে, তবে 32 বিট সিস্টেমে 32 বিট হিসাবে চলবে। সিগচেকের এটি বিবেচনা করা উচিত এবং কমপক্ষে "। নেট 32 বিট বা 64 বিট (যেকোনও ইউএসইপিইউ)" দেখানো উচিত। আইএলএসপিএস উদাহরণস্বরূপ এই ক্ষেত্রে বলেছে "আর্কিটেকচার: যেকোনও ইউএসইউপিউ (64৪-বিট পছন্দসই)" - তবে আইএলএসপিএস নেট-এক্সের জন্য কাজ করবে না।
ম্যাট

1
পুরানো "এমজেড" শিরোনামের মতো এটিও হতে পারে যা নন-উইন্ডোজ ("ডস") OS এর জন্য রয়েছে কেবল "এই অ্যাপ্লিকেশনটির জন্য মাইক্রোসফ্ট উইন্ডোজ প্রয়োজন" ... ;-)
ম্যাট

2
হ্যাঁ, খুব ভাল সময়, যেখানে আপনার শেলের মধ্যে একটি ডস ডিবাগার ছিল এবং কোডটি বিচ্ছিন্ন করতে পারে (এতে কেবল এই বার্তাটি প্রিন্ট করার জন্য একটি মাত্র ডস কল ছিল) ... এবং "উত্তরটি 42 টি" দিয়ে পাঠ্যটি প্রতিস্থাপন করুন " :-D
ম্যাট

38

আমি নিশ্চিত করতে পারি যে fileইউটিলিটি (যেমন সাইগউইন থেকে) 32- এবং 64-বিট এক্সিকিউটেবলের মধ্যে পার্থক্য করবে। তারা নিম্নলিখিত হিসাবে উপস্থিত হয়:

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

আপনি দেখতে পাচ্ছেন, এটি খুব স্পষ্ট যা কোনটি। অতিরিক্তভাবে এটি কনসোল এবং জিইউআই এক্সিকিউটেবলের মধ্যেও পার্থক্য করে, যা সুস্পষ্ট।


1
এই সমাধানটি যে কোনও বিকাশকারীদের জন্য এমএসএসজিট ইনস্টল করা বেশ সাধারণভাবে উপলভ্য।
ফ্রন্টিয়ারপাইকো

উইন্ডোতে এক্সিকিউটেবল ফাইলের MZপরিবর্তে কেন PE?
যুদ্ধক্ষেত্র

আপনার যদি অন্যথায় সাইগউইনের প্রয়োজন না হয় তবে জিএনইউ ইউটিলিটিগুলি পৃথক বাইনারি হিসাবে প্রাপ্ত হতে পারে তা উল্লেখযোগ্য। gnuwin32.sourceforge.net/packages/file.htm
এমজে ওয়ালশ

32

একটি সহজ পদ্ধতি হ'ল এটি চালানো (আপনার বিশ্বাস এটি বিশ্বাস করে) এবং টাস্ক ম্যানেজারের প্রক্রিয়া ট্যাবটি একবার দেখুন। 32 বিট প্রসেসগুলি প্রক্রিয়াটির নামের শেষে "* 32" প্রদর্শন করবে। যদি এটি আপনার কম্পিউটারে চালাতে ইচ্ছুক না হয় তবে আপনি EXE এক্সপ্লোরার চেষ্টা করতে পারেন । এটি 32 বা 64 বিট হয় কিনা তা সহ এক্সিকিউটেবলের উপর পুরো গুচ্ছ তথ্য প্রদর্শন করবে।


8
দুর্ভাগ্যক্রমে, এর জন্য আপনাকে এক্সিকিউটেবল চালানো দরকার। সম্ভবত আপনার প্রোগ্রামটির আর্কিটেকচারটি কেন চলছে না তা সমস্যা সমাধানের পদ্ধতি হিসাবে এটি পরীক্ষা করা দরকার।
মাইক খ্রিস্টানসেন

6
কীভাবে আপনি ডিএলএল চালাবেন?
ব্যবহারকারী 34660


1
@ সামুসারিন যে পোস্টে থাকা উচিত।
ব্যবহারকারী 34660

@ ব্যবহারকারী 34660 আপনি প্রযুক্তিগতভাবে সঠিক, একটি ডিএলএল এর mainপ্রবেশ পয়েন্ট নেই এবং তাই এটি একা একা প্রক্রিয়া হিসাবে চালিত হবে না। এটি যখন লোড করা হয় তখন একটি আরম্ভকরণ ফাংশন বলা হয় তবে এটি "মূল" নয়।
সামিস

24

অনেক লোকের জন্য দুর্দান্ত 7-জিপ ইনস্টল করা আছে এবং তাদের মধ্যে 7-জিপ ফোল্ডার যুক্ত করা হয়েছে PATH। 7-জিপ এমএসআই ফাইল এবং পিই এক্সিকিউটেবলের মতো জিপ এবং আরআর ছাড়া ফাইল ফর্ম্যাটগুলি বোঝে। 7z.exeপ্রশ্নে কেবল পিই ফাইলের (ক্স বা ডিএলএল) কমান্ড লাইনটি ব্যবহার করুন :

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ভিতরে একটি বাস্তবায়ন রয়েছে ?
ফুক্লভ

17

প্রক্রিয়া এক্সপ্লোরার -৪-বিট সংস্করণ আপনাকে বলতে পারে। কেবল এক্সিকিউটেবল চালানো এবং প্রক্রিয়া বৈশিষ্ট্য উইন্ডো খুলুন। মূল ট্যাবে একটি এন্ট্রি রয়েছে যা "চিত্র: 32 বিট" বা "চিত্র: 64 বিট" বলে says

এখানে চিত্র বর্ণনা লিখুন


23
Simply run the executableএবং আপনি যদি প্রোগ্রামটি চালাতে না চান ?
সিনিটেক

3
@ সাইনটেক মূল প্রশ্নটি বোঝায় না।
অ্যান্ড্রু ল্যামবার্ট

আমার মনে হয় এটি আমার পক্ষে সহজতম পদ্ধতি, যদি না এক্সিকিউটেবল খুব দ্রুত প্রস্থান না করে।
স্টারবিয়াম্রেনবোলাবস

7
কীভাবে আপনি ডিএলএল চালাবেন?
ব্যবহারকারী 34660

15

সর্বাধিক সহজ উপায় (যখন তথ্য গোপনীয় নয়)

আমি দেখতে পেয়েছি যে File detailবাইনারি 32 বিট বা 64 বিট হয় কিনা তা খুঁজে পাওয়ার সহজ উপায় হ'ল ভাইরাসটোটাল

Additional informationবিকল্প উপরন্তু ফাইল সম্পর্কে অনেক সহায়ক তথ্য মধ্যে প্রদান করে।

ভাইরাসগত বিশ্লেষণ


[ভাইরাসোটাল ট্রাইড


12

একটি এক্সিকিউটেবল চালানোর পদ্ধতি এবং তারপরে প্রক্রিয়া এক্সপ্লোরার বা অনুরূপ সরঞ্জাম চেক করা, এর কিছু স্পষ্ট ত্রুটি রয়েছে:

  1. আমাদের প্রক্রিয়াটি কার্যকর করতে হবে।
  2. স্বল্পকালীন প্রক্রিয়াগুলির জন্য (যেমন প্রতিধ্বনি হ্যালো ওয়ার্ল্ড টাইপস) process

Dumpbin.exe পদ্ধতি সম্ভবত উদ্দেশ্য সমাধান করতে পারে solve

আরেকটি বিকল্প হ'ল সাইগউইনের ফাইল কমান্ড ব্যবহার করা । তবে আমি উইন্ডোতে এটি পরীক্ষা করিনি not এটি লিনাক্সে ভাল কাজ করে।

Usage: file program_under_test.exe

সম্পাদনা: উইন্ডোতে সবেমাত্র file.exe পরীক্ষা করা হয়েছে। ঠিকভাবে কাজ করে. :)


1
শুধু বলতে চেয়েছিলেন, কিছু পরিস্থিতি রয়েছে যেখানে ড্রাকসের পদ্ধতিটি খুব বেশি সহায়ক হবে না।
আনিসনে

3
>> এটির জন্য এখনও প্রোগ্রামটি চালানো দরকার যা লেখক এড়াতে চেয়েছিলেন: না .. আমরা এটি চালাচ্ছি: file.exe program_under_test.exe
anishsane

1
এবং যারা পুরো cygwinপ্যাকেজটি ইনস্টল করা এড়াতে চান তারা gnuwin32 fileপ্যাকেজটি ধরে নিতে পারেন ।
বব

6
@ নানসনে সম্পূর্ণ ভুল fileকেবল বাইনারি ফর্ম্যাটে ডিস্ক থেকে ডেটা পড়ে এবং কোনও ডাটাবেসের সাথে তুলনা করে যেকোন ম্যাজিক সংখ্যা সনাক্ত করে তা পরীক্ষা করে। উইন্ডোজের 32-বিট প্রোগ্রামগুলি PE32 হিসাবে উপস্থিত হয় এবং 64-বিট এবং .NET প্রোগ্রামগুলি PE32 + হিসাবে উপস্থিত হয়। fileনিজের সাক্ষ্যই একেবারে শূন্য পার্থক্য করে - 32-বিট এবং 64-বিট অ্যাপ্লিকেশন উভয়ই ডিস্ক থেকে ডেটা পড়তে পারে, যা এটির প্রয়োজন needs
বব

1
@ মার্কহ হা! যে হয় আকর্ষণীয়। আমি অনুমান করছি যার অর্থ। নেট রানটাইম স্টাবটি 32-বিট। সুতরাং এটি একটি সেকেন্ডের ভগ্নাংশের জন্য একটি 32-বিট প্রক্রিয়া চালায়, তবে সমস্ত প্রক্রিয়াটি .NET রানটাইম শুরু করে, যা একটি নেটিভ 64৪-বিট প্রক্রিয়া তৈরি করে।
ক্লেক

10

এখানে একটি পাওয়ারশেল সমাধান, বাহ্যিক নির্ভরতা বা কিছুই নেই। পাওয়ারশেলটি খুলুন, সেখানে ফাংশনটি আটকে দিন (দু'বার এন্টার চাপুন যাতে আপনি প্রম্পটে ফিরে যান), তারপরে এটি ফাংশনের নীচে আমার উদাহরণ হিসাবে ব্যবহার করুন:

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

Slickness। উপরের স্ক্রিপ্টটি ফাইলটির একটি রেফারেন্স উন্মুক্ত বলে মনে হচ্ছে। আমি প্রথম পাওয়ারশেল বন্ধ না করা পর্যন্ত তৈরি করতে পারিনি (ডিএনএলকে \বিনে জিজ্ঞাসাবাদের জন্য স্ক্রিপ্ট চালানো)।
সামিস

1
খুব ঠান্ডা. +1 টি। ইটানিয়াম যদিও অবশ্যই bit৪ বিট :)
ধনী হোমোলকা

@ সামুসারিন: সম্ভবত $stream.dispose();বন্ধের পরে যুক্ত ? ফাইল হ্যান্ডলগুলি প্রকাশ করা উচিত। ( Stackoverflow.com/questions/1999858/... )
Yorik


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 ইউটিলিটি ব্যবহার করা যেতে পারে।

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-বিট উভয় হিসাবে নির্বাহের মধ্যে স্যুইচ করতে পারে।
ব্লুমোনকএমএন


3

আপনি যদি উইন্ডোজ 7 এ থাকেন তবে উইন্ডোজ এক্সপ্লোরারে এক্সিকিউটেবলের ডান ক্লিক করুন এবং বৈশিষ্ট্য নির্বাচন করুন। বৈশিষ্ট্য উইন্ডোতে সামঞ্জস্যতা ট্যাবটি নির্বাচন করুন। যদি সামঞ্জস্যতা মোড বিভাগের অধীনে আপনি উইন্ডোজ এক্সপি দেখতে পান তবে এটি একটি 32 বিট কার্যকর করা যায়। আপনি যদি উইন্ডোজ ভিস্তা দেখতে পান তবে এটি 64 বিট।


-1 মোটেও সত্য নয়। বিভিন্ন 32 এবং 64 বিট বাইনারিগুলিকে Windows 8
সমস্তের

@ পিটার আমি উইন্ডোজ on এ বেশ কয়েকটি চেষ্টা করেছি এবং এটি সর্বদা আমার পক্ষে কাজ করে। উইন্ডোজ 8-র ডিফল্ট সামঞ্জস্যতা মোড যেখানে আপনি বাইনারিটির উদাহরণ দিতে পারেন? এছাড়াও আপনি কি উইন্ডোজ চালু? ধন্যবাদ।
axxis

আমি সার্ভারে 2012 আর 2 এ রয়েছি এবং কয়েকটি এলোমেলো বাইনারি চেষ্টা করেছি। কিছু 32 বিট লোকেরা দেখায় Windows XP SP2তবে অন্যরা Vistaবা হিসাবে প্রদর্শিত হয় Windows 8। সুতরাং এই পদ্ধতিটি সঠিক নয়।
পিটার হানডরফ

3

কীভাবে আপনার প্রসঙ্গ মেনুতে 32/64 বিট পরীক্ষা যুক্ত করবেন

এক্সেক্সেট.রেগ নামে একটি পাঠ্য ফাইল তৈরি করুন এবং এই কোডটি সহ:

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\x86or64.vbs %1

x86or64.vbsএই কোডটি সম্বলিত একটি পাঠ্য ফাইল তৈরি করুন এবং এটি সি: \ টেম্পে সংরক্ষণ করুন:

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

এক্সকেটেট.গ্রিগ ফাইলটিতে ডাবল ক্লিক করুন: উইন্ডোজ রেজিস্ট্রিতে একটি নতুন কী যুক্ত করা হবে:

[HKEY_CLASSES_ROOT\exefile\shell\command32_64\command]

এক্সিকিউটেবল ফাইলটিতে ডান ক্লিক করার পরে এটি প্রসঙ্গ মেনুতে " 32/64 বিট পরীক্ষা " হিসাবে প্রদর্শিত হবে ।

আইটেমটি ক্লিক করার ফলে ব্যাচ ফাইল শুরু হবে c:\\temp\\x86TestStart.bat\, যা ভিবিস্ক্রিপ্ট ফাইল শুরু করবে x86or64.vbs, যা এক্সেস স্বাক্ষর পড়ে এবং ফলাফল দেখায়।

আপনি যদি রেজিস্ট্রি নিয়ে টেম্পার করতে না পারেন বা না চান, কেবল কুইক লঞ্চ বারে .vbs ফাইলটি অনুলিপি করুন এবং এটি সম্পাদনযোগ্য টেনে আনুন।


3

আমার দুটি সেন্ট কেবলমাত্র নির্ভরতা ওয়াকার ডাউনলোড করবে এবং নির্বাহযোগ্য ফাইলে কোনওটিতে আর্কিটেকচারের জন্য কী ব্যবহার করা হয়েছে তা পরীক্ষা করবে।

এটি কিভাবে ব্যবহার করতে:

কেবল অ্যাপ্লিকেশনটি ডাউনলোড করুন, এটি শুরু করুন, ওপেন আইকনটিতে ক্লিক করুন an একটি * .exe ফাইল সন্ধান করুন → নির্বাচন করুন এবং প্রতিচ্ছবি স্ক্যান করার পরে নীচে আপনি একটি গ্রিড দেখতে পাবেন যেখানে একটি কলামটিতে "আর্কিটেকচার" বিশদ রয়েছে (x86, x64)

এক্সিকিউটেবল খুলুন এবং বিল্ড আর্কিটেকচার দেখুন

নির্ভরতা ওয়াকারের স্ক্রিনশট


1

আমি এই উল্লেখ করা দেখিনি। এনটিসিওর দ্বারা সিএফএফ এক্সপ্লোরার নামে একটি পিই ভিউয়ার প্রোগ্রাম রয়েছে , যা আপনাকে এই তথ্য সরবরাহ করতে পারে। এটি ডাউনলোড এবং পোর্টেবল হিসাবে চালানো যেতে পারে, তবে আপনি ইচ্ছা করলে এটি ইনস্টল করতেও পারেন।

রাইট বাইনারি (এ ক্লিক করুন .exe, .dllইত্যাদি) এবং নির্বাচন করুন "CFF এক্সপ্লোরার খুলুন"। এনটি শিরোলেখগুলিতে যান -> ফাইল শিরোনাম -> "বৈশিষ্ট্য" ফিল্ডে "এখানে ক্লিক করুন" ক্লিক করুন

যদি এটি একটি 32 বিট প্রোগ্রাম, চেকবক্স "32 বিট ওয়ার্ড মেশিন" টিক হবে। উদাহরণস্বরূপ, আমি নোটপ্যাড ++ এর 32 বিট সংস্করণটি ইনস্টল করেছি যা আপনি নীচের চিত্রটিতে দেখতে পাচ্ছেন। অন্যথায়, এটি 64 বিট।

এখানে চিত্র বর্ণনা লিখুন


সিএফএফ এক্সপ্লোরারটির সাথে একটি আরও দ্রুত উপায় রয়েছে: "ফাইল টাইপ" এর অধীনে কোনও ফাইল লোড করার সাথে সাথে আপনার কাছে "পোর্টেবল এক্সিকিউটেবল 64" বা "পোর্টেবল এক্সিকিউটেবল 32" রয়েছে
আর্থার।ভিও

0
  • অ্যাপ্লিকেশন চালান
  • টাস্ক ম্যানেজার খুলুন
  • ডান ক্লিক করুন এবং ডাম্প ফাইল তৈরি করুন
  • নোট ডাউন পাথ
  • পথে যান .DMPএবং ভিজুয়াল স্টুডিওতে ওপেন ডাম্প
  • সেখানে আপনি সমস্ত বিবরণ পাবেন
  • প্রক্রিয়া আর্কিটেকচার পরীক্ষা করুন:

3
এই উত্তরটির জন্য অ্যাপ্লিকেশন চালানো দরকার তা আমি বোঝাতে বাধ্য ated পূর্ববর্তী মন্তব্যকারীরা পরামর্শ দিয়েছিলেন যে এটি অনাকাঙ্ক্ষিত হতে পারে। এছাড়াও, সমস্ত উইন্ডোজ প্ল্যাটফর্মগুলিতে ভিজ্যুয়াল স্টুডিও স্বয়ংক্রিয়ভাবে উপলব্ধ হবে না।
জি-ম্যান

0

আমার দুটি সেন্ট: একটি সি ++ বিকাশকারী হিসাবে, নির্ভরতা ওয়াকার ( http: //www.d dependencywalker.com/ ) খুব তথ্যবহুল, কেবল 64৪//৩ বিট প্রদর্শন করে না, তবে প্রত্যেকটি ডিএল জড়িত: এখানে চিত্র বর্ণনা লিখুন

আপনি প্রতিটি ফাইলের নামের বাম দিকে 64 দেখতে পাচ্ছেন ...


1
স্ক্রিনশট উত্তরটি প্রদর্শন করে না - 32 বিট বনাম 64
বিবিটের

0

তবুও, 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

0

উইন্ডোজ 10 এর টাস্ক ম্যানেজারের প্ল্যাটফর্ম কলাম

উইন্ডোজ 7 এর প্ল্যাটফর্ম কলাম নেই। সুতরাং উইন্ডোজ 7 টাস্ক ম্যানেজার এটি দেখায় না।

উইন্ডোজ 10-এ কলাম নির্বাচন করা আর 'দর্শন' এর অধীনে নয়। উইন্ডোজ 10-এ, বিশদ ট্যাবে থাকা অবস্থায় আপনি কলামের শিরোনামটি ডান ক্লিক করুন তারপরে 'নির্বাচন করুন কলামগুলি'। তারপরে 'প্ল্যাটফর্ম' এর জন্য বক্সটি চেক করুন।

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.