مسیر موضوعی

مهندسی معکوس

Reverse Engineering

برنامه‌ی کامپایل‌شده‌ای را که خودتان ساخته‌اید بخوانید: فایل را پارس کنید، دستورالعمل‌ها را رمزگشایی نمایید، آن‌ها را به شبه‌کد ارتقا دهید (lift)، شواهد را ثبت کنید و اثبات نمایید که بازسازی نهایی یکسان است؛ سپس مفاهیم پیرامون این پایپ‌لاین را به همراه ابزارهای اصلی آن یاد بگیرید.

پیش از شروع

شروع سریع (۱۰ دقیقه): یک آبجکت کامپایل‌شده را که بایت‌هایش را به‌صورت دستی ننوشته‌اید پارس کنید و بخش‌ها (sections)، نمادها (symbols) و بازآدرس‌دهی‌های آن را نام ببرید. شروع ←

درس‌ها به ترتیب

  1. کالبدشناسی فایل باینری: ساخت خوانشگر ELF از صفر با پایتونفاز 13 · درس 32 · ۱۲۰ دقیقه
  2. دیس‌اسمبلی و جریان کنترل: از بایت‌ها تا ساخت گراف در x86-64فاز 13 · درس 33 · ۱۵۰ دقیقه
  3. تبدیل اسمبلی به شبه‌کد: پیاده‌سازی IR، فرم SSA و ساختاربندی از صفرفاز 13 · درس 34 · ۱۵۰ دقیقه
  4. شواهد، سطح اطمینان و مجهولات در تحلیل باینریفاز 13 · درس 35 · ۱۰۵ دقیقه
  5. بازسازی و اثبات برابری کدهای دیکامپایل‌شده: تست تفاضلی و مقایسه بایتفاز 13 · درس 36 · ۱۱۰ دقیقه
  6. اکوسیستم مهندسی معکوس: تاریخچه، خانواده ابزارها و معماری دیکامپایلرهافاز 13 · درس 37 · ۱۵۰ دقیقه
  7. شیوه‌های فراخوانی و فریم‌های پشته: System V، ویندوز x64 و AArch64فاز 13 · درس 38 · ۱۴۰ دقیقه
  8. اصطلاحات کامپایلر: بهینه‌سازی چگونه کد را دگرگون می‌کند و چطور آن را رمزگشایی کنیمفاز 13 · درس 39 · ۱۵۰ دقیقه
  9. پیوند، بارگذاری و باینری‌های استریپ‌شده: سازوکار PLT، GOT و شناسایی توابعفاز 13 · درس 40 · ۱۶۰ دقیقه
  10. بازیابی داده‌ها و ساختار نوع‌ها: استراکت‌ها، آرایه‌ها، اشیاء ++C و DWARF 5فاز 13 · درس 41 · ۱۴۰ دقیقه
  11. تحلیل پویای برنامه با دیباگرها، ردگیری و ارزیابی ادعاهای ایستافاز 13 · درس 42 · ۱۳۰ دقیقه
  12. مهندسی معکوس بایت‌کد پایتون، JVM، دات‌نت و WebAssemblyفاز 13 · درس 43 · ۱۵۰ دقیقه
  13. تفاضل‌گیری باینری و اجرای نمادین: تطابق توابع و حل متغیرهای ورودیفاز 13 · درس 44 · ۱۵۰ دقیقه
  14. مهندسی معکوس با هوش مصنوعی: دکامپایلرها، ایجنت‌ها و داده‌ی واقعیفاز 13 · درس 45 · ۱۴۰ دقیقه