مهندسی معکوس که انگلیسی آن Reverse Engineering می باشد. عمل بررسی و جدا کردن یک شی برای مشاهده نحوه عملکرد آن است. البته به این معنا نیست که فقط در سخت افزار به کار برده شود.به عنوان مثال می توان یک نرم افزار یا وب سایت را Reverse Engineering کرد و بدین ترتیب یک نسخه بومی سازی شده از آن را طراحی کرد.مهندسی معکوس اساساً برای تجزیه و تحلیل و به دست آوردن دانش در مورد نحوه عملکرد یک چیز انجام می شود، اما اغلب برای کپی کردن یا تقویت شی مورد استفاده قرار می گیرد. بسیاری از چیزها را می توان مهندسی معکوس کرد، از جمله نرم افزار، ماشین های فیزیکی، فناوری نظامی و حتی عملکردهای بیولوژیکی مرتبط با نحوه عملکرد ژن ها.
به عنوان مثال می توان مزایایی که در ژن برخی از جانداران وجود دارد را با استفاده از مهندسی معکوس در انسان شبیه سازی کرد.
عمل Reverse Engineering که در سخت افزار و نرم افزار کامپیوتر اعمال می شود از صنایع قدیمی تر گرفته شده است. مهندسی معکوس نرم افزار بر روی کدهای ماشین برنامه تمرکز می کند. بدین صورت که کدها را بررسی کرده و سپس آن ها را بومی سازی می کند.
بسته به فناوری، دانش بهدستآمده در طول مهندسی معکوس میتواند برای استفاده مجدد از اشیاء منسوخ، انجام یک تجزیه و تحلیل امنیتی، به دست آوردن مزیت رقابتی یا صرفاً برای آموزش به کسی در مورد نحوه کارکرد چیزی مورد استفاده قرار گیرد. مهم نیست که دانش چگونه استفاده می شود یا به چه چیزی مربوط می شود، مهندسی معکوس فرآیند به دست آوردن آن دانش از یک شی می باشد.
هدف از مهندسی معکوس چیست؟
هدف از Reverse Engineering این است که بفهمیم یک شی یا سیستم چگونه کار می کند. دلایل مختلفی برای این کار وجود دارد. مهندسی معکوس را می توان برای یادگیری نحوه عملکرد یک چیز و بازآفرینی شی یا ایجاد یک شی مشابه با پیشرفت های اضافه استفاده کرد.
اغلب هدف نرمافزار یا سختافزار Reverse Engineering یافتن راهی برای ایجاد یک محصول مشابه با هزینه کمتر یا به دلیل اینکه محصول اصلی دیگر در دسترس نیست، است. مReverse Engineering در فناوری اطلاعات همچنین برای رسیدگی به مسائل مربوط به سازگاری و کار کردن سخت افزار یا نرم افزار با سایر سخت افزارها، نرم افزارها یا سیستم عامل هایی که در اصل با آنها سازگار نبوده، استفاده می شود.
نرم افزار Logic Pro اپل که به نوازندگان اجازه می دهد موسیقی بسازند، ضبط، تنظیم، ویرایش و میکس کنند، مثال خوبی است. Logic Pro فقط برای دستگاه های مک موجود است و نسبتاً گران است. این برنامه چندین ابزار دیجیتال اختصاصی دارد. با کمی تحقیق، یک برنامه نویس می تواند آن ابزارهای دیجیتال را مهندسی معکوس کند، بفهمد که چگونه کار می کنند و آنها را برای استفاده در Logic Pro سفارشی کند یا آنها را با سایر نرم افزارهای موسیقی سازگار با ویندوز سازگار کند.
فرآیند مهندسی معکوس چگونه کار می کند؟
فرآیند مهندسی معکوس مختص شیئی است که بر روی آن انجام می شود. با این حال، بدون توجه به زمینه، سه مرحله کلی مشترک برای تمام تلاشهای Reverse Engineering وجود دارد. آنها عبارتند از:
- استخراج اطلاعات شی مورد Reverse Engineering مورد مطالعه قرار می گیرد، اطلاعات مربوط به طراحی آن استخراج می شود و این اطلاعات برای تعیین اینکه چگونه قطعات با هم قرار می گیرند، بررسی می شود. در مهندسی معکوس نرم افزار، این ممکن است نیاز به جمع آوری کد منبع و اسناد طراحی مرتبط برای مطالعه داشته باشد. همچنین ممکن است شامل استفاده از ابزارهایی مانند جداکننده برای تجزیه برنامه به بخش های تشکیل دهنده آن باشد.
- مدل سازی. اطلاعات جمعآوریشده در یک مدل مفهومی انتزاعی ساخته میشود و هر بخش از مدل عملکرد خود را در ساختار کلی توضیح میدهد. هدف از این مرحله، گرفتن اطلاعات مختص به نسخه اصلی و انتزاع آن در یک مدل کلی است که بتوان از آن برای هدایت طراحی اشیا یا سیستم های جدید استفاده کرد. در مهندسی معکوس نرم افزار، این ممکن است به شکل نمودار جریان داده یا نمودار ساختار باشد.
- مرور. این مرحله شامل بررسی مدل و آزمایش آن در سناریوهای مختلف است تا اطمینان حاصل شود که یک دستگاه ساخته شده واقعی از شی یا سیستم اصلی است. در مهندسی نرم افزار این ممکن است به شکل تست نرم افزار باشد. پس از آزمایش، مدل می تواند برای مهندسی مجدد شی اصلی پیاده سازی شود.
جزئیات فرآیند مهندسی معکوس بسته به چیزی که مهندسی معکوس می شود متفاوت است، اما به طور کلی در این سه مرحله قرار می گیرد.
مهندسی معکوس نرم افزار شامل استفاده از چندین ابزار است. یکی از ابزارها یک دامپر هگزادسیمال است که اعداد باینری یک برنامه را به صورت هگزادسیمال چاپ یا نمایش می دهد. با دانستن الگوهای بیتی که دستورالعملهای پردازنده اصلی را نشان میدهند و همچنین طول دستورالعملها، مهندس معکوس میتواند بخشهایی از یک برنامه را شناسایی کند تا ببیند چگونه کار میکنند.
یکی دیگر از ابزارهای Reverse Engineering نرم افزار disassembler است. کد باینری را می خواند و هر دستورالعمل اجرایی را به صورت متن نمایش می دهد. یک disassembler نمی تواند تفاوت بین یک دستورالعمل اجرایی و داده هایی را که برنامه استفاده می کند تشخیص دهد، بنابراین یک دیباگر برای جلوگیری از جداسازی بخش های داده یک برنامه توسط disassembler استفاده می شود. این ابزارها ممکن است توسط یک کرکر کامپیوتری استفاده شوند و به سیستم کامپیوتری وارد شوند یا آسیب های دیگری ایجاد کنند.
طراحی به کمک کامپیوتر (CAD) یک تکنیک مهندسی معکوس است که برای بازسازی یک قطعه ساخته شده در زمانی که طرح اولیه دیگر در دسترس نیست استفاده می شود. این شامل تولید تصاویر سه بعدی از قطعه است تا بتوان آن را دوباره ساخت. یک دستگاه اندازه گیری مختصات قطعه را اندازه گیری می کند و همانطور که اندازه گیری می شود، یک تصویر قاب سیم سه بعدی با استفاده از نرم افزار CAD تولید می شود و روی نمایشگر نمایش داده می شود. پس از اتمام اندازه گیری، تصویر قاب سیمی ابعاد می شود. هر قطعه ای را می توان با استفاده از این روش ها مهندسی معکوس کرد.
نمونه هایی از مهندسی معکوس
Reverse Engineering بسته به آنچه که در مورد آن اعمال می شود و هدف از Reverse Engineering فناوری متفاوت است. نمونه های رایج عبارتند از:
نرم افزار
چندین نمونه وجود دارد که از Reverse Engineering برای جداسازی نرم افزار استفاده می شود. یک مثال معمول، تطبیق یک برنامه نوشته شده برای استفاده با یک ریزپردازنده به دیگری است. نمونه های دیگر عبارتند از بازسازی سورس کد از دست رفته، مطالعه نحوه اجرای یک برنامه عملیات خاص، بهبود عملکرد و رفع اشکالات یا تصحیح خطاها زمانی که کد منبع یا همان سورس کد اصلی در دسترس نیست.
یک نمونه Phoenix، یک شرکت نرم افزاری ایالات متحده است که نرم افزار اولیه سیستم ورودی/خروجی (BIOS) را ایجاد کرد که با نسخه اختصاصی IBM سازگار بود. برای انجام این کار، فونیکس نسخه IBM را به گونهای Reverse Engineering کرد که از آن ها در برابر هزینه های کپی رایت محافظت کرد، با ثبت مراحلی که دنبال کرد و به کد اختصاصی ارجاع نداد.
بدافزار حوزه دیگری است که در آن از Reverse Engineering نرم افزار استفاده می شود. عاملان تهدید اغلب از کدهای مبهم و قابل نفوذ نرم افزار استفاده می کنند تا از کشف یا درک کد مخرب خود جلوگیری کنند. صاحبان نرم افزارها یا سیستم های آلوده می توانند از مهندسی معکوس برای شناسایی محتوای مخرب مانند ویروس استفاده کنند.
آژانس اطلاعات دفاعی ایالات متحده گفته است که قصد دارد از این تکنیک ها برای مهندسی معکوس بدافزارهای دشمن برای ایجاد سلاح های سایبری تهاجمی خود استفاده کند. ابزارهایی برای کمک به Reverse Engineering بدافزار در دسترس هستند، مانند نرم افزار Ghidra آژانس امنیت ملی که برای مهندسی معکوس بدافزار WannaCry استفاده می شود.
قطعات رایانه
اگر یک سازنده پردازنده بخواهد ببیند پردازنده یک رقیب چگونه کار می کند، می تواند پردازنده رقیب را بخرد، آن را مهندسی معکوس کند و سپس از آنچه یاد می گیرد برای ساخت پردازنده خود استفاده کند.
این فرآیند در بسیاری از کشورها غیرقانونی است و به تخصص زیادی نیاز دارد و هزینه بالایی دارد. مهندسی معکوس اغلب برای ایجاد قطعات جایگزین در زمانی که قطعات اصلی تجهیزات قدیمی دیگر در دسترس نیستند استفاده می شود. مهندسی معکوس قطعات کامپیوتر نیز برای افزایش امنیت انجام می شود. به عنوان مثال، پروژه صفر گوگل با استفاده از مهندسی معکوس، آسیبپذیریها را در ریزپردازندهها شناسایی کرد.
ارزیابی امنیت شبکه
شرکت هایی که ارزیابی امنیت شبکه را انجام می دهند نیز از مهندسی معکوس به عنوان یکی از ابزارهای خود استفاده می کنند. آنها گروه امنیتی خود را به دو تیم تقسیم می کنند. یک تیم حملات را شبیه سازی می کند و تیم دیگر شبکه را زیر نظر دارد و حملات تیم دیگر را مهندسی معکوس می کند. اطلاعات به دست آمده از این حملات ساختگی برای تقویت شبکه شرکت استفاده می شود.
چالش های حقوقی و اخلاقی با مهندسی معکوس
در ایالات متحده، Reverse Engineering به طور کلی یک روش قانونی برای یادگیری در مورد یک محصول در نظر گرفته می شود، تا زمانی که نسخه اصلی به صورت قانونی به دست آمده باشد و هیچ قرارداد دیگری آسیب نبیند. هدف قوانین تجارت ایالات متحده اجازه دادن به مهندسی معکوس در صورتی است که به نفع بهبود محصول یا ایجاد قابلیت همکاری با سایر محصولاتی باشد که قبلاً ناسازگار بودند.
Reverse Engineering یک محصول ثبت شده عموماً تحت قانون دفاع از اسرار تجاری قانونی است، اما شرایطی وجود دارد که قانونی بودن آن مشکوک است. دارندگان حق ثبت اختراع علیه هر کسی که از اختراعات آنها کپی می کند حق شکایت قانونی دارند.
نرم افزار Reverse Engineering به منظور کپی کردن یک برنامه ممکن است نقض قانون کپی رایت باشد. برخی از مجوزهای نرم افزاری به طور خاص مهندسی معکوس را ممنوع می کنند. سایر قراردادهای اینچینی همچنین میتوانند استفاده از مهندسی معکوس را برای دسترسی به اطلاعات اصلی محدود کنند، از جمله شرایط خدمات یا اعلانهای استفاده و عدم افشا و انواع دیگر قراردادهای توسعهدهنده که در آن ها می تواند مانع از مهندسی معکوس سخت افزار یا نرم افزار تولیدی شود.
اقدامات حفاظتی فناوری (TPM)، مانند رمزهای عبور، رمزگذاری و دستگاههای کنترل دسترسی، اغلب برای کنترل دسترسی به نرمافزار و سایر محتوای دیجیتال دارای حق کپی رایت استفاده میشوند. دور زدن TPM می تواند مشکلات حقوقی را ایجاد کند.
قوانین مختلف مربوط به مهندسی معکوس شامل موارد زیر است:
- قانون ثبت اختراع
- قانون کپی رایت و استفاده منصفانه
- قانون اسرار تجاری
- مقررات ضد دور زدن قانون حق چاپ هزاره دیجیتال
- قانون حفظ حریم خصوصی ارتباطات الکترونیکی
- هر قانون قراردادی خاص برای محصول مورد نظر که در قرارداد ذکر می شود می تواند به طرفین در راستای اجازه دادن به بهره وری و بهره وری از روش مهندسی معکوس کمک کند.
هنگامی که یک چالش Reverse Engineering به دادگاه مطرح می شود، مالک اصلی شی، سیستم یا مالکیت معنوی باید ثابت کند که آن شی را ایجاد کرده است یا مالک حق اختراع یا دارای حق کپی رایت است. شخص یا سازمانی که مهندسی معکوس را انجام می دهد باید ثابت کند که اطلاعات را از راه های قانونی به دست آورده است.
یکی از راههای مهندسی معکوس و توسعه یک محصول نرمافزاری جدید برای جلوگیری از نقض کپی رایت، استفاده از اتاق تمیز یا تکنیک دیوار اخلاقی است که در آن دو گروه مجزا از برنامهنویسان روی پروژه کار میکنند و اطمینان حاصل میکنند که نسخه اصلی مستقیماً کپی نمیشود.
Reverse Engineering حوزه پیچیده اخلاق و قانون است. گسترش فناوری اطلاعات در بسیاری از بخشهای زندگی روزمره آن را پیچیدهتر میکند.
نتیجه گیری و پایان
Reverse Engineering کاربردهای مشروع بسیاری در فناوری اطلاعات دارد. این می تواند یک رویکرد قانونی و اخلاقی برای رسیدگی به مسائل سازگاری، بازسازی قطعات قدیمی، انجام ارزیابی های امنیتی، بهبود محصول موجود یا ارزان تر کردن آن باشد.
مراحل درگیر پیچیده هستند و بسته به آنچه که مهندسی معکوس انجام می شود متفاوت است. برای مثال، متخصصان QA که به دنبال رسیدگی به مشکلات کاربران با محصولات نرمافزاری هستند، میتوانند یک شکایت را مهندسی معکوس کنند تا به علت آن برسند. شناسایی دلایل ریشه ای مشکلات کاربر آسان نیست، اما تکنیک های مهندسی معکوس برخی از مشکلات را حذف می کند.
آیا شما اطلاعات بیشتری از مهندسی معکوس دارید؟
نظرتان درباره مهندسی معکوس چیست؟
آیا تجربه استفاده از Reverse Engineering را داشته اید؟
در همه این موارد، شما می توانید با استفاده از در بخش کامنت های این پست، صحبت های خود را در مورد تکنیک های مهندسی معکوس با ما به اشتراک بگذارید.
- برند سازی
- هوش مصنوعی چیست؟
- نور آبی چیست؟
- پاوربانک چیست؟ انواع پاوربانک
- نقد و بررسی انواع هارد