فایلهای Bat که اصلا متنه و هدری که برای کاربر قابل دیدن باشه نداره
برای فایلهای دیگه هم می تونید با گرفتن SubSystem فایل هر نوع فایل اجرایی از قبیل درایور،سرویس،DLL و ... رو تشخیص بدید
که اگه هیچ کدوم نبود از پسوند کمک می گیریم
حالا این کار چه فایده ای داره :
اگه شما پسوند یک فایل Exe رو به bat تغییر بدید باز هم مثل فایل قبلی کار می کنه یعنی فقط پسوندش عوض شده
در نتیجه این فایل bat دیگه یه فایل متنی نیست و دارای هدره که وقتی شما اطلاعاتش رو بخونید به شما می گه که فایل Exe ست
پس بهتره در کنار خوندن اطلاعات از هدر از پسوند فایل هم کمک بگیرید
نقل قول: فایلهای Bat که اصلا متنه و هدری که برای کاربر قابل دیدن باشه نداره
تمام فایل ها مشخصه یاشناسنامه دارن که اگه اونها رو با یک هگز ادیتور باز کنید می تونید ببینیدشون.
مشخصات ورژن و نام اصلی و .... هم در اینتهای فایل قابل دسترسی هست
سلامی دوباره
از اطلاعات مفید جناب lord_viper تشکر
اگه لطف کنید بگید چطور میشه تشخیص داد این چه نوع فایل اجرایی هست
منظورم اینکه اجرایی تحت داسه یا اجرایی ویندوزه- 16 بیتی یا 32 بیتی
این MZ که تو همه این نوع فایل هایی که من باز کردم بود حالا از کجا باید تفاوت این نوع فایل های اجرایی رو تشخیص داد
با سپاس و تشکر
فایلهای اجرایی چیزی دارن به اسم PEheader که از چند structure تشکیل شده که توی این مثل Dos header و NT header و Optional Header و section Header تو قسمت DosHeader یک Signature و جود داره که مشخص میکنه این فایل اجرایی هست یا خیر و در NT header هم یک Siganture و جود داره که مشخص میکنه چه نوع EXE یی هست
البته برای تشخیص نوع exe میشه از تابع api بنام SHGetFileInfo هم برای این کار استفاده کرد
سلام
چه جور میشه این NT header و DosHeader رو بازیابی کرد . این Siganture مثلا برای اجرایی 32 بیتی چیه برا 16 بیتی چیه و برا اجرایی dos چیه؟
من یه خروجی به صورت زیر احتیاج دارم البته فقط قسمت format که در اینجا win32/pe است
خروجی مورد نظر
http://saayeban.persiangig.ir/upx.jpg
درضمن من نمیخوام با API ها کار کنم میخوام بدون API این مشخصات رو استخراج کنم
دوست عزیز جواب شما در پست 15 کامل داده شده
بخشی از خروجی تابع SHGetFileInfo
کد:
To retrieve the executable file type, uFlags must specify only SHGFI_EXETYPE. The return value specifies the type of the executable file:
0 Nonexecutable file or an error condition.
LOWORD = NE or PE
HIWORD = 3.0, 3.5, or 4.0 Windows application
LOWORD = MZ
HIWORD = 0 MS-DOS .EXE, .COM or .BAT file
LOWORD = PE
HIWORD = 0 Win32 console application
با سلام مجدد
چرا بعضی از فایل های com. این کاراکتر é رو دارند بعضی ندارند و بجای اون کاراکتر MZ رو دارند
فرق این دو فایل com. چیه
اصلا signature مخصوص فایل های com. چیه و آیا فایل های com. هم انواع متفاوتی دارند مثل exe ها با signature های متفاوت اگه دارند لطف کنید بگین این signature ها چیه برای فایل های com.
با سپاس و تشکر از مدیر کل انجمن
سلام
خوب هستيد
فايل هاي كام به هيچ عنوان هيچ كاركتر شناسايي ندارند چون درون فايل هاي com شما تمام قسمت هاي برنامه مشخص است يعني اينكه كجا برنامه شروع ميشه كجا كد سكشن كجا ديتا سكشن و .... پس علامت مشخصه ندارد.
اما فايل هاي اجرايي قابل حمل PE رو دارند كه همون ام زد اي است كه گفتيد . ايل هاي كام از نظر استراكچر يكي هستند . اون فايل اي كه شماديد و پسوندش com بوده در واقعه يك PE بوده كه پسوند اون از .dll ويا exe و يا vbx و.... ( اگر اجرا ميشه حتما از نوع exe src tbl ميباشد) به com توسط برنامه و يا نويسنده برنامه به com تغيير داده شده است
اميدوارم كمك كنه
با سلام خدمت شما
ممنون
1- این کاراکتر é که تو اکثر فایل های com هستند چیه؟ و آیا (هر فایل) com ی که کاراکتر MZ رو داره از exe و... به com تغییر داده شده؟
2- از کجا میشه فهمید این دیتا سکشن و کد سکشن و... هر کدوم از چه آدرسی شروع میشن
3- اینکه گفتید پسوندش از exe به com تغییر داده شده دلیلش چیه؟
با تشکر و سپاس از پاسخگویی با حوصله ی شما عزیزان
سلام
جواب این سوالات منو که ندادید لااقل این یکی رو جواب بدید.
با توجه به اینکه هم در فایل های exe و هم در فایل های dll این کاراکتر MZ وجود داره همچنین PE این فایل ها چه مشخصه ی دیگه ای دارن که معلوم کنه این exe است یا dll
در واقع پردازنده چه طور بین این دو فایل که ساختاری مثل هم دارن تفاوت قائل میشه و تشخیص میده که این exe و اون dll است.
با تشکر و سپاس