مهندسی معکوس در نرم افزار ( Reverse Engineering soft ware):
بحث در مورد علم مهندسی معکوس از سال 1990 میلادی آغاز شده و در بعضی مجله های علمی مثل IEEE Software به صورت یک طبقه بندی علمی از آن صحبت میشود.
مهندسی معکوس عبارت است از توانایی گرفتن اطلاعات از کد منبع و ایجاد یا ارتقاء مدل Rose .
یکی از موانع موجود بر سر راه پروژه های فناوری اطلاعات سازگار نگاه داشتن مدل آبجکت با کد است . با تغییر نیازها ، تغییر مسقیم کد می تواند وسوسه انگیز باشد ، تا اینکه مدل را تغییر دهید و سپس کد تغییر یافته را از مدل تولید کنید . مهندسی معکوس به ما این امکان را می دهد تا همیشه مدل را با کد همسان نگاه داریم .
در فرایند مهندسی معکوس ، Rose نسبت به خواندن بسته ، Component ها ، کلاسها رابطه ها ، صفات و عملیات از کد اقدام خواهد کرد . هنگامی که این مدل در یک مدل Rose قرار می گیرد ، می توانید هر تغییر لازمی را ایجاد کرده سپس کد را از طریق امکانات مهندسی مستقیم Rose مجدداً تولید کنید .
گزینه هایی که در اختیار شما قرار خواهند گرفت به نسخه مورد استفاده شما بستگی خواهد داشت .
• Rose Modeler : شامل هیچ گونه عملیات مهندسی معکوس نخواهد بود .
• Rose Professional : شامل قابلیت های مهندسی معکوس به یک زبان است .
• Rose Enterprise : شامل مهندسی معکوس C++ ، Visual C++ ، Visual Basic و جاوا خواهد بود .همانطور مهندسی معکوس شمای Oracle 8 را نیز شامل خواهد بود .
• Add_ins : متعلق به Rose قابلیتهای مهندسی معکوس در زبانهای دیگر نظیر PowerBuilder یا Forte را به شما خواهند داد .
عناصر مدل ایجاد شده در طول مهندسی معکوس :
در طول مهندسی معکوس ، Rose به جمع آوری اطلاعاتی درباره موارد زیر خواهد پرداخت .
• کلاسها
• صفات
• روابط
• عملیات
• بسته ها
• component ها
با استفاده از این اطلاعات ، Rose اقدام به ایجاد یا ارتقاء یک مدل Object خواهد کرد .
مجموعه ای حساس از تکنیکها و ابزارها برای فهمیدن اینکه محتوای یک نرم افزار شامل چه چیزهایی میباشد. به عبارت دیگر عمل تجزیه و تحلیل یک سیستم برای مشخص کردن مولفه های سیستم و رابطه متقابل آنها به منظور نمایش سیستم به شکلی دیگر یا در سطحی بالاتر میباشد. این نوع تکنیکها باعث میشود تا ساختار یک نرم افزار را نمایان نموده و راههای عملکرد آن و همچنین ویژگیهایی که طبق آن حرکت میکند را مشخص کنیم. در واقع مهندسی معکوس زمانیکه شخصی کد شخص دیگری را کاوش کند نیز اتفاق می افتد.
آیا شما مهندسی معکوس را نادیده میگیرید؟
فرض کنید شما نرم افزاری را توسعه داده و به فروش رسانده اید! آیا نمیخواهید دیگران به حقوق کپی (Copyright) شما احترام بگذارند؟ این بحث معمولا" از معانی منفی عبارت مهندسی معکوس به خصوص در صنعت نرم افزار سازی شروع میشود.
به هر حال تکنیکهای مهندسی معکوس راه هایی هستند برای تولید کننده ها و مصرف کننده های نرم افزار که با مقوله عرضه اقتصادی در یک زنجیره قرار میگیرند. در نظر داشته باشید که این ابزار (راهکار) به طور ذاتی خوب یا بد نیست، موضوع قابل توجه این است که این ابزار در چه راه هایی مورد استفاده قرار میگیرد. مهندسی معکوس به ویژه در نرم افزارهای پیشرفته برای اهداف خاص مورد استفاده قرار میگیرد :
- یافتن کدهای مخرب: تعدادی از تکنیکهای ویروس یابی از مهندسی معکوس برای دستیابی به ساختار و عملکرد این کدهای مخرب استفاده میکنند. به وسیله این تکنیکها نرم افزارهایی تولید میشود که برای مبارزه با ویروس های کامپیوتری مورد استفاده قرار میگیرد.
- کشف خطاهای ذاتی (Bug) و نقص های غیر منتظره: حتی بهترین سیستمهای نرم افزاری میتواند دارای خطا باشد که با استفاده از مهندسی معکوس میتوان آنها را پیدا کرده و رفع نمود (Debug).
نرم افزارهای سطح پایین
این نوع نرم افزارها شامل ابزارهای توسعه از قبیل Compiler، Linker، Debugger، سیستم های عامل (Operating System) و زبان های برنامه نویسی سطح پایین مثل Assembly میباشد. در واقع لایه ای است که جداکننده توسعه دهندگان نرم افزار و برنامه های کاربردی از سخت افزار میباشد. اگر شخصی بخواهد در زمینه مهندسی معکوس مهارت به دست آورد باید فهم کاملی نسبت به نرم افزارهای سطح پایین داشته باشد.
زبان Assembly
این زبان پایین ترین سطح زبان های برنامه نویسی میباشد که به طور باورنکردنی در مهندسی معکوس مورد استفاده قرار میگیرد. اگر یک نرم افزار عملی را انجام دهد آن عمل باید به زبان Assembly قابل رویت باشد. مبحث مهم دیگر، کد ماشین است که همراه با زبان Assembly دو نوع تعریف مختلف از یک چیز میباشد. کد ماشین چیزی نیست جز رشته ای از بیتها و شامل لیستی از دستورات (در واقع نمایش متنی آن بیتها)، که توسط CPU باید اجرا شود.
Compiler و Machine Code
با توجه به اینکه CPU فقط قادر است کدهای ماشین را اجرا کند با استفاده از Compiler کدهای زبانهای سطح بالا به زبان ماشین تبدیل میشوند.
زبانهایی مثل C++ و Pascal دارای این نوع Compiler هستند.
Virtual Machine و Byte Code
زبانهایی مانند Java دارای کامپایلری هستند که به جای Object Code (کدهایی که Compiler آنها را تولید میکند)، Byte Code تولید میکنند. Byte Code ها شبیه به Object Code ها هستند با این تفاوت که توسط یک برنامه (به جای CPU) Decode میشوند. به این برنامه Virtual Machine گفته میشود. یکی از مزایای این نوع برنامه ها مستقل بودن آنها از محیط اجرا میباشد. مبحث مهندسی معکوس در مورد Byte Code ها نسبت به کدهای ماشین کاملاً متفاوت بوده و در مقایسه با آن ساده تر میباشد.
شروع عملیات مهندسی معکوس
برای شروع، کار به دو بخش کلی تقسیم میگردد:
1- System Level: داشتن دیدی کلی از تمام برنامه.
2- Code Level: به دست آوردن اطلاعات کامل و جزیی روی قسمتی از کد برنامه.
فهرست مطالب:
مهندسی معکوس در نرم افزار(reverse engineering soft ware ) ............................. 1
عناصر مدل ایجاد شده در طول مهندسی معکوس .................................................. 1
آیا شما مهندسی معکوس را نادیده می گیرید؟ ...................................................... 1
نرم افزار های سطح پایین .....................................................................................
زبان assembly ....................................................................................................
Machine code,compiler ......................................................................................
Byte code,virtual machine ......................................................................
شروع عملیات مهندسی معکوس ................................................................. 3
ابزار های system monitoring .........................................................................
ابزار های code level
_Disassembler ..........................................................................................
_ debugger ...........................................................................................
ویژگی های مهم debugger ها
_ disassembler قدرتمند ............................................................ 3
_ breakpoint های سخت افزاری و نرم افزاری ........................................................... 4
_ دیدن register ها و حافظه .......................................................................................
_ اطلاعات process ...............................................................................
انواع debugger
_ user mode debugger ...............................................
مهندسی معکوس چیست؟ ......................................................................................... 5
تعریف دیگر از مهندسی معکوس .................................................................................. 6
کایزن .............................................................................. 6
مهندسی نوآوری ....................................................................................................... 7
چرا مهندسی مجدد یک منشور انقلابی است؟ ............................................................. 9
علل عدم موفقیت مهندسی مجدد .............................................................................. 9
ضرورت مهندسی مجدد ............................................................................................. 10
تهیه ساختار سیستمهای پیچیده نرم افزاری با استفاده از مهندسی مهکوس ................. 13
مهندسی معکوس ..................................................................................................... 13
بدست آوردن قوانین موجوددر کد برنامه ...................................................................... 14
مدل هیبرید ........................................................................... 15
ابزلرهای مهندسی معکوس ......................................................... 16
ایجاد کنند قوانین سی و سازنده پایگاه قوانین ............................................................ 16
Grok ............................................................................
Isadjust,islayout ................................................................................
شامل 44 صفحه word
دانلود تحقیق مهندسی معکوس