در نسخههای 32 بیتی ویندوز اگر در محیط Command Prompt عبارت debug را تایپ کنید، ابزار تحت خط فرمان debug.exe اجرا شده و محیط اجرای فرمانهای زبان ماشین و اسمبلی برای شما فراهم میشود. اما در ویندوزهای 64 بیتی این دستور قابل اجرا نبوده و در پوشهی system32 نیز فایل debug.exe موجود نیست. حتی اگر این فایل را از یک ویندوز 32 بیتی کپی و در پوشهی ویندوز جاری قرار دهید باز هم دستور debug کارایی نخواهد داشت. در این ترفند به نحوهی اجرای ابزار Debug در ویندوزهای 64 بیتی خواهیم پرداخت.
برای این کار (ZEDSOFT) نیازمند یک شبیهساز محیط 16 بیتی DOS هستیم. بهترین گزینه برای این کار نرمافزار کمحجم و رایگان DOSBox میباشد. آخرین نسخهی DOSBox را میتوانید از سایت سازنده دریافت کرده و نصب کنید:
http://www.dosbox.com/download.php?main=1
در مرحلهی بعد نیازمند فایل debug.exe هستیم. این فایل را میتوانید از پوشهی system32 یک ویندوز 32 بیتی کپی کنید.
اکنون نرمافزار DOSBox را اجرا نمایید.
برای شروع کار درایوی که فایل debug.exe در آن قرار دارد را Mount نمایید. به عنوان مثال، فرض میکنیم فایل debug.exe در درایو D و در پوشهی Debug قرار دارد:
mount D D:\Debug
پس از نمایش پیغامی مبنی بر Mount شدن این درایو، دستور زیر را وارد میکنیم تا وارد درایو D شویم:
D:
با وارد کردن دستور زیر نیز وارد پوشهی Debug خواهیم شد:
cd Debug
اکنون دستور زیر را وارد میکنیم تا فایل debug.exe فراخوانی شود:
debug.exe
پس از نمایش یک خط تیره (-) میتوانید از ابزار Debug استفاده کنید و دستورات مربوط به این ابزار را وارد کنید.
برخی از دستورات کاربردی ابزار Debug به شرح زیر است:
فرمان a: وارد زبان اسمبلی شده و میتوانید دستورات آن را به کار بگیرید
فرمان c: دو بلوک اطلاعات مقایسه میگردد
فرمان e: اطلاعاتی را در محلی از حافظه قرار میدهد
فرمان f: برای ذخیره کرده دادهای در ناحیه خاص از حافظه به کار برده میشود
فرمان g: برنامه داخل حافظه را اجرا میکند
فرمان h: جمع و تفریق اعداد هگزادسیمال را انجام میدهد
فرمان l: باز کردن برنامه (ترفندستان) از دیسک به حافظه
فرمان m: اطلاعاتی را از محلی به محل دیگر حافظه انتقال میدهد
فرمان n: نامی به برنامه اسمبلی میدهد
فرمان p: یک سری دستورات به خصوص دستور وقفه را اجرا میکند
فرمان q: خروج از برنامهی debug
فرمان r: محتویات ثباتها نشان داده میشود
فرمان s: اطلاعاتی جستجو میشود
فرمان t: اجرای دستورات، یک دستور، یک دستور انجام میشود
فرمان u: برنامه به زبان ماشین را به زبان اسمبلی تبدیل میکند و برنامه به زبان اسمبلی همراه با برنامه به زبان ماشین را نشان میدهد
فرمان w: برنامهای را بر روی دیسک ذخیره میکند
برای این که در دفعات بعدی نیاز به Mount کردن درایوها نباشد، فایل dosbox.conf که در مسیر C:\Users\USERNAME\AppData\Local\DOSBox قرار دارد را با ویرایشگر متن Notepad باز کرده و در خط آخر در زیر [autoexec] دستورات مربوط به Mount را وارد کرده و فایل را ذخیره کنید:

