مهندسی معکوس

مهندسی معکوسی به علمی گفته می‌شود که از پاسخ به سؤال می‌رسند و در واقع فرایند کشف اصول تکنولوژیکی یک دستگاه، شیء یا یک سیستم است که از طریق تجزیه و تحلیل ساختار و عملکرد آن حاصل می‌شود. در اکثر مواقع موضوع مورد بررسی یک دستگاه مکانیکی، الکتریکی، برنامه نرم‌افزاری یا یک ماده بیولوژیکی یا شیمیایی است که بدون داشتن دانش قبلی و تنها با جداسازی اجزا و تجزیه و تحلیل شیوه عملکرد آن، سعی در ایجاد یک نمونه جدید از آن می‌گردد.
مهندسی معکوس به‌طور عمده در استفاده‌های تجاری و نظامی به کار می‌رود و هدف آن استنباط پارامترهای طراحی یک محصول موجود بدون داشتن دانش کافی در زمینه تولید آن محصول و فقط با پیمودن فرایند معکوس و به‌کارگیری تکنیک‌های مشابه است.

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

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

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

مهندسی معکوس کد (سورس کد) 
این فرایند برخی مواقع مهندسی معکوس کد یا(Reverse Code Engineering) نامیده می‌شود. به عنوان یک مثال، دیکامپایل کردن باینری برای پلتفرم جاوا از طریق برنامه JAD می‌تواند انجام شود. یک مثال از گروهی که مهندسی معکوس نرم‌افزار را برای لذت بردن (و انتشار کدهای ثبت) انجام می‌دهند CORE هست که مخفف «چالش مهندسی معکوس» است. مهندسی معکوس نرم‌افزار در قانون کپی رایت ایالات متحده در صورت استفاده منصفانه محافظت می‌شود. برنامه Samba که به سیستم‌های غیر مایکروسافت ویندوز اجازه می‌دهد به اشتراک فایل با سیستم‌های ویندوزی بپردازند یک مثال کلاسیک از مهندسی معکوس نرم‌افزار هست. به این خاطر پروژه Samba باید به مهندسی معکوس اطلاعات منتشر نشده در مورد چگونگی به اشتراک‌گذاری فایل ویندوز می‌پرداخت، تا که کامپیوترهای غیر ویندوزی بتوانند آن را شبیه‌سازی کنند. پروژه Wine همین کار را برای API ویندوز و OpenOffice.org این کار را برای فرمت فایل‌های مایکروسافت آفیس انجام می‌دهد.

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

 تجزیه و تحلیل از طریق مشاهده تبادل اطلاعات - شایع‌ترین پروتکل در مهندسی معکوس - که شامل استفاده از آنالیزورهای درگاه باس و اطلاعات انتقالی شبکه است. الگوی رفتاری درگاه باس یا شبکه بعداً می‌تواند مورد تجزیه و تحلیل قرار گیرد. به منظور تولید یک اجرای مستقل که آن رفتار را تقلید می‌کند. این امر به ویژه برای مهندسی معکوس درایورهای دستگاه مفید است. برخی مواقع مهندسی معکوس بر روی سیستم‌های بسته به وسیله ابزارهایی که عمداً توسط تولیدکننده معرفی شده بسیار کمک‌کننده است. در مایکروسافت ویندوز دیباگر سطح پایین مانند SoftICE طرفداران بسیاری دارند.
 تولید فایل اسمبل برنامه به وسیله دیس اسمبلر: به معنی خواندن کدهای خام زبان ماشین و درک این اطلاعات با اصطلاحات خواص دیس اسمبلر. این عمل بر روی تمام برنامه‌های کامپیوتری می‌تواند اعمال شود اما درک آن ممکن است مدتی زمان بر باشد، مخصوصاً برای کسانی که با زبان ماشین آشنا نیستند.
 دستیابی به سورس کد با استفاده از یک دیکامپایل‌کننده، فرایندی که تلاش می‌کند سورس کد را در بعضی زبان‌های سطح بالا برای برنامه‌ای که فقط در حالت بایت کد یا کدهای ماشین است فراهم کند.
