موضوع مقاله: X64dbg | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # X64dbg | مقدمه: دو برنامه دیباگر x32 و x64 دارد.این نرم افزار یک اسمبلر داخلی هم دارد که می توان کد های اسمبلی را به اجرایی تبدیل کرد.رابط کاربری این برنامه گرافیکی است.این برنامه از رابط کاربری qt استفاده می کند. | ## بخش 1: X64dbg | رابط کاربری این نرم افزار دو بخش اصلی دارد: ۱-رابط گرافیکی ۲-رابط دستوری بخش رابط گرافیکی منوها (Menus) این قسمت مجموعه ای از ابزار ها و دستورات در اختیار کاربر قرار می دهد که با آن می توان فرآیند اشکال زدایی را مدیریت کرد. نماها (Views) این قسمت پنجره‌های گرافیکی مختلفی هستند که اطلاعات خاصی از اجرای برنامه را نمایش می‌دهند. این نماها به کاربر کمک می‌کنند تا از زوایای مختلف، رفتار و ساختار فایل اجرایی را بررسی کند. تنظیمات در زبانه‌های مختلف دسته‌بندی شده‌اند و هر زبانه مربوط به بخشی خاص از دیباگر است. پنجره‌ها (Dialogs) این قسمت شامل ابزارهای تحلیلی خاص است که به‌صورت پنجره‌های جداگانه اجرا می‌شوند. از جمله وظایف این گروه می‌توان به چاپ پیام‌های سفارشی در خروجی، کنترل جریان اجرای اسکریپت از طریق شرط‌ها و حلقه‌ها، مدیریت متغیرها، و تعامل با کاربر از طریق ورودی و خروجی اشاره کرد. این دستورات معمولاً در ابتدای اسکریپت‌ها برای تنظیم محیط، تعریف مقادیر اولیه، و ایجاد ساختار منطقی برنامه مورد استفاده قرار می‌گیرند و نقش زیربنایی در خودکارسازی عملیات دیباگ دارند. این گروه از دستورات به کاربر اجازه می‌دهد تا رفتار برنامه را در زمان اجرا به‌صورت دقیق و قابل‌کنترل بررسی کرده و نقاط بحرانی یا مشکوک را شناسایی نماید. همچنین امکان تعامل با موتور دیباگ و مدیریت وضعیت فعلی پردازش از طریق این دستورات فراهم می‌شود. نقاط توقف ابزاری کلیدی در اشکال‌زدایی هستند که به کاربر اجازه می‌دهند اجرای برنامه را در لحظه‌ای خاص متوقف کرده و وضعیت حافظه، ثبات‌ها، و جریان کنترل را بررسی نمایند. این دستورات همچنین امکان تعیین نوع نقطه توقف (ساده، سخت‌افزاری، حافظه‌ای) و اعمال تنظیمات خاص برای هر نقطه را فراهم می‌کنند. این نوع نقاط توقف تنها زمانی فعال می‌شوند که شرط تعریف‌شده توسط کاربر برقرار باشد، مانند مقدار خاصی در یک ثبات یا حافظه. این قابلیت به‌ویژه در تحلیل رفتارهای پیچیده یا یافتن شرایط خاص در اجرای برنامه کاربرد دارد و موجب افزایش دقت و کارایی فرآیند دیباگ می‌شود. همچنین امکان استفاده از عبارات منطقی، مقایسه‌ای و ریاضی در تعریف این شرط‌ها وجود دارد. ردیابی اجرا (Tracing) دستورات این گروه برای ثبت و بررسی مسیر اجرای برنامه به‌کار می‌روند. با استفاده از این دستورات، کاربر می‌تواند اجرای برنامه را به‌صورت مرحله‌به‌مرحله دنبال کرده و دستورالعمل‌هایی که اجرا شده‌اند را ثبت نماید. این فرآیند به‌ویژه در تحلیل رفتارهای مشکوک، بررسی حلقه‌های بی‌نهایت، و شناسایی توابع پنهان یا رمزنگاری‌شده مؤثر است. همچنین امکان ذخیره‌سازی مسیر اجرا برای تحلیل‌های بعدی و مقایسه با اجرای‌های دیگر فراهم می‌باشد. کاربر می‌تواند نخ خاصی را انتخاب کرده، اجرای آن را متوقف یا ادامه دهد، و اطلاعات مربوط به وضعیت فعلی نخ را مشاهده نماید. | ## بخش 2: X64dbg | همچنین امکان بررسی پشته فراخوانی، رجیسترها، و حافظه مربوط به هر نخ به‌صورت جداگانه وجود دارد. کاربر می‌تواند مقادیر خاصی را در آدرس‌های مشخص بررسی کرده، داده‌هایی را تغییر دهد، یا الگوهایی را در حافظه جستجو نماید. این دستورات برای تحلیل داده‌های ذخیره‌شده، شناسایی رشته‌های متنی، بررسی ساختارهای داده‌ای، و حتی تزریق کد در حافظه کاربرد دارند. همچنین امکان استفاده از انواع داده و قالب‌های نمایش مختلف برای بررسی دقیق‌تر فراهم است. این قابلیت‌ها به کاربر اجازه می‌دهند تا وضعیت کلی سیستم را در زمان اجرای برنامه بررسی کرده و وابستگی‌های خارجی یا رفتارهای مشکوک را شناسایی نمایند. همچنین امکان بررسی ساختارهای داخلی سیستم‌عامل مانند TEB، PEB، و لیست ماژول‌ها وجود دارد. دیده‌بانی‌ها ابزارهایی هستند که تغییرات در مقادیر حافظه یا ثبات‌ها را به‌صورت خودکار ثبت می‌کنند. این قابلیت به‌ویژه در بررسی رفتار متغیرهای حساس، شناسایی تغییرات ناخواسته، و تحلیل اثرات اجرای کد کاربرد دارد. کاربر می‌تواند دیده‌بانی‌هایی با شرایط خاص تعریف کرده و در صورت وقوع تغییر، اجرای برنامه را متوقف یا پیام خاصی نمایش دهد. متغیرها (Variables) در این دسته، دستورات مربوط به تعریف، مقداردهی، و استفاده از متغیرهای محلی یا سراسری در اسکریپت‌ها ارائه می‌شوند. متغیرها ابزارهایی برای ذخیره‌سازی داده‌های موقت، نتایج محاسبات، یا مقادیر خوانده‌شده از حافظه هستند. کاربر می‌تواند متغیرهایی با انواع مختلف تعریف کرده و در طول اجرای اسکریپت از آن‌ها استفاده نماید. جستجو (Searching) این گروه شامل دستورات مربوط به جستجوی داده‌ها در حافظه، فایل اجرایی، یا ساختارهای داخلی برنامه است. کاربر می‌تواند رشته‌های متنی، مقادیر عددی، الگوهای باینری، یا ساختارهای خاص را جستجو کرده و موقعیت آن‌ها را شناسایی نماید. این قابلیت برای یافتن کلیدهای رمزنگاری، پیام‌های مخفی، یا داده‌های حساس بسیار کاربردی است. همچنین امکان استفاده از فیلترها و تنظیمات پیشرفته برای محدودسازی دامنه جستجو فراهم می‌باشد. این داده‌ها شامل یادداشت‌ها، برچسب‌ها، نشانک‌ها، و اطلاعات مرتبط با آدرس‌ها یا توابع خاص هستند. کاربر می‌تواند اطلاعات تحلیلی خود را در این پایگاه داده ذخیره کرده و در مراجعات بعدی از آن‌ها استفاده نماید. این قابلیت موجب افزایش بهره‌وری در پروژه‌های طولانی‌مدت و مستندسازی دقیق فرآیند دیباگ می‌شود. | ## بخش 3: X64dbg | تحلیل (Analysis) در این دسته، دستورات مربوط به تحلیل خودکار کد اجرایی، شناسایی توابع، بازسازی ساختار برنامه، و تشخیص مسیرهای منطقی ارائه می‌شوند. این تحلیل‌ها به‌صورت پویا یا ایستا انجام می‌شوند و به کاربر کمک می‌کنند تا ساختار کلی برنامه را بدون نیاز به بررسی دستی شناسایی نماید. همچنین امکان استفاده از الگوریتم‌های پیشرفته برای تشخیص توابع پنهان، ساختارهای رمزنگاری‌شده، و رفتارهای ضد دیباگ وجود دارد. انواع داده (Types) این گروه شامل دستورات مربوط به تعریف و استفاده از انواع داده در اسکریپت‌ها و عملیات حافظه است. این قابلیت موجب افزایش دقت در بررسی داده‌ها و تطبیق بهتر با ساختارهای واقعی برنامه می‌شود. افزونه‌ها (Plugins) دستورات این بخش برای تعامل با افزونه‌های نصب‌شده در نرم‌افزار طراحی شده‌اند. کاربر می‌تواند افزونه‌ای را بارگذاری کرده، دستورات خاص آن را اجرا نماید، یا اطلاعات خروجی آن را دریافت کند. افزونه‌ها ابزارهایی هستند که قابلیت‌های نرم‌افزار را گسترش داده و امکانات تخصصی مانند تحلیل بدافزار، رمزگشایی، یا بررسی شبکه را فراهم می‌کنند. این دستورات به کاربر اجازه می‌دهند تا منطق پیچیده‌ای را در قالب اسکریپت پیاده‌سازی کند، از جمله تعریف حلقه‌ها (مانند `for` و `while`)، شرط‌های منطقی (`if`, `else`)، توابع سفارشی، و ساختارهای کنترلی. این قابلیت‌ها برای ساخت ابزارهای تحلیلی، اجرای خودکار مراحل دیباگ، و ایجاد رفتارهای هوشمند در تعامل با برنامه تحت بررسی بسیار کاربردی هستند. همچنین امکان استفاده از متغیرها، آرایه‌ها، و توابع داخلی برای پردازش داده‌ها و کنترل جریان اجرای اسکریپت فراهم است. این دسته از دستورات، پایه‌گذار قدرت واقعی زبان اسکریپت‌نویسی x64dbg در پروژه‌های مهندسی معکوس و تحلیل امنیتی محسوب می‌شود. رابط گرافیکی (GUI) دستورات این بخش برای کنترل و تعامل با رابط گرافیکی نرم‌افزار طراحی شده‌اند. کاربر می‌تواند با استفاده از این دستورات، پیام‌های سفارشی در پنجره‌های خاص نمایش دهد، رنگ‌ها و فونت‌ها را تغییر دهد، پنجره‌های مختلف را باز یا بسته کند، و حتی رفتار بصری نرم‌افزار را در پاسخ به رویدادهای خاص تنظیم نماید. این قابلیت‌ها به‌ویژه در ساخت اسکریپت‌های آموزشی، ابزارهای تعاملی، یا افزونه‌های سفارشی که نیاز به ارتباط مستقیم با کاربر دارند، بسیار مؤثر هستند. همچنین امکان کنترل موقعیت، اندازه، و محتوای پنجره‌ها برای ایجاد تجربه کاربری بهینه فراهم است. متفرقه (Miscellaneous) این دسته شامل مجموعه‌ای از دستورات متفرقه است که در هیچ‌یک از گروه‌های قبلی جای نمی‌گیرند، اما نقش مهمی در تکمیل قابلیت‌های اسکریپت‌نویسی ایفا می‌کنند. از جمله این دستورات می‌توان به ابزارهای خاص برای مدیریت فایل‌ها، تعامل با محیط سیستم‌عامل، بررسی وضعیت دیباگر، و اجرای عملیات خاص اشاره کرد. این دستورات معمولاً در شرایط خاص یا برای اهداف پیشرفته مورد استفاده قرار می‌گیرند و انعطاف‌پذیری بیشتری را در طراحی اسکریپت‌ها فراهم می‌سازند. | ## جمع‌بندی | همچنین برخی از این دستورات برای توسعه‌دهندگان افزونه‌ها و ابزارهای جانبی کاربرد دارند و امکان ارتباط با اجزای داخلی نرم‌افزار را فراهم می‌کنند.