از نرمافزار DOSBox برای اجرای سایر نرمافزارهای تحت DOS نیز میتوانید استفاده کنید.
روش دوم
اگر تاحالا با دیباگرهایی مانند immunity debugger یا ollydbg کار کرده باشید حتما به اینم فکر کرده اید که میشه خود ویندوز رو هم دیباگ کرد یا نه ؟ یا اگه میشه چه جوری اینکارو بکنیم؟
توو این پست میخوام دو روش برای دیباگ کردن رو آموزش بدم که اولیش فوق العاده سریع هست چون بر مبنای شبکه هست ولی ممکنه خیلی از کامپیوتر ها ساپورتش نکن و روش دوم نسبت به روش اول کند تره چون از پورت های سریال استفاده میکنه ولی تقریبا همه کامپیوتر ها ساپورتش میکنن.
خب بریم سراغ اصل ماجرا
روش اول،
اول از همه باید به لینک زیر برید و ویندوز SDK رو نصب کنید.
https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk
اگه فایل iso شو دانلود کنید که خب خیلی بهتره.
بعد از اون یه VMWare Workstation Pro نصب کنید و یه ویندوز (ترجیحا 10) نصب کنید به عنوان Guest
اینکارو میتونید روو Hyper-v یا VirtualBox هم انجام بدید.
بعد از نصب اون دیباگر Windbg به ویندوزتون اضافه شده ، حالا باید سرچ کنید و Windbg x64 رو پیدا کنید و Open File Location رو بزنید تا به جایی برید که فایل اصلی اونجا قرار داده.
حالا دنبال این دوتا فایل بگردید :

و این دوتا فایل رو کپی کنید و داخل Guest تون کپی کنید.

حالا یه CMD رو Run As Administrator کنید و KDNET را ران کنید.

اگه به این صورت

رو دیدید این یعنی NIC شما ساپورت دیباگ داره ، توو مرحله بعدی باید آی پی هاست رو پیدا کنید برای مثال با IPCONFIG ببینید آی پی تون (از GUEST) چیه.
آخرین مرحله اینه که کامند زیر رو ران کنید.

و در آخر باید یه چنین ریزالتی رو ببینید

خب کلید بالا کلیدی هست که باهاش میشه دیباگ کرد.
همونجور که توضیحاتش میگه از هاست windbg رو به این صورت اجرا کنید :

و بعد از اون GUEST رو Restart کنید.
تقریبا تمومه، فقط باید صبر کنید که GUEST تون ریستارت بشه و بعدش Windbg به Guest متصل شده و عملا دیباگ ما شروع شده.

روش دوم ،
همونجور که گفتم روش دوم نسبت به روش اول خیلی کند تره و اصن پیشنهاد نمیشه ولی خب مواقعی که کارت شبکه مون ساپورت نمیکنه دیگه چاره ای نیست.
برای اینکار باید داخل تنظیمات VMWare برید و یه Device برای سریال پورت بهش اضافه کنید .
در واقع میخوایم Output to named pipe داخل این Guest راه اندازی کنیم.


همونجور که بالا میبینید باید یه اسم برای سریال پورتمون انتخاب کنیم.
\\.\pipe\Name
در واقع نام باید دقیقا به فرم بالا باشد و به جای Name اسم مورد نظرتون رو بزارید.
حالا داخل Guest باید داخل Run تایپ کنید Msconfig
در نهایت داخل اونجا داخل تب Boot اون سریال پورتی را که اضافه کنید به صورت COM پورت اضافه کنیم.
سپس تیک Debug رو بزنید.

حالا داخل windbg به مسیر زیر بروید:

بعد از اون به تب COM برید و اون اسمی که برای سریال پورت رو انتخاب کردید رو بزنید و همچنین اون دوتا تیک Reconnect و Pipe رو هم فعال کنید.

خب دیگه تمومه و بعد از ریستارت باید بتونید وصل بشید.

خب الان دیباگ کردیم ، حالا بعدش چی ؟
بعد از اینکه دیباگ رو شروع کردیم الان وقتشه که Symbol هارو ست کنیم.
اما Symbol چیه ؟
سیمبل ها فایل های .pdb ای هستن که مایکروسافت ارائه میده تا بتونیم ساده تر دیباگ کنیم یا مکانیزم های ویندوز رو راحت تر بفهمیم. به این صورت که مثلا میتونیم اسم فانکشن های ویندوز رو داخلش ببینیمم.
برای اینکار باید به قسمت

و اینو کپی کنید:

این تنظیمات به windbg اعلام میکنه که برای سیمبل ها اول داخل C:\Symbols بگرد و اگر اونجا پیدا نکردی از سرور خود مایکروسافت دانلود کن.
سلام.
من یه اکانت zenmate خریدم ولی خالیه فایل مشخصات حساب(فایل خالی دانلود میشه).
لطفا پیگیری کنید، یا اطلاعات اکانت رو برام میل کنید.
تشکر.
12
سلام تلگرام پیام بدید
@Sirer
10