خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

آشنایی با مفاهیم مهندسی معکوس

ایجاد مجدد یا به روز رسانی یک سیستم اغلب مستلزم سطح عمیقی از درک است.

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

همچنین می توانید مهندسی معکوس را به اثبات معادلات ریاضی تشبیه کنید. بنابراین، مهندسی معکوس چگونه استفاده می شود؟

مهندسی معکوس چیست؟

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

  • تجزیه و تحلیل منبع نرم افزارهای غیر متن باز
  • تجزیه و تحلیل آسیب پذیری
  • تجزیه و تحلیل بدافزار
  • ترک و وصله

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

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

اما قبل از انجام تجزیه و تحلیل برای مهندسی معکوس، چند اصطلاح مهم وجود دارد که باید در مورد نحوه عملکرد معماری کامپیوتر بدانید.

مطلب مرتبط:   جمینی در مقابل کوین بیس: بهترین صرافی رمز ارز کدام است؟

بخش های اصلی معماری کامپیوتر

مهندسی معکوس عملا غیرممکن است مگر اینکه معماری کامپیوتر را درک کنید. شما باید چهار بخش اصلی را مطالعه کنید:

  • ورودی: مجموعه ای از روش ها برای وارد کردن داده ها.
  • CPU: CPU داده های دریافتی را پردازش کرده و به صاحبان خود ارسال می کند. این واحد پردازش مرکزی است.
  • حافظه: فضایی که به طور موقت داده ها را در حین پردازش نگه می دارد.
  • خروجی: نتیجه ای که کاربر نهایی می بیند.

می توانید با یک مثال تمام این مسائل اصلی را در ذهن داشته باشید، مانند زمانی که حرف A را روی صفحه کلید خود فشار می دهید. وقتی آن را فشار می دهید، یک رویداد ورودی رخ می دهد. پس از این مرحله، CPU داده ها را پردازش کرده و از فضای کمی در حافظه برای ذخیره آن ها استفاده می کند. در نهایت، حرف A را روی صفحه نمایش خود خواهید دید که این فرآیند با خروجی به پایان می رسد.

به اعماق CPU شیرجه بزنید

نمای نزدیک از یک CPU روی یک برد مدار

اگر واقعاً می خواهید در مهندسی معکوس متخصص شوید و عمیقاً در این موضوع غوطه ور شوید، باید دانش دقیقی از سخت افزار، زبان های سطح پایین و به خصوص CPU داشته باشید. موضوعات کلیدی که باید در مورد CPU بدانید عبارتند از:

  1. واحد کنترل: وظیفه پردازش داده ها در CPU و انتقال آن به فیلدهای مربوطه را بر عهده دارد. می توانید این واحد را به عنوان مکانیزم کنترل مسیریابی در نظر بگیرید.
  2. ALU: این مخفف عبارت Arithmetic Logic Unit است. این جایی است که برخی از عملیات های حسابی و منطقی انجام می شود. اگر عمیق‌تر در ریاضیات کاوش کنید، خواهید دید که چهار عمل اصلی اساساً تغییراتی در جمع هستند. بنابراین ALU بر اساس تجمع است. مثلاً تفریق دو از سه برابر است با جمع منهای دو به سه.
  3. رجیسترها: قسمت هایی در داخل CPU هستند که داده های پردازش شده را در خود نگه می دارند. انواع مختلفی از ثبات وجود دارد، دقیقاً مانند انواع مختلفی از متغیرها در یک زبان برنامه نویسی. یک ثبات مسئول حفظ نوع و ویژگی های داده های اختصاص داده شده به آن است.
  4. سیگنال ها: اگر می خواهید CPU چندین عملیات مختلف را همزمان انجام دهد، روشی برای سازماندهی آنها ضروری است. عناصری که این کار را انجام می دهند سیگنال نامیده می شوند. هر تراکنش بر اساس سیگنال هایی عمل می کند که تضمین می کند با فرآیند دیگری تداخل نداشته باشد.
  5. Bus: مسیری که داده ها برای حرکت از یک واحد به واحد دیگر استفاده می کنند. توجه داشته باشید که چگونه نام حمل و نقل را نشان می دهد.
مطلب مرتبط:   Raptor Lake اینتل چیست؟ 3 چیز که باید بدانید

مفاهیمی که اغلب در مهندسی معکوس خواهید شنید

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

نموداری که بخش‌های مختلف حافظه را نشان می‌دهد شامل Stack و Heap است.

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

  • 1. EAX: مخفف Accumulator Register. معمولاً داده هایی را ذخیره می کند که در زیر دسته عملیات حسابی قرار می گیرند.
  • 2. EBX: مخفف Base Register است. در آدرس دهی غیر مستقیم نقش دارد.
  • 3. EDX: مخفف Data Register است. EDX به سایر رجیسترها کمک می کند.
  • 4. EIP: مخفف Instruction Pointer است. آدرس دامنه را برای اجرا نگه می دارد.
  • 5. ESP: آدرس پایه را نگه می دارد.
  • 6. ESI: اطلاعات فهرست منبع را نگه می دارد.
  • 7. EDI: اطلاعات فهرست مقصد را نگه می دارد.

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

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

مطلب مرتبط:   نحوه تعمیر BSOD مدیریت حافظه کد استاپ ویندوز

با همه اینها چه خواهید کرد؟

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

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