بهترین مسیر یادگیری برای مهندسی معکوس

مهندسی معکوس (Reverse Engineering) فرآیندی است که در آن سیستم‌ها، نرم‌افزارها، یا سخت‌افزارها به دقت بررسی می‌شوند تا ساختار، عملکرد، و نحوه طراحی آن‌ها درک....

انتشار: , زمان مطالعه: 7 دقیقه
بهترین مسیر یادگیری برای مهندسی معکوس
دسته بندی: مرجع تعداد بازدید: 586

مهندسی معکوس (Reverse Engineering) فرآیندی است که در آن سیستم‌ها، نرم‌افزارها، یا سخت‌افزارها به دقت بررسی می‌شوند تا ساختار، عملکرد، و نحوه طراحی آن‌ها درک شود. این مهارت در حوزه‌های مختلف از جمله امنیت سایبری، توسعه نرم‌افزار، تحلیل سخت‌افزار، و حتی تحلیل بدافزارها کاربرد دارد. برای تسلط بر این حوزه، نیاز است که یک مسیر گام‌به‌گام و منظم را دنبال کنید. این مقاله یک راهنمای جامع برای یادگیری مهندسی معکوس ارائه می‌دهد. اگر  می خواهید امنیت نرم افزار های خود را آزمایش کنید یا نرم افزار دیگران را کرک کنید ، علم مهندسی معکوس برای شما بسیار مفید و انتخاب درستی است.

مرحله ۱: مبانی و پیش‌نیازها

۱.۱: مبانی برنامه‌نویسی

مهندسی معکوس اغلب نیازمند درک عمیق از کدهای کامپیوتری است. بنابراین، یادگیری زبان‌های برنامه‌نویسی زیر ضروری است:

  • C/C++: بسیاری از نرم‌افزارهای سیستمی و برنامه‌های کاربردی با این زبان‌ها نوشته شده‌اند. این زبان‌ها به شما کمک می‌کنند تا به سطح پایین‌تر کدها دسترسی داشته باشید.
  • Assembly: زبان اسمبلی نزدیک‌ترین زبان به زبان ماشین است و برای درک چگونگی کارکرد واقعی پردازنده و تعامل با سخت‌افزار ضروری است.
  • Python: برای نوشتن اسکریپت‌های خودکارسازی تحلیل و ابزارهای کمکی مفید است.

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

۱.۲: ساختار سیستم‌عامل

برای مهندسی معکوس نرم‌افزارها، نیاز است که با سیستم‌عامل‌های مختلف آشنا شوید، به ویژه آن‌هایی که قصد مهندسی معکوس آن‌ها را دارید مانند Windows یا Linux.

  • مفاهیم پایه‌ای سیستم‌عامل مانند مدیریت حافظه، فرآیندها، و فایل سیستم‌ها را درک کنید.
  • شناخت نقاط ورود: درک چگونگی شناسایی و تحلیل نقاط ورود برنامه و تغییرات آن.
  • تحلیل متادیتاها: بررسی اطلاعات اضافی و جداول مختلف موجود در فایل‌های اجرایی.
  • کدگذاری و رمزنگاری: تحلیل و شکستن الگوریتم‌های کدگذاری و رمزنگاری که ممکن است برای محافظت از فایل اجرایی استفاده شده باشند.
  • سیستم‌های فایل و بارگذاری: نحوه بارگذاری و اجرای فایل‌های اجرایی در سیستم‌عامل و تعامل آن‌ها با هسته.
  • مدیریت حافظه و ترجمه آدرس‌ها: درک نحوه مدیریت حافظه برای فایل‌های اجرایی و ترجمه آدرس‌ها از حافظه مجازی به فیزیکی.
  • مدیریت فرآیندها و نخ‌ها: تعامل فایل‌های اجرایی با فرآیندها و نخ‌های سیستم‌عامل.

 ۱.۳: معماری کامپیوتر

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

مرحله ۲: آشنایی با ابزارها

۲.۱: دیباگرها

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

  • OllyDbg: دیباگر سطح پایین مناسب برای تحلیل و دستکاری برنامه‌های ویندوزی.
  • x64dbg: یک دیباگر متن‌باز برای تحلیل کدهای ۶۴ بیتی.
  • GDB: دیباگر محبوب برای سیستم‌عامل‌های مبتنی بر یونیکس.

۲.۲: دیسمبلرها

دیسمبلرها ابزارهایی هستند که کد باینری را به کد Assembly تبدیل می‌کنند تا تحلیل آن ساده‌تر شود.

  • IDA Pro: یکی از معروف‌ترین دیسمبلرها برای تحلیل باینری.
  • Ghidra: ابزار متن‌باز و رایگان برای دی‌اسمبلی و تحلیل کد باینری.
  • Radare2: یک ابزار قدرتمند و متن‌باز برای تحلیل باینری.

۲.۳: آنالیزرهای باینری

برای تحلیل فایل‌های باینری و درک ساختار آن‌ها نیاز به ابزارهای خاصی دارید.

  • Binary Ninja: ابزاری قدرتمند برای تحلیل و اصلاح فایل‌های باینری.

