یکی از مهم‌ترین علومی که در برنامه‌نویسی و مهندسی نرم‌افزار از آن استفاده می‏ شود و برای برنامه‌نویسان حرفه‌ای کاربرد فراوان دارد علم مهندسی معکوس است. در واقع برنامه‏نویسان توسط این علم می ‏توانند اشکال‌های (باگ‌های) موجود در برنامه خود را پیدا کرده و به رفع آن ها بپردازند. علم کرکینگ[۱۲] نیز شاخه‏ای از علم مهندسی معکوس است. از این رو برای درک معنا و مفهوم علم کرکینگ باید با مهندسی معکوس آشنا بود اما برای درک مهندسی معکوس هم باید یک پله عقب‏تر رفت و آن تسلط بر برنامه‏نویسی و مهندسی نرم‏افزار است.

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

۱)استفاده از دی‏اسمبلر[۱۳]

یکی از روش‏های رایج جهت مهندسی معکوس نرم‏افزار، دی‏اسمبلی است که در آن از یک دی‏اسمبلر استفاده می‏ شود. دی‏اسمبلرها برای اولین بار توسط رخنه‏کننده‏های نرم‏افزار[۱۴] نوشته شدند و هدف اصلی آن ها تبدیل ساختار کد ماشین به زبان سطح بالاتر (کد اسمبلی) و ترجمه‏ی آن است. دی‏اسمبلی به معنی خواندن کدهای خام زبان ماشین و درک این اطلاعات با اصطلاحات خاص دی‏اسمبلر است. این عمل بر روی تمام برنامه های کامپیوتری قابل اعمال است اما درک کدهای اسمبلی معمولا زمان‏بر و دشوار است، مخصوصا برای کسانی که با زبان ماشین آشنا نیستند.

۲)استفاده از دی‏کامپایلر[۱۵]

در واقع دی‏کامپایلرها برنامه‏ هایی هستند که عمل معکوس کامپایلرها را انجام می ‏دهند و کد ماشین یا کد اسمبلی میانی را به کد سطح بالا یا زبان قابل فهم انسان تبدیل می‏ نمایند. تعداد مراحل دی‏کامپایل کردن بیشتر از دی‏اسمبلی و نتیجه‏ آن برای انسان قابل فهم‏تر است. طی مراحل دی‏کامپایل، ابتدا کد ماشین (کد سطح پایین) به کد بایت تبدیل و ترجمه می‏ شود. کدبایت، کد استانداردی است که قابل حمل و اجرای بر روی همه‏ سخت‏افزارهای کامپیوتری بوده، نسبت به کد ماشین دارای سطح بالاتر و نسبت به کد مبدأ دارای سطح پایین‏تری است. کدبایت‏ها نظیر کدهای مبدأ، به زبان‏های مختلفی نوشته می ‏شوند اما برای قابل خواندن و درک شدن توسط انسان باید به کد مبداء زبان مربوطه تبدیل شوند. ‌بنابرین‏ دی‏کامپیایل کردن مستلزم طی دو مرحله‏ فوق و آشنایی با زبان‏های برنامه‏نویسی است.

مهندسی معکوس ممکن است صرفا به جهت کنجکاوی صورت گیرد چنان که در محیط‏های آکادمیک چنین است. اما در مواردی که مهندسی معکوس با هدف کسب منفعت انجام می‏ شود، ارزیابی هزینه‏ ها و منافع نقطه‏ی آغاز اقدامات تحلیلگر مهندسی معکوس خواهد بود. ‌بنابرین‏ علاوه بر اینکه محصول موجود را جهت کشف طراحی آن به دقت مورد مطالعه قرار می‏ دهد، باید عوامل غیرمستقیمی را که بر طراحی و تولید محصول با بهره گرفتن از نتایج و داده های مهندسی معکوس، تاثیر می‏ گذارند، به دقت بررسی نماید. خصوصیات و مقتضیات زمانی و مکانی ساخت محصول مورد نظر از جمله این عوامل است.[۱۶] چه بسا محصولی با جنس خاص در کشور الف موفق اما استفاده از آن جنس در کشور ب منجر به شکست در تولید شود. همچنین برخی معتقدند که اگر تعداد محصولات موردنیاز و تولیدشده در کشور دوم بسیار کمتر از کشور اصلی که در حد جهانی و بین‌المللی فعالیت نموده، باشد، به معنی صرف هزینه‏هایی گزاف و بیهوده بوده که بر مجریان مهندسی معکوس و جامعه کشور دوم تحمیل شده است.

تقسیم‏بندی زیر، از منظر اهداف مختلف مهندسی معکوس ارائه شده است:

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

«مهندسی معکوس مقلد» که استفاده از مهندسی معکوس با هدف ساختن مشابه محصول است. در اینجا است که مرز مهندسی معکوس و شبیه‏سازی باریک می‏ شود.

«مهندسی معکوس به‏منظور یافتن موارد نقض حق»[۱۷] که روشی مناسب برای تامین دلیل و از مصادیق کاربرد قضایی مهندسی معکوس است.[۱۸]

علاوه بر اهداف فوق که در هر دو عرصه‏ی صنایع تولیدی سنتی ونرم افزارها کاربرد دارند، استفاده از روش مهندسی معکوس با اهداف دیگری نظیر «دستیابی به برهم‏عمل‏پذیری (سازگاری)» و «رفع اشکال‏ها (باگ‏ها)» روز به روز بیشتر می‏ شود.

شایسته‏ی ذکر است که در برخی تعاریف ارائه شده از مهندسی معکوس در منابع مورد مطالعه‏ی نگارنده، اهداف تحلیلگر مهندسی معکوس نیز به عنوان مرحله‏ای از مراحل آن در نظر گرفته شده‏ است.[۱۹] اهداف مهندسی معکوس، حسب مورد می‏تواند ارزیابی‏های تحلیلگر را طولانی و دشوارتر یا کوتاه و آسان‏تر نماید. برخی اهداف نیز هزینه‏ های مهندسی معکوس را افزایش می ‏دهند. به عقیده‏ی نگارنده اگرچه هدف معکوس بر فرایند مهندسی معکوس، زمان و هزینه‏ای که برای آن صرف می‏ شود و همچنین مشروعیت آن، بی‏تاثیر نیست، این فرایند با تحصیل داده ها و دانش فنی موردنیاز تحلیلگر خاتمه می‏یابد. کثرت اهدافی که برای مهندسی معکوس می‏توان برشمرد موید این است که «فرایند مهندسی معکوس» چیزی متفاوت از «نحوه‏ استفاده از اطلاعات و دانش تحصیل شده» از این فرایند است.

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

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

موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...