فایل های دانشگاهی- قسمت 3 – پایان نامه های کارشناسی ارشد |
یکی از مهمترین علومی که در برنامهنویسی و مهندسی نرمافزار از آن استفاده می شود و برای برنامهنویسان حرفهای کاربرد فراوان دارد علم مهندسی معکوس است. در واقع برنامهنویسان توسط این علم می توانند اشکالهای (باگهای) موجود در برنامه خود را پیدا کرده و به رفع آن ها بپردازند. علم کرکینگ[۱۲] نیز شاخهای از علم مهندسی معکوس است. از این رو برای درک معنا و مفهوم علم کرکینگ باید با مهندسی معکوس آشنا بود اما برای درک مهندسی معکوس هم باید یک پله عقبتر رفت و آن تسلط بر برنامهنویسی و مهندسی نرمافزار است.
دو روش عمدهی مهندسی معکوس نرمافزارها عبارتند از:
۱)استفاده از دیاسمبلر[۱۳]
یکی از روشهای رایج جهت مهندسی معکوس نرمافزار، دیاسمبلی است که در آن از یک دیاسمبلر استفاده می شود. دیاسمبلرها برای اولین بار توسط رخنهکنندههای نرمافزار[۱۴] نوشته شدند و هدف اصلی آن ها تبدیل ساختار کد ماشین به زبان سطح بالاتر (کد اسمبلی) و ترجمهی آن است. دیاسمبلی به معنی خواندن کدهای خام زبان ماشین و درک این اطلاعات با اصطلاحات خاص دیاسمبلر است. این عمل بر روی تمام برنامه های کامپیوتری قابل اعمال است اما درک کدهای اسمبلی معمولا زمانبر و دشوار است، مخصوصا برای کسانی که با زبان ماشین آشنا نیستند.
۲)استفاده از دیکامپایلر[۱۵]
در واقع دیکامپایلرها برنامه هایی هستند که عمل معکوس کامپایلرها را انجام می دهند و کد ماشین یا کد اسمبلی میانی را به کد سطح بالا یا زبان قابل فهم انسان تبدیل می نمایند. تعداد مراحل دیکامپایل کردن بیشتر از دیاسمبلی و نتیجه آن برای انسان قابل فهمتر است. طی مراحل دیکامپایل، ابتدا کد ماشین (کد سطح پایین) به کد بایت تبدیل و ترجمه می شود. کدبایت، کد استانداردی است که قابل حمل و اجرای بر روی همه سختافزارهای کامپیوتری بوده، نسبت به کد ماشین دارای سطح بالاتر و نسبت به کد مبدأ دارای سطح پایینتری است. کدبایتها نظیر کدهای مبدأ، به زبانهای مختلفی نوشته می شوند اما برای قابل خواندن و درک شدن توسط انسان باید به کد مبداء زبان مربوطه تبدیل شوند. بنابرین دیکامپیایل کردن مستلزم طی دو مرحله فوق و آشنایی با زبانهای برنامهنویسی است.
مهندسی معکوس ممکن است صرفا به جهت کنجکاوی صورت گیرد چنان که در محیطهای آکادمیک چنین است. اما در مواردی که مهندسی معکوس با هدف کسب منفعت انجام می شود، ارزیابی هزینه ها و منافع نقطهی آغاز اقدامات تحلیلگر مهندسی معکوس خواهد بود. بنابرین علاوه بر اینکه محصول موجود را جهت کشف طراحی آن به دقت مورد مطالعه قرار می دهد، باید عوامل غیرمستقیمی را که بر طراحی و تولید محصول با بهره گرفتن از نتایج و داده های مهندسی معکوس، تاثیر می گذارند، به دقت بررسی نماید. خصوصیات و مقتضیات زمانی و مکانی ساخت محصول مورد نظر از جمله این عوامل است.[۱۶] چه بسا محصولی با جنس خاص در کشور الف موفق اما استفاده از آن جنس در کشور ب منجر به شکست در تولید شود. همچنین برخی معتقدند که اگر تعداد محصولات موردنیاز و تولیدشده در کشور دوم بسیار کمتر از کشور اصلی که در حد جهانی و بینالمللی فعالیت نموده، باشد، به معنی صرف هزینههایی گزاف و بیهوده بوده که بر مجریان مهندسی معکوس و جامعه کشور دوم تحمیل شده است.
تقسیمبندی زیر، از منظر اهداف مختلف مهندسی معکوس ارائه شده است:
«مهندسی معکوس نوآورانه یا خلاقانه» که با هدف افزایش دانش و اطلاعات به منظور تولید محصول جدید، نوآورانه یا ارتقای یک محصول موجود است.
«مهندسی معکوس مقلد» که استفاده از مهندسی معکوس با هدف ساختن مشابه محصول است. در اینجا است که مرز مهندسی معکوس و شبیهسازی باریک می شود.
«مهندسی معکوس بهمنظور یافتن موارد نقض حق»[۱۷] که روشی مناسب برای تامین دلیل و از مصادیق کاربرد قضایی مهندسی معکوس است.[۱۸]
علاوه بر اهداف فوق که در هر دو عرصهی صنایع تولیدی سنتی ونرم افزارها کاربرد دارند، استفاده از روش مهندسی معکوس با اهداف دیگری نظیر «دستیابی به برهمعملپذیری (سازگاری)» و «رفع اشکالها (باگها)» روز به روز بیشتر می شود.
شایستهی ذکر است که در برخی تعاریف ارائه شده از مهندسی معکوس در منابع مورد مطالعهی نگارنده، اهداف تحلیلگر مهندسی معکوس نیز به عنوان مرحلهای از مراحل آن در نظر گرفته شده است.[۱۹] اهداف مهندسی معکوس، حسب مورد میتواند ارزیابیهای تحلیلگر را طولانی و دشوارتر یا کوتاه و آسانتر نماید. برخی اهداف نیز هزینه های مهندسی معکوس را افزایش می دهند. به عقیدهی نگارنده اگرچه هدف معکوس بر فرایند مهندسی معکوس، زمان و هزینهای که برای آن صرف می شود و همچنین مشروعیت آن، بیتاثیر نیست، این فرایند با تحصیل داده ها و دانش فنی موردنیاز تحلیلگر خاتمه مییابد. کثرت اهدافی که برای مهندسی معکوس میتوان برشمرد موید این است که «فرایند مهندسی معکوس» چیزی متفاوت از «نحوه استفاده از اطلاعات و دانش تحصیل شده» از این فرایند است.
همان طور که پیش از این نیز اشاره شد، فرایند مهندسی معکوس ممکن است حسب نوع صنعت متفاوت باشد چنان که در مورد مهندسی معکوس نرمافزارها این فرایند کاملا متاثر از ماهیت انتزاعی محصولات این عرصه است. در اینجا بهمنظور آشنایی خواننده با دشواری مهندسی معکوس، فرایند آن را بهطورکلی و به نحوی که قابلیت اعمال در بیشتر عرصههای صنعت را داشته باشد شرح میدهیم.
مرحله اول مهندسی معکوس هر محصول یا فرایندی، تجزیه و تحلیلی اقتصادی را میطلبد. به این منظور تحلیلگر مهندسی معکوس اقدام به هدفگذاری، جمع آوری اطلاعات و سپس ارزیابی اطلاعات و برنامه ریزی می کند. انجام این اقدامات پیش از شروع مراحل زمانبر و پرهزینهی عملیات فنی بسیار ضروری است. در انجام فعالیتهای صنعتی یکی از مهمترین عوامل پیشرفت کار، مشخص نمودن اهداف انجام یک فعالیت صنعتی است. جمع آوری اطلاعات که به نظر نخستین گام مهندسی معکوس است، خود مستلزم آگاهی کامل از جنبه های مختلف هدف تعیین شده است.
فرم در حال بارگذاری ...
[جمعه 1401-09-25] [ 05:28:00 ب.ظ ]
|