مرحله ۳: مطالعه ساختارهای باینری

۳.۱: فرمت‌های فایل اجرایی

شناخت فرمت‌های فایل اجرایی در سیستم‌عامل‌های مختلف اهمیت زیادی دارد.

  • PE (Portable Executable):

    • ساختار فایل PE: درک بخش‌های مختلف مانند Header، Section Table، Import Table، Export Table، و Resource Section.
    • Header فایل PE: شامل DOS Header، NT Header، و Optional Header که اطلاعات پایه‌ای مانند نقاط ورود، نوع فایل و نشانی‌های مختلف را شامل می‌شود.
    • بخش‌های PE: مثل .text (کد اجرایی)، .data (داده‌ها)، .rdata (داده‌های خواندنی) و .bss (متغیرهای غیرمقداری).
    • Import/Export Table: اطلاعات مربوط به توابع و کتابخانه‌های خارجی که فایل اجرایی به آن‌ها وابسته است.
  • ELF (Executable and Linkable Format):

    • ساختار فایل ELF: شامل Header ELF، Section Header Table، و Program Header Table.
    • بخش‌های ELF: مانند .text (کد)، .data (داده‌ها)، .bss (متغیرهای غیرمقداری)، و .symtab (جدول نمادها).
    • Symbol Table و Relocation Entries: اطلاعات مربوط به نمادها و ورودی‌های جابه‌جایی.

۳.۲: پک کردن و فشرده‌سازی فایل‌های اجرایی

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

مرحله ۴: مطالعه و تحلیل بدافزارها

۴.۱: تحلیل بدافزارها

تحلیل بدافزارها به شما کمک می‌کند تا به تحلیل‌های پیچیده‌تر بپردازید و رفتارهای مخرب را شناسایی کنید.

  • با روش‌های پایه‌ای تحلیل بدافزارها آشنا شوید و سپس به سراغ بدافزارهای پیچیده‌تر بروید.

۴.۲: تکنیک‌های جلوگیری از مهندسی معکوس

بسیاری از نرم‌افزارها از تکنیک‌های ضد مهندسی معکوس مانند Obfuscation استفاده می‌کنند. یادگیری این تکنیک‌ها و نحوه دور زدن آن‌ها بخشی از مهارت‌های مهندسی معکوس است.

مرحله ۵: پروژه‌های عملی

۵.۱: مهندسی معکوس یک نرم‌افزار ساده

با دیسمبل کردن و تحلیل یک برنامه ساده شروع کنید. این کار به شما کمک می‌کند تا مفاهیم پایه‌ای را به صورت عملی فرا بگیرید.

۵.۲: تحلیل یک بدافزار واقعی

پس از کسب تجربه کافی، یک بدافزار واقعی را تحلیل کنید و سعی کنید رفتار آن را درک کنید.

مرحله ۶: مطالعه منابع و مستندات

۶.۱: کتاب‌ها و منابع آنلاین

مطالعه کتاب‌های تخصصی و منابع آنلاین به شما کمک می‌کند تا دانش خود را در مهندسی معکوس عمیق‌تر کنید.

  • "Practical Malware Analysis": کتابی جامع برای یادگیری تحلیل بدافزار.
  • "Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation" توسط Bruce Dang, Alexandre Gazet, Elias Bachaalany

    • این کتاب به صورت جامع به مهندسی معکوس روی سیستم‌های مختلف پرداخته و ابزارها و تکنیک‌های مورد نیاز را معرفی می‌کند.
  • "The IDA Pro Book: The Unofficial Guide to the World's Most Popular Disassembler" توسط Chris Eagle

    • این کتاب به آموزش استفاده از ابزار IDA Pro می‌پردازد که یکی از معروف‌ترین ابزارها برای مهندسی معکوس است.
  • "Reversing: Secrets of Reverse Engineering" توسط Eldad Eilam

    • این کتاب اصول و مبانی مهندسی معکوس را به صورت جامع توضیح می‌دهد و برای مبتدیان و حرفه‌ای‌ها مناسب است.
  • "Hacking: The Art of Exploitation" توسط Jon Erickson

    • این کتاب بیشتر بر روی جنبه‌های امنیتی و بهره‌برداری متمرکز است، اما بخش‌هایی نیز دارد که به مهندسی معکوس پرداخته است.
  • "Malware Analyst's Cookbook and DVD: Tools and Techniques for Fighting Malicious Code" توسط Michael Ligh, Steven Adair, Blake Hartstein, و Matthew Richard

    • این کتاب به تحلیل بدافزارها پرداخته و روش‌های مهندسی معکوس برای مقابله با کدهای مخرب را آموزش می‌دهد.
  • "Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software" توسط Michael Sikorski, Andrew Honig

    • این کتاب یکی از بهترین منابع برای یادگیری تحلیل و مهندسی معکوس بدافزارها است و شامل مثال‌های عملی فراوان است.

۶.۲: دوره‌ها و ویدیوهای آموزشی