تکنیک‌های حذف لایسنس نرم‌افزار شامل: سریال فیشینگ، پچ یا وصله زدن، keygen یا تولیدکننده کلید، unpacking (برداشتن لایه امنیتی نرم‌افزار که توسط پروتکتور یا محافظ محافظت شده)

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

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

یک مثال معروف این است که محصولات داده کلمبیا برای اولین بار یک کپی از کامپیوترهای IBM را از طریق اجرای اتاق پاک BIOS آن ساخت.ReactOS یک سیستم عامل منبع باز است که از اتاق پاک مهندسی معکوس اجزای ویندوز ساخته شده‌است.

مهندسی معکوس در سه‌بعدی‌سازی 
مهندسی معکوس سه‌بعدی‌سازی، هنر تبدیل ابر نقاط به مدل سه‌بعدی CAD می‌باشد. ابر نقاط مجموعه سه‌بعدی از نقاط است که خصوصیات سطح خارجی یک شیء را توصیف می‌کنند. این نقاط از آنالیز محیط پیرامون شیء و جمع‌آوری اطلاعات از شکل ظاهری آن به کمک یک اسکنر سه بعدی به دست می‌آیند. تکنولوژی به کار رفته در جمع‌آوری اطلاعات از سطح شکل، در دو نوع تماسی و بدون تماس می‌باشد. در حالت تماسی از دستگاه‌های (CMM (Coordinate Measuring Machine و در حالت بدون تماس از لیزر و نور ساخت یافته استفاده می‌شود.

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

محیط کاری (Digitized Shape Editor (DSE در آغاز چرخه مهندسی معکوس CATIA قرار دارد. این محیط به عنوان یک ابزار قدرتمند برای خواندن، وارد کردن، اعمال فرایندهای مختلف بر روی ابر نقاط و تولید مش مورد استفاده قرار می‌گیرد. خروجی این محیط می‌تواند در محیط‌های Quick Surface Reconstruction, Digital Mock-Up یا Surface Machining به کار رود یا به صورت فرمت‌های مختلف تبدیل شود.

محیط کاری (Quick Surface Reconstruction (QSR برای بازسازی سریع و آسان سطوح از روی داده‌های خروجی ابر نقاط مورد استفاده قرار می‌گیرد. این محیط با توجه به نوع شکل ورودی، چندین روش مختلف برای بازسازی سطوح ارائه می‌دهد.

فرایند مهندسی معکوس سه بعدی سازی:

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

مرحله اول: اسکن جسم سه بعدی با استفاده از اسکنر سه بعدی که خود شامل دو نوع اسکنر می باشد اسکنر تماسی و اسکنر غیر تماسی

مرحله دوم: پردازش داده ها برای ایجاد یک مدل سه بعدی

مرحله سوم : اصلاح طرح با استفاده از مقایسه طرح با مدل فیزیکی آن می باشد تا بتوان اختلافات را پیدا و مدل مناسبی را طراحی کرد.

مهندسی معکوس از روی عکس محصول یا دستگاه 
از عمده کاربردهای مهندسی معکوس، طراحی یک مدل سه بعدی با استفاده از عکس یا تصویر سه نما می‌باشد. محیط کاری (FreeStyle Sketch Tracer (FSK بخشی از مجموعه طراحی سطوح CATIA شما را قادر می‌سازد تا طرح‌ها، عکس‌ها یا هر نوع ترسیمه دوبعدی را وارد کرده و موقعیت و مقیاس آن را در فضای سه بعدی تعیین کنید. سپس می‌توانید از سایر محیط‌های طراحی سطوح یعنی FreeStyle, Generative Shape Design و Imagine & Shape برای ترسیم المان‌های هندسی بر روی این طرح‌ها استفاده نموده و در نهایت مدل سه بعدی مورد نظر را ایجاد نمایید.

منابع 

امنیت رایانه‌ای
جاسوسی
حق امتیاز
ساخت و تولید
مبانی مهندسی
مهندسی صنایع
مهندسی معکوس
ویکی‌سازی رباتیک