- آسمونی
- مجله اینترنتی
- علمی و دانستنی
- آیا میدانستید؟!
- مهندسی معکوس چیست؟

مهندسی معکوس چیست؟
آیا می دانید مهندسی معکوس چیست؟ مهندسی معکوس یکی از علوم بسیار پرکاربرد در دنیای امروزی است. برای آشنایی بیشتر با مهندسی معکوس این بخش آسمونی" href="http://asemooni.com">آسمونی را تا پایان مطالعه نمایید.
مهندسی معکوس چیست؟
مهندسی معکوس (به انگلیسی: Reverse Engineering) به علمی گفته میشود که از پاسخ به سؤال میرسند و در واقع فرایند کشف اصول تکنولوژیکی یک دستگاه، شیئ یا یک سیستم میباشد که از طریق تجزیه و تحلیل ساختار و عملکرد آن حاصل میشود. در اکثر مواقع موضوع مورد بررسی یک دستگاه مکانیکی، الکتریکی، برنامه نرمافزاری یا یک ماده بیولوژیکی یا شیمیایی میباشد که بدون داشتن دانش قبلی و تنها با جداسازی اجزا و تجزیه و تحلیل شیوه عملکرد آن، سعی در ایجاد یک نمونه جدید از آن میگردد. مهندسی معکوس بهطور عمده در استفادههای تجاری و نظامی به کار میرود و هدف آن استنباط پارامترهای طراحی یک محصول موجود بدون داشتن دانش کافی در زمینه تولید آن محصول و فقط با پیمودن فرایند معکوس و بهکارگیری تکنیکهای مشابه میباشد.
دلایل استفاده از مهندسی معکوس
- نوسازی نرمافزار: مهندسی معکوس به صورت کلی برای درک وضعیت موجود برنامه مورد نیاز است. این عمل به منظور برآورد درست کوششهای مورد نیاز برای مهاجرت اطلاعات سیستم به یک وضعیت دلخواه است.
- نگهداری نرمافزار: مهندسی معکوس نرمافزار میتواند مستندات لازم را برای درک وضعیت فعلی نرمافزار سیستم فراهم کند.
- آنالیز محصول: برای بررسی اینکه یک محصول چه گونه کار میکند، از چه اجزایی تشکیل شده، برآورد هزینهها و مشخص کردن حقوق مالکیت بالقوه.
- بازبینی امنیتی
- بدست آوردن اطلاعات حساس به کمک دیس اسمبل و تجزیه و تحلیل طراحی اجزای سیستم
- حذف محافظ کپی، دور زدن محدودیتهای دسترسی.
- ایجاد کپیهای بدون مجوز / تأیید نشده.
- اهداف علمی / آموزشی.
مهندسی معکوس در حوزه نرمافزار
در عمل دو نوع عمده از مهندسی معکوس وجود دارد. در حالت اول، سورس کد برای برنامه وجود دارد، اما سطوح بالاتری از جنبههای این برنامه، شاید مستندات ضعیف یا مستنداتی که دیگر اعتبار ندارد، مشاهده میشوند. در حالت دوم، سورس کدی برای برنامه موجود نیست و هرگونه تلاشی در جهت استخراج یک سورس کد ممکن برای نرمافزار به عنوان مهندسی معکوس در نظر گرفته شدهاست. بسیاری از مردم با استفاده دوم از این اصطلاح آشنا هستند. مهندسی معکوس نرمافزار برای جلوگیری از نقض کپی رایت میتواند از تکنیک طراحی اتاق پاک استفاده کند.
مهندسی معکوس کد (سورس کد)
این فرایند برخی مواقع مهندسی معکوس کد یا(Reverse Code Engineering) نامیده میشود. به عنوان یک مثال، دیکامپایل کردن باینری برای پلتفرم جاوا از طریق برنامه JAD میتواند انجام شود. یک مثال از گروهی که مهندسی معکوس نرمافزار را برای لذت بردن (و انتشار کدهای ثبت) انجام میدهند CORE هست که مخفف «چالش مهندسی معکوس» است. مهندسی معکوس نرمافزار در قانون کپی رایت ایالات متحده در صورت استفاده منصفانه محافظت میشود. برنامه Samba که به سیستمهای غیر مایکروسافت ویندوز اجازه میدهد به اشتراک فایل با سیستمهای ویندوزی بپردازند یک مثال کلاسیک از مهندسی معکوس نرمافزار هست. به این خاطر پروژه Samba باید به مهندسی معکوس اطلاعات منتشر نشده در مورد چگونگی به اشتراکگذاری فایل ویندوز میپرداخت، تا که کامپیوترهای غیر ویندوزی بتوانند آن را شبیهسازی کنند. پروژه Wine همین کار را برای API ویندوز و OpenOffice.org این کار را برای فرمت فایلهای مایکروسافت آفیس انجام میدهد.
تکنیکهای مهندسی معکوس نرمافزار
مهندسی معکوس نرمافزار از روشهای گوناگونی میتواند بدست آید. سه گروه اصلی مهندسی معکوس نرمافزار عبارتند از:
1-تجزیه و تحلیل از طریق مشاهده تبادل اطلاعات - شایعترین در مهندسی معکوس پروتکل- که شامل استفاده از آنالیزورهای درگاه باس و اطلاعات انتقالی شبکه است. الگوی رفتاری درگاه باس یا شبکه بعداً میتواند مورد تجزیه و تحلیل قرار گیرد. به منظور تولید یک اجرای مستقل که آن رفتار را تقلید میکند. این امر به ویژه برای مهندسی معکوس درایورهای دستگاه مفید است. برخی مواقع مهندسی معکوس بر روی سیستمهای بسته به وسیله ابزارهایی که عمداً توسط تولیدکننده معرفی شده بسیار کمککننده است. در مایکروسافت ویندوز دیباگر سطح پایین مانند SoftICE طرفداران بسیاری دارند.
2-تولید فایل اسمبل برنامه به وسیله دیس اسمبلر: به معنی خواندن کدهای خام زبان ماشین و درک این اطلاعات با اصطلاحات خواص دیس اسمبلر. این عمل بر روی تمام برنامههای کامپیوتری میتواند اعمال شود اما درک آن ممکن است مدتی زمان بر باشد، مخصوصاً برای کسانی که با زبان ماشین آشنا نیستند.
3-دستیابی به سورس کد با استفاده از یک دیکامپایلکننده، فرایندی که تلاش میکند سورس کد را در بعضی زبانهای سطح بالا برای برنامهای که فقط در حالت بایت کد یا کدهای ماشین است فراهم کند.
تکنیکهای حذف لایسنس نرمافزار شامل : سریال فیشینگ، پچ یا وصله زدن، keygen یا تولیدکننده کلید، unpacking (برداشتن لایه امنیتی نرمافزار که توسط پروتکتور یا محافظ محافظت شده)
تیمهای مهندسی معکوس ایرانی
تیمهای ایرانی مهندس معکوسی محدودی وجود داشت این تیمها یا بهطور کلی از بین رفتن یا فعالیت آنها خیلی کم هست این تیمها عبارت است از:
UnReAL RCE بازنشسته شده در سال 2013
Under SEH Team (UST) بازنشسته شده در سال 2012
ray-team بازنشسته شده در سال 2013
Anti Security Agency فعالیت بسیار کم
طراحی اتاق پاک
طراحی اتاق پاک (همچنین به عنوان روش دیوار چینی شناخته میشود) روش کپی کردن یک طراحی به کمک مهندسی معکوس و سپس بازآفرینی آن بدون نقض کپی رایت و اسرار تجاری در ارتباط با طرح اصلی است. طراحی اتاق پاک به عنوان دفاع در برابر نقض قوانین کپی رایت و اسرار تجاری مفید است به این دلیل که به اختراع مستقل متکی است.
بهطور معمول، طراحی اتاق پاک با داشتن شخصی که سیستم را برای طراحی دوباره بررسی میکند، انجام میگیرد و آن شخص مشخصات و خصوصیات سیستم مد نظر را مینویسد. این خصوصیات سپس به کمک یک وکیل بررسی میشود تا اطمینان حاصل شود که هیچ مورد کپی رایت را شامل نمیشود. این خصوصیات سپس توسط یک تیم بدون هیچ ارتباطی با تحلیلگر اصلی اجرا میشود.
یک مثال معروف این است که محصولات داده کلمبیا برای اولین بار یک کپی از کامپیوترهای IBM را از طریق اجرای اتاق پاک BIOS آن ساخت.ReactOS یک سیستم عامل منبع باز است که از اتاق پاک مهندسی معکوس اجزای ویندوز ساخته شدهاست.