دوره‌های آموزشی آنلاین مانند Coursera، Udemy و Pluralsight می‌توانند به شما در یادگیری مهندسی معکوس کمک کنند.

مرحله ۷: پیوستن به انجمن‌ها و تالارهای گفت‌وگو

۷.۱: انجمن‌ها و تالارهای گفت‌وگو

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

مرحله ۸: تمرین و تکرار

۸.۱: تمرین مستمر

مهندسی معکوس یک مهارت پیچیده و زمان‌بر است که نیاز به تمرین مداوم دارد. با انجام پروژه‌های مختلف و بررسی نرم‌افزارهای متفاوت، مهارت خود را افزایش دهید.

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


دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)

تعداد 6 دیدگاه ثبت شده
محمد رضا بانشی می گه: زمان ثبت: 2 ماه پیش

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

ابراهیم شفیعی در جواب محمد رضا بانشی می گه: زمان ثبت: 2 ماه پیش

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

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

ما برای شروع شما سه حالت کلی پیشنهاد می‌دیم:

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

📢حالت دوم

تو حالت دوم، ما به شکل کوچینگ همراهتون هستیم 🎯
یعنی مسیر یادگیری‌تون رو خودتون جلو می‌برید، اما ما همیشه کنارتون هستیم تا دقیق ببینیم دارید چی کار می‌کنید، منابع مناسب و به‌روز بهتون معرفی می‌کنیم، پیشرفت‌تون رو چک می‌کنیم و اگه نیاز به اصلاح یا تغییر مسیر باشه، به‌موقع اصلاحش می‌کنیم 👨‍💻📊

توی این روش، آموزش مستقیم نداریم، ولی مسیر یادگیری‌تون با نظارت و پشتیبانی کاملاً هدفمند و قابل اندازه‌گیریه. این مدل برای خیلی‌ها نتیجه فوق‌العاده داشته، چون بهشون نظم، انگیزه و اعتماد به نفس داده تا مطمئن باشن دارن درست پیش می‌رن 🔐💡

هزینه کوچینگ تخصصی در حوزه مهندسی معکوس، ماهانه 65 میلیون تومان هست 💸
حداقل همکاری ۳ ماهه در نظر گرفته شده چون در زمان کمتر از اون معمولاً نتیجه‌ ملموسی حاصل نمی‌شه 🚀

به صورت مستقیم (مکالمه تلفنی و چت) با خودم من همیشه ارتباط خواهید داشت 🌱✨

📢حالت سوم
آموزش کاملاً خصوصی و تخصصی، به صورت مستقیم با خود ما. تو این حالت همه مراحل آموزش، تمرین و تحلیل با راهنمایی مستقیم انجام می‌شه. این مدل برای افرادیه که می‌خوان سریع، عمیق و با کیفیت بالا وارد حوزه بشن.
هزینه این آموزش خصوصی در حوزه مهندسی معکوس، ۵۱۰ میلیون تومان هست، و فقط به صورت محدود انجام می‌شه.هر قدمی بردارید، ما کنار شما هستیم.

شما با توجه به شرایط، زمان، انگیزه و بودجه‌تون می‌تونید یکی از این حالت‌ها رو انتخاب کنید.

 با احترام 🌱

محمد رضا بانشی در جواب ابراهیم شفیعی می گه: زمان ثبت: 2 ماه پیش

بله کاملا صحیح هست ببخشید بنده رو زیاد ازتون سوال میپرسم چون میدونم شما قشنگ وبا حوصله جواب میدید و به مخاطبتون انگیزه میدید خیلی برا من قشنگه 

مهندسی iot چی هست میشه در این مورد هم توضیح بدید یادگیریش به چه شکل هست و چطور به این حوزه ورود کرد 

ابراهیم شفیعی در جواب محمد رضا بانشی می گه: زمان ثبت: 2 ماه پیش

خواهش می‌کنم، باعث خوشحالی منه که با شما گفتگو می‌کنم  با خیال راحت هرچقدر خواستید سؤال بپرسید.

مهندسی IoT یا همون «مهندسی اینترنت اشیا»، یه حوزه‌ی خیلی جذاب و به‌روز از ترکیب چند علمه؛ مثل الکترونیک، نرم‌افزار، شبکه و داده.

تو این حوزه ما با ساخت و طراحی سیستم‌هایی سر و کار داریم که اشیای واقعی (مثل سنسور، دستگاه، ماشین، یخچال، ساعت هوشمند، سیستم‌های کشاورزی و...) بتونن از طریق اینترنت با هم در ارتباط باشن، داده رد و بدل کنن و حتی بدون دخالت انسان تصمیم‌گیری کنن.

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

محمد رضا بانشی در جواب ابراهیم شفیعی می گه: زمان ثبت: 2 ماه پیش

بله کاملا رسته مهندسی معکوس iot به چه شکل هست کارش به چه شکل هست باید چه مهارت های بلد بود که بشه مهندسی معکوس انجام  داد در این حوزه 

ابراهیم شفیعی در جواب محمد رضا بانشی می گه: زمان ثبت: 2 ماه پیش

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