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

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

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

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

 

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

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

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

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

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

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

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

 

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

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

بررسی CODEBROWSER گیدرا

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

بررسی CODEBROWSER گیدرا

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

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

 

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

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

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

 

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

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

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

سؤال‌ها

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

 

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

1400/08/08

 

 

منبع:سیسوگ

 

 

 

 

مطلب قبلیآموزش رزبری پای با پایتون – قسمت اول – ساخت چشمک زن LED
مطلب بعدیساخت شارژر سریع (Fast Charger) ساده تر و ارزان تر با تراشه IP6505

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید