مهندسی معکوس: لبهٔ تکنولوژی با گیدرا (Ghidra) – شماره 02

blog
۱۴۰۰-۰۷-۲۸
4 دقیقه

در قسمت قبل تاریخ مختصر و هیجان‌انگیز گیدرا رو باهم مرور کردیم. بعدش دیدیم که چطوری دانلود، نصب و از سورس کد کامپایلش کنیم و به‌طور کلی باید حالا توی موقعیتی باشید که بتونید به‌تنهایی گیدرا رو بررسی و آزمایش کنید! توی این قسمت بازهم بیشتر با گیدرا آشنا میشیم و اون رو باهم سفارشی‌سازی می‌کنیم.

در قسمت‌های قبل، منابع و ابزارهای مهم، آشنایی اولیه و نکات مهم دررابطه‌با این آموزش‌ها معرفی شد. اگر اولین‌بار است که این مقاله را می‌بینید، برای استفاده هر چه بیشتر و بهتر از قسمت صفر شروع کنید!

 

پاسخ سؤالات قسمت قبل

اگه یادتون باشه، قرار بود آخر هر قسمت قبل سؤالاتی رو به عنوان تمرین مطرح کنم و شما جوابش رو جایی یادداشت کنید تا با جواب‌های درستی که قسمت بعد قرار میدم مقایسشون کنید.

هیچ‌کدام از فریم‌ورک‌های مهندسی معکوس کامل‌ترین ابزار نیستن. هر فریم‌ورک نقاط ضعف و قدرت خودشو داره.

بریم نقاط مثبت گیدرا رو یک‌بار دیگه باهم بررسی کنیم:

  • متن‌باز و رایگان بودن (شامل دی کامپایلر هم میشه)
  • پشتیبانی از معماری‌های زیاد
  • امکان بارگذاری تعداد زیادی فایل باینری توی یک پروژه
  • امکان مهندسی معکوس گروهی
  • پشتیبانی از فریم ورهای بزرگ (بیشتر از یک گیگابایت)
  • داکیومنتیشن عالی به همراه مثال و آموزش
  • کنترل نسخهٔ مناسب برای کنترل کار

حالا بریم سراغ نقاط ضعف گیدرا:

  • به علت وابسته بودن به Jython باید پشتیبانی از اسکریپت‌های پایتون 3 رو فراموش کنید و از پایتون 2 استفاده کنید.
  • مسئلهٔ بالا شاید ساده باشه ولی بسیار بزرگه و اینکه هنوز رفع نشده و ربطی هم به توسعه‌دهنده‌های گیدرا نداره که رفعش کنن، باعث شده کسی در مورد باقی نقاط منفی گیدرا صحبت نکنه.

 

فصل 1 – آشنایی با گیدرا (ادامه)

در ادامه مرورگر کد گیدرا و نحوه سفارشی‌سازی اون رو با هم بررسی می‌کنیم.

بررسی CODEBROWSER گیدرا

مرورگر کد گیدرا، با تنظیمات پیش‌فرض خودش خیلی زیبا و کاربردی طراحی شده و مهندسی NSA رو به‌وضوح میشه توش دید:

مهندسی معکوس: لبهٔ تکنولوژی با گیدرا (Ghidra) – شماره 02

بریم ببینیم که بخش‌های مختلف این مرورگر چی هستن و چه وظیفه‌ای به عهده دارن:

  1. مثل همهٔ فریم‌ورک‌های مهندسی معکوس، وسط صفحه و با ابعاد خیلی بزرگ، نمایش دیس اسمبلی فایل رو داریم.
  2. از اونجایی که دیس اسمبلی خیلی‌خیلی به زبان ماشین نزدیکه (low-level)، گیدرا دیکامپایلر خودش رو برامون سمت راست دیس اسمبلی قرارداد. اگر کارایی که در قسمت قبل گفتیم رو دنبال کرده باشید، می‌بینید که تابع main برنامه توسط گیدرا شناسایی شده و پارامترها به طور خودکار تولید شدن. همین‌طور گیدرا بهتون اجازه میده که کلی بلا سر کد دی کامپایل شده بیارید. همین‌طور میتونید نمایش هگزادسیمال برنامه رو هم توی این بخش از صفحه ببینید. همچنین اگر چیزی رو تغییر بدید، هگزا دسیمال، دی کامپایل شده و اسمبلی برنامه به‌صورت هم‌زمان تغییر میکنن.
  3. درخت‌های برنامه که سمت چپ قرار دارن، کمک میکنن که به هر بخش از فایل‌ها که نیاز دارید سریعاً سر بزنید.
  4. درخت‌های سمبل‌ها زیربخش 3 قرار دارن: اینجا سمبل‌های برنامه قرار دارن (اسم متغیرها، کلاس‌ها و توابع و…) از اینجا میتونید به هرکدوم از سمبل هاتون سر بزنید.
  5. اگر میخواین با انواع داده‌ها سروکله بزنید هم مدیریت نوع داده اینجا قرار داره.
  6. اینجا نتایج اجرای اسکریپت‌های مهندسی معکوستون رو می‌بینید. همچنین توی صفحهٔ bookmarks میتونید بوک مارک هاتون رو داکیومنت، مرتب و مدیریت کنید و به هر بخشی از حافظه که خواستین سر بزنید.
  7. نوارابزار دسترسی سریع
  8. مشخص‌کنندهٔ آدرس فعلی
  9. عملگر وابسته به آدرس فعلی
  10. خط مربوطه در دیس اسمبلی به آدرس فعلی
  11. نوارابزار اصلی

 

سفارشی سازی گیدرا

تا محیطی که ازش استفاده می‌کنیم رو تغییر ندیم، توسعه‌دهنده نشدیم! میتونیم توی منوی Window ابزاری که بهش نیاز داریم رو انتخاب کنیم تا به محیط گیدرا اضافه بشه:

سفارشی سازی گیدرا

ضمناً گیدرا خیلی کارکردهای جالب دیگه ای هم داره؛ برای مثال، توی نوارابزار بالای صفحهٔ دیس اسمبلی میتونید صفحهٔ دیس اسمبلر رو تغییر بدید و کلی کار مختلف انجام بدید:

دیس اسمبلر گیدرا

مثلاً اگر روی گزینه‌ای که توی تصویر بالا نشون دادیم کلیک کنید کلی تنظیمات رو برای دیس اسمبلر می‌بینید. یکی از ویژگی‌های خیلی عالی گیدرا همینجا قرار داره. این ویژگی بهتون اجازه میده که بتونید یه چیزی به اسم PCode رو ببینید. پی کد یه نمایش سطح متوسط یا یه زبان سطح متوسطه که بهتون اجازه میده که بتونید ابزار مهندسی معکوس خودتون رو برای بررسی کد اسمبلی، با یه زبان واسط و یکم قابل‌فهم‌تر توسعه بدید. برای فعال‌سازی مطابق تصویر زیر عمل کنید:

تنظیمات دیس اسمبلر

 

وقتی که فعالش کردید، سریعاً متوجه میشید که PCode اصلا خوانا نیست ولی مطمئن باشید ترجیح میدید که اسکریپت های اسمبلیتون رو با PCode بنویسید به جای زبان اسمبلی. توی تصویر زیر خروجی دیس اسمبلر رو با PCode میبینید:

خروجی دیس اسمبلر با PCode

 

سؤال‌ها

  • چطوری میشه نمایش دیس اسمبلی رو تنظیم کرد که PCode فعال بشه؟
  • تفاوت بین نمایش دیس اسمبلی و نمایش دی کامپایلر چیه؟

 

تاریخ انتشار قسمت بعدی:

1400/08/08

اطلاعات
7
0
لینک و اشتراک
profile

کایوش آکادمی

متخصص الکترونیک

صفحه ی سیسوگ آکادمی برنامه نویسی کایوش: در سیسوگ مطالب منحصر بفرد آموزشی را به صورت رایگان با شما به اشتراک میگذاریم.

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

profile
مهدی گفت :
۱۴۰۰-۰۹-۲۵ ۰۰:۱۸

سپاس از شما

profile
Mahdi.h   گفت :
۱۴۰۰-۰۹-۲۰ ۱۴:۰۴

سلام.
ممنون از سری مطالب جذاب و تخصصیتون
pcode رو از کجا میتونیم یاد بگیریم ؟ و آیا یادگیری زبان اسمبلی قبل از اون کمک کننده (یا نیاز) هست یا نه؟

profile
کایوش آکادمی گفت :
۱۴۰۰-۰۹-۲۰ ۲۱:۲۷

سلام. مطمئنا آشنایی با اسمبلی برای درک پی کد کمک کننده هست اما ضروری نیست. ابزار زیادی PCode رو تولید میکنن و بعضیاشون خوانا تر از بقیه هستن. مثلا IDA یک افزونه داره که کد اسمبلی رو برای مثال به این صورت در میاره:

add a b
تبدیل میشه به a+b به عنوان PCode که خوانا تره و واقعا درک خاصی نمیخواد.
برای درک بهتر PCode گیدرا هم داکیومنتهای توسعه ی سطح بالا و سطح بالای نرم افزار توی مسیر ./docs/GhidraClass کامل موضوع رو پوشش دادن.(هرچند بازم باید تمرین کنید تا دقیقا متوجه بشید.)

profile
علی گفت :
۱۴۰۰-۰۸-۲۷ ۱۸:۵۶

سیسوگ جان

ادامه این مقاله آموزشی منتشر نمیشه ؟

profile
کایوش آکادمی گفت :
۱۴۰۰-۰۸-۲۸ ۱۵:۱۲

پوزش میطلبیم برای تاخیر پیش آمده

profile
Sisoog Os گفت :
۱۴۰۰-۰۸-۲۷ ۱۹:۲۶

سلام مجموعه فعال کایوش قسمت بعدی را اماده کردند و بزودی منتشر میشه

profile
حسین گفت :
۱۴۰۰-۰۸-۰۳ ۱۵:۰۹

بسیار عالی?

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله