مهندسی معکوس در نرم افزار
فایل ورد قابل ویرایش
7000تومان
چکیده:
امروزه موسسات بزرگ نه تنها با مشکل جایگزینی سیستمهای اطلاعاتی قبلی با سیستمهای مشابه جدید مواجه میباشند ، بلکه آنها مجبور به ذخیره و نگهداری برنامهها و دادههای قدیمی خود هستند . مهندسی معکوس در راستای بدست آوردن نمایش سطح انتزاعی از برنامهها به کسب دانش از دست رفته و ایجاد مجدد سیستم پیچیده میپردازد که انتقال سیستم قدیمی به سیستم جدید و نگهداری ساختار آن از جمله کارهای مهندسی معکوس است . مهندسی مجدد پس از تشخیص مشکلات نرم افزار قدیمی سبب بهبود کیفی آن و سازگارمندی بیشتر با چهارچوبها میگردد . روشها و فن آوری های مهندسی معکوس نقش مهمی را در بسیاری از وظایف مهندسی نرم افزار و به تصویر کشیدن ساختار بیرونی نرم افزار توسط ایجاد مدلهای ایستا و پویا در سطح کلی بازی میکنند .مهندسی معکوس فرآیند اکتشاف فن آوریهای به کار رفته در یک دستگاه، شی و یا سیستم از طریق تحلیل ساختار، عملکرد و وظیفه آن میباشد. معمولا از این فرآیند برای دست یابی به یک دستگاه مکانیکی، قطعه الکترونیکی و یا برنامه نرمافزاری و تحلیل جزییات نحوه عملکرد آن در نگهداری یا ساخت یک دستگاه یا برنامه مشابه استفاده میشود. حاصل این فرآیند مشابه کپی کردن یک چیز از روی اصل آن میباشد
درک سیستم نرمافزاری بر هر نوع تغییر مقدم است. فرآیند درک مقدار زیادی از کل زمان صرف شده را در اعمال تغییر میگیرد. نگهدارندگان دلایلی از جمله مستندات ناصحیح یا قدیمی، نبود مستندات، پیچیدگی سیستم و عدم شناخت کافی از قلمرو را علت فقدان درک صحیح از سیستم میدانند. راه تسهیل این مسایل، خلاصه کردن اطلاعات مربوط به سیستم (مثل تبین مشخصات و طرح) از طریق کد منبع است بهشکلی که درک آنرا بالا برد.مهندسی معکوس تکنیکی است که میتوان از آن برای این کار استفاده کرد . مهندسی معکوس به تنهایی منجر به تغییر در برنامه نمیشود، بلکه فقط راه را برای اجرای آسانتر تغییرات مطلوب هموار مینماید. تغییرات با استفاده از فنونی چون مهندسی پیشرو، بازسازی و مهندسی مجدد پیادهسازی میشوند.
هدف از مهندسی معکوس تسهیل در اعمال تغییر از طریق فهمیدن سیستم نرمافزاری با توجه به ماهیت کار، چگونگی کار و نمایش معماری آن است. بهعنوان اهداف پیگیری این مقصود میتوان به ترمیم اطلاعات از دست رفته، تسهیل جابهجایی بین بسترها، بهبود و یا تهیه مستندات جدید، استخراج عناصر قابل استفاده مجدد، کاهش تلاش برای نگهداری، مقابله با پیچیدگی، کشف عوارض جانبی، کمک به انتقال به محیط CASE و ایجاد محصولات مشابه یا رقابتی اشاره کرد. از دیگر مزایای مهندسی معکوس کاهش هزینهها و سریع آماده شدن نرم افزار است.
با توجه به اهمیت این موضوع در این پایان نامه به توضیح این موضوع و راهکارهای انجام مهندسی معکوس و روشهای تامین امنیت در نرم افزار پرداخته است. در ادامه در فصل اول به معرفی مهندسی معکوس و تاریخچه آن میپردازد. فصل دوم به معرفی توابع API میپردازد. در فصل سوم به فرآیند مهندسی معکوس در مهندسی نرم افزار پرداخته شده است. فصل چهارم امنیت در نرم افزار به وسیله مهندسی معکوس را توضیح داده و نهایتا در فصل آخر روشهای حفاظت از نرم افزار را بیان میکند.
فهرست مطالب
فصل اول: مهندسی معکوس چیست؟ 1-1مقدمه........................................................................................................................................................1
1-2 تاریخچه کاربردی مهندسی معکوس....................................................................................................3
1-3 مزایا و دستاوردهای مهندسی معکوس................................................................................................7
فصل دوم :API و انواع دیاگرامهای شی گرایی
2-1 APIچیست؟.........................................................................................................................................9
2-2 اجزای یک تابع .................................................................................................................................10
2-3 گراف جریان کنترلی...........................................................................................................................11
2-4 هدف مهندسی معکوس در شی گرا...................................................................................................13
2-5 دیاگرامهای UML............................................................................................................................14
2-6 الگوریتم انتشار جریان....................................................................................................................26
2-7 حساسیت به شی...............................................................................................................................27
فصل سوم:مهندسی معکوس در نرم افزار و دنیای کرک
3-1 معرفی ..............................................................................................................................................28
3-2 مهندسی نرم افزار، برنامه نویسی وطراحی....................................................................................29
3-3 مهندسی معکوس چیست؟..............................................................................................................29
3-4 دلائل استفاده از مهندسی معکوس در نرم افزار.............................................................................30
3-5 آشنایی با چند اصطلاح....................................................................................................................31
3-6 زبانها در مهندسی معکوس...........................................................................................................31
3-7 ابزارهای مورد استفاده در مهندسی معکوس.................................................................................32
3-8 طرز کار یک اشکال زدا ................................................................................................................38
3-9 رابطه مهندسی معکوس واسمبلی..................................................................................................41
3-10 سیستم عددی هگزادسیمال........................................................................................................44
3-11 مهندسی معکوس و امنیت در دنیای نرم افزار............................................................................47
3-12 یافتن کدهای مخرب....................................................................................................................47
3-13 کشف رمزها و کدها.....................................................................................................................48
3-14 مبارزه با ویروسها .....................................................................................................................48
3-15 تغییر در ظاهر نرم افزار ..............................................................................................................49
3-16طراحی مجدد................................................................................................................................50
3-17 مستند سازی ..............................................................................................................................50
3-18 برنامههای امروزی و حفاظت از آنها .........................................................................................50
3-19 حفاظت و کراکینگ ....................................................................................................................51
3-20 انواع حفاظت ..............................................................................................................................52
3-21 انواع دیباگر...............................................................................................................................56
نتیجه گیری ........................................................................................................................................59
منابع ....................................................................................................................................................61
فهرست جداول
- جدول 3-1 ثباتها.................................................................................................................38
- جدول 3-2 ثباتهای ویژه....................................................................................................39
- جدول 3- 3 سیستم عددی هگزا دسیمال.........................................................................45
فهرست شکلها و تصاویر
- شکل 2-2 تحلیل جریان داده................................................................................................12
- شکل 2-3 شاخههای شرطی.................................................................................................15
- شکل 2-4 دیاگرام شی..........................................................................................................16
- شکل 2-5 دیاگرام پویایشی.................................................................................................17
- شکل 2-6 دیاگرام تعامل......................................................................................................18
- شکل 2-7 دیاگرام تعامل......................................................................................................19
- شکل 3-1 محیط نرم افزار Zeta Debugger...................................................................39
8. شکل 3-2 تبدیل برنامه به کد ماشین.................................................................................40 9. شکل 3- 3 تبدیل عدد هگزادسیمال به باینری.................................................................46
مهندسی معکوس در نرم افزار