مهندسی معکوس
در نمایش آنلاین پاورپوینت، ممکن است بعضی علائم، اعداد و حتی فونتها به خوبی نمایش داده نشود. این مشکل در فایل اصلی پاورپوینت وجود ندارد.
- جزئیات
- امتیاز و نظرات
- متن پاورپوینت
برچسبهای مرتبط
- container
- اسمبلرها
- اشکالزدا
- الگوریتم
- الگوریتم انتشار جریان
- امنیت
- باینری
- پاورپوينت مهندسی معکوس
- پاورپوینت
- پاورپوینت رایگان
- تحلیل
- جاوا
- خلاصه سازی
- داگرام پویای شی
- دانلود پاورپوینت
- دانلود پاورپوینت رایگان
- دیاگرام شی
- دیاگرام کلاس
- دیاگرام های UML
- دیاگرام های تعامل
- دیس اسمبلر
- دیکامپایلر
- رفتاری
- زبان #C
- ساختار حلقه
- ساختار حلقه ها
- ساختاری
- سیستم
- شی گرا
- شی گرایی
- قوانین خلاصه سازی
- کد
- کنترل سیستم
- گراف جریان
- گراف جریان کنترلی
- مدل های رفتاری
- مدل های ساختاری
- مستندسازی
- معکوس
- مهندسی معکوس
- مهندسی معکوس باینری
- مهندسی معکوس معمولی
مهندسی معکوس
اسلاید 1: مهندسی معکوس1 تعریف مهندسی معکوس مهندسی معکوس روشی برای استخراج مفاهیم از متن برنامه ها است. هدف از مهندسی معکوس ایجاد امکان درک مفهوم برنامه ها از طریق تحلیل متن برنامه ها و استخراج مدل های رفتاری و ساختاری کاربرد 1. مستند سازي مجدد : ضعيفترين شکل مهندسي معکوس 2. اکتشاف مجدد طراحي: اين فرايند مستندات را مجدداً ايجاد مي نمايد و از دانش دامنه اي و ساير اطلاعات خارجي که امکان ايجاد مدل سيستم را در سطح بالاتري از انتزاع فراهم کند، بهره مي برد. 3. ساختار دهي مجدد : تبديل جنبي سيستم با همان سطح انتزاع و نيز سطح يکساني از معنا و کارکرد را ايجاد مي کند. 4. مهندسي مجدد : مهندسي معکوس + مهندسي رو به جلو
اسلاید 2: مهندسی معکوس2منبع - مهندسی معکوس باینری : استخراج مفاهیم از کد باینری - مهندسی معکوس معمولی : استخراج مفاهیم از متن برنامهلایه ها1- سطح سیستم : استخراج ساختار کلی از متن برنامه 2- سطح کد : بررسی قطعه ای از کدابزار: 1- ابزار کنترل سیستمها 3- اشکالزداها 2- دیس اسمبلرها 4- دیکامپایلرها
اسلاید 3: مهندسی معکوس3زبانها 1. زبان c : برنامه های c را می توان ساده تر از بقیه زبانها از باینری به متن c بر گرداند.2. زبان c++ : مشکل بدست آوردن ساختار سلسله مراتبی و تعیین اجزا کلاسها است 3. جاوا : - ماشین مجازی - استقلال از سیستم عامل - ساختارهای متفاوت برای پیاده سازی کلاسها، نشانگرها و غیره4. c# : - msil - CLR ابزار1- ابزار کنترل سیستمها2- دیس اسمبلرها3- اشکالزداها4- دیکامپایلرها
اسلاید 4: مهندسی معکوس4روش ها - روشهای متفاوتی برای مهندسی معکوس با در نظر گرفتن هدف، نوع سکوی کاری برای ایجاد و اجرای برنامه و اطلاعات مورد نیاز، استفاده می شوند. در حالت کلی دو نوع تحلیل پویا و ایستا مطرح می باشند..ابزار: 1- دیس اسمبلرها 2- اشکالزداها 3- دیکامپایلرها 4- ابزار کنترل سیستم 5- ابزار مدیریت سیستم1- دیس اسمبلرها- مشکلمشکل اصلی تشخیص کد اجرایی از دستورالعمل است. برای این منظور سعی به ردیابی مسیر اجرایی برنامه ها می شود تا در ضمن ردیابی مسیر کد اجرایی تبدیل به دستورالعملهای اسمبلی شود. بعضاپگ درج جداول در داخل کد مشکلساز است. برای نمونه جدول پرش ایجاد شونده برای دستورالعمل switch می تواند برای حالت عادی تبدیل خطی مشکلساز باشد.- خروجیمعمولا“ جهت درک بهتر کد فلوچارت یا دیاگرام فعالیت نیز برای کد اسمبلی حاصل ایجاد می شود. این فلوچارت کار درک کد را با دسته بندی دستورالعملها ساده تر می کند.در واقع این فلوچارت شاخص گراف جریان کنترلی در اجرای برنامه ها است.
اسلاید 5: مهندسی معکوس5
اسلاید 6: مهندسی معکوس6
اسلاید 7: مهندسی معکوس7ابزاری جهت یافتن خطا هستند که بعضا“ در صورت عدم دسترسی به کد اولیه کد اسمبلی را ایجاد می کنند.امکانات یک اشکالزدا : - دیس اسمبلر قدرتمند: امکان نمایش مقصد پرشها و مبدا و مقصد فراخوانیها - نقاط توقف (break points) سخت افزاری و نرم افزاری: وقفه سخت افزاری برای دسترسی حافظه - نمایش متغیرها وثباتها : می بایست امکان نمایش و تغییر مقدار ثباتها و حافظه را داشته باشد - نمایش فرایندهای اجرایی : لیستی از نخها و برنامه های در حال اجرااشکالزداها با امکان دیس اسمبلی ومشاهده وضعیت اجرایی کد اسمبلی ابزار مناسبی برای مهندسی معکوس هستنداشکالزداها ی User-mode و kernel modeOLLyDlg در وضعیت کاربر عمل می کند - با هدف مهندسی معکوس ایجاد شده. - دیس اسمبلر قوی دارد - تجزیه گر با قابلیت تشخیص حلقه ها و جمله switch ، بلاکها و سایر ساحتارهای برنامه - امکان پچ کردن و اسمبلی و اجرای کد پچ شده را دارد و مجاناً از آأرس ذیل قابل دسترسی استhttp://home.t-online.de/home/Ollydbg.2- اشکاالزداها
اسلاید 8: مهندسی معکوس8
اسلاید 9: مهندسی معکوس9PEBrowse ابزاری است برای اشکالزدایی کد میانی IL در محیط .NET آدرس دسترسی به این ابزارdownloadfree of charge at www.smidgeonsoft.comاشکالزدایی در وضعیت هسته - در کنار سیستم عامل قرار گرفته امکان وتوقف کردن و ادامه عملیات سیستم عامل را فراهم می کند. - آگاه از تغییر آدرس دسترسی به حافظه در بین فرایندها است - امکان تعیین نقطه توقف در وسطح کد مربوط به API ها و سیستم عامل WinDbg - دارای یک مد هسته ای برای اشکالزدایی است که به صورت راه دور نیز عمل می - از راه دور می توان یک سیستم را با قرار دادن سوییچ /DEBUG درون boot.ini ، فعال نمود. - با قرار دادن این سوییچ امکان اشکالزدایی از هسته نیز فراهم می شود. - آدرس www.microsoft.com/whdc/devtools/debugging/default.mspx. SoftICE - امکان اشکالزدایی هسته سیستم عامل به صورت محلی را بر خلاف winDbg دارد - توسط یک hotKey قابل فعال شدن است. پیش فرض برای کلید داغ CTRL D است. - با فشردن کلید داغ می توان متوجه شد که سیستم در حال انجام چه نوع عملیات بوده است - با فشردن کلید داغ سیستم عامل ویندوز متوقف و پنجره مربوط به این اشکالزدا بر روی صفحف منانیتور ظاهر می شود - پردازنده مرکزی را با یک امولاتور جایگزین می کند که کار آن اجرای نرم افزار است و می تواند پردازنده را متوقف و نمایش دهد
اسلاید 10: مهندسی معکوس10از آنحایی که اشکالزدایی در وضعیت هسته موجب توقف سیستم عامل می شود، وضعیت سیستم عامل را دجار مشکل می کند. لذا، پیشنهاد می شود که از راه دور این کار انجام شود. یا از ماشین مجازی استفاده شودماشین مجازی در واقع سخت افزار را بطور کامل شبیه سازی می کندسیستمی که بر روی ماشین مجازی قرار است اجرا شود، صفحات نمایش اش درون یک پنجره نمایش داده می شوند و محتوی دیسک سخت نیز در فایلی حداگانه ذخیره می شوند.3- دی کامپایلرهاابزار رویایی مهندسی معکوس هسند. دی کامپایلرها در محیط دات نت امکان برگشت کد بطور کامل را دارند4- ایزار کنترل سیستماین ابزار با استفاده از رابطهای سیستم عامل اطلاعاتی برای مانیتور کردن عملیات سیستم بدست می آورند.مثال : عملیات بر روی فایلها ، www.sysinternals. - fileMon برای کنترل ترافیک فایلهای مورد دسترسی در سطح فرایندها - TCPView برای نمایش ارتباطات TCP و UDP در سطح شبکه -
اسلاید 11: مهندسی معکوس11دی کامپایلرهادی کامپایلر، برنامه ای است که یک برنامه ی نوشته شده در زبان ماشین- زبان منبع- را خوانده و آن را به یک برنامه ی هم ارز در یک زبان سطح بالا – زبان مقصد- ترجمه می کند .دو کاربرد اصلی دی کامپایلر عبارتند از:1- نگهداری نرم افزار:بازیابی کد منبع مفقود یا غیرقابل دسترسیترجمه ی کد نوشته شده در یک زبان منسوخ به یک زبان جدیدترساختاردهی کد قدیمی نوشته شده به طریقی غیر ساخت یافته (یعنی کد اسپاگتی)به یک برنامه ساخت یافتهانتقال برنامه ها به یک بستر سخت افزاری جدیداشکال زدایی برنامه های باینری که مشخص شده باگهایی دارند اما کد منبع آنها در دسترس نیست2- امنیت نرم افزار:به عنوان ابزاری برای درستی یابی کد مقصد تولید شده توسط کامپایلر در سیستمهایی که ایمنی نرم افزار حیاتی است، استفاده می شود زیرا کامپایلر نمی تواند در این سیستم ها قابل اعتماد باشد 3- بررسی وجود کدهای بدخواهانه نظیر ویروس ها.
اسلاید 12: مهندسی معکوس12ساختار نحوی کد ماشین توسط گرامر زبان ماشین مشخص می شود. البته خطا در کد باینری به ندرت مشاهده می شود. مشکل اصلی تحلیلگر نحوی جدا سازی کد از داده است.بخش جلویی دیکامپایلر
اسلاید 13: مهندسی معکوس13مراحل دیکامپایلر1- تحلیل نحوی تحلیل نحوی با ایجاد ماشین خودکار قطعی برای کد اسمبلی انجام می شود. 83E950 sub cx, 50;آیا 83 کد یک عملگر است؟چه تعدادی عملوند دارد ؟ چند بایت عملوندها هستند ؟کدامیک ثبات و کدامیک داده است ؟ - مشکلات - تشخیص آدرس شروع و پایان - تفکیک کد از داده
اسلاید 14: مهندسی معکوس14مشکل 1- تشخیص نقطه شروع
اسلاید 15: مهندسی معکوس15 مشکل 2- تشخیص نقطه خاتمهمعمولا“ توسط یک وقفه مثل int 21h نقطه خاتمه برنامه جهت برگشت به سیستم عامل مشخص می شود. مشکل 3- تفکیک داده از کداولین دستورالعمل یا نقطه ورود مشخص می شوددستورالعملها بطور ترتیبی تا دستورالعمل پرش و یا فراخوانی.، مشخص می شوند چنانچه پرش شرطی باشد هر دو مسیر ممکن پیمایش می شوندفراخوانی ها کنترل را به تابع مورد نظر لنتقال و به دستورالعمل بعد از فراخوانی انتقال می دهد
اسلاید 16: مهندسی معکوس16گراف جریان کنترلیtypedef struct _BB { byte nodeType;//Type of nodeint numInEdges;//Number of in edges struct BB inEdges;//Array of pointers to predecessors int numOutEdges;//Number of outedges struct BB outEdges;//Array of pointers to successors //other fields go here }BB;typedef BB PBB;//Pointer to a basic block می توان با تعیین ساختارهای کنترلی به مرور گره های گراف حریان کنترلی را ساده نمود تا به یک گره رسید. برای نمونه به گراف شکل ذیل توجه نمایید. در این گراف فرض بر آن است که با تحلیل جریان داده ها اسامی متغیرها مشخص شده است.
اسلاید 17: مهندسی معکوس17
اسلاید 18: مهندسی معکوس181- تشخیص ساختار حلقه ها (127)حلقه ها بواسطه لبه های برگشتی مشخص می شوند. دو لبه برگشتی (B14,B13) و (B15,B6) نوع حلقه بر اساس header یا جملات ابتدای حلقه مشخص می شود. حلقه (B14,B13) شرطی را در ابتدا بررسی نمی کند اما آخرین جمله آن آزمون اجرای مجدد حلقه است. این می تواند یک در اصطلاح post-tested loop مثل do-while یا repeat-until باشد. حلقه به صورت مقابل مشخص می شود:
اسلاید 19: مهندسی معکوس19
اسلاید 20: مهندسی معکوس20مهندسی معکوس برنامه های شیی گرا- انگیزه دشوار بودن درک برنامه های شیی گرا بواسطه توزیع عملیات در بین کلاسها ایجاد مستندات پس از تصحیح کد تغییر کد موجود برای : 1- تصحیح 2- تکمیل 3- تطابق با محیط 4- تغییر ساختارا- تحلیل کد برنامه ها (ص 18)تحلیل پویا : برای تحلیل پویا نیاز به ردیاب، نتایج وابسته به اجرا، مشکل تعمیم نتایج در جهت تشخیص رفتار، برنامه باید قابل اجرا باشد تحلیل ایستا : در تحلیل ایستا نتایج همیشگی و غیر وابسته به اجرای خاص نمایش نتایج: نمایش حاصل تحلیل مستلزم زبانی مناسب است و نمایش صرفاً در قالب دیاگرامهای UML محدودیتی برای تحلیل است.قابلیت استفاده : حاصل تحلیل می بایست در سطحی از جزییات ارایه شود که قابل در ک برای خواننده باشد: - بطور متوسط وجود 10 عنصر حداکثر درون دیاگرام کافی است - نمایش نقشه کلی با امکان تاکید بر بخش خاص و بکارگیری تکنیکهای نمایش اطلاعات حجیم درک برنامه : برنامه نویس برای درک عملکرد برنامه نیاز به تحلیل خودکار آن دارد تحلیل میزان تاثیر : میزان تاثیر
اسلاید 21: مهندسی معکوس21دیاگرامهای UMLبرای در ک برنامه ها می توان از دیاگرامهای UML استفاده نمود. در ادامه انواع دیاگرامها توضیح داده شده است.1- دیاگرام کلاس – دیاگرام کلاس برای درک ساختار ایستای برنامه ها و چگونگی ارتباط بین کلاسها مورد استفاده قرار می گیرد ( ص 22).1- کلاس library رابطه بین کاربرها و مستندات را از طریق شیی امانت یا loan ایجاد می کند. library مهمترین کلاس با متدهای addUser، removeUser، addDocument و removeDocument2- کلاس User برای کاربرهای عادی و کلاس InternalUsers برای کاربرهای داخلی3- انواع مسندات Document در قالب book, Journal و TechnicalReport مشخص شده اند.4- Loan رابط بین User و مستندات Document است.5- با فراخوانی متد isAvailable از کلاس document کار گرفتن امانت با قراخوانی متد authorizedLoan شروع می شود.6- کاربرها را می توان بر اساس نامشان توسط متد searchUser جستجو کرد7- کتب را با متدهای searchDocumentByTitle و searchDocumentByISBN می توان جستجو نمود. - هدف استخراج دیاگرام کلاس از متن برنامه ها است.
اسلاید 22: مهندسی معکوس22
اسلاید 23: مهندسی معکوس23دیاگرام شیدیاگرام شیی تاکید بر اشیایی دارد که درون یک برنامه ایجاد می شوند. دو نوع دیاگرام شیی وجود دارد: 1- دیاگرام ایستا : رابطه بین اشیا در یک برنامه را مشخص می کند 2- دیاگرام پویا : رابطه بین اشیا در یک اجرا از برنامه را مشخص می کنددر شکل ذیل یک نمونه از دیاگرام ایستا ی شی مشخص شده است. در این شکل برای ایجاد هر شیی گره ای مجزا مشخص شده است. شیی loan1 درون لیست loans از شیی library1 که شاخص کتابخانه است، قرار دارد.loan1 به کاربر از کلاس user و InternalUserو لیست کتب مورد استفاده وی از کلاسها ی book ، journal و TechnicalReportاشاره دارد.loan2 و loan3 اشیا موقتی هستند.
اسلاید 24: مهندسی معکوس24دیاگرام پویای شیدیاگرام پویای شیی که در شکل ذیل ارایه شده است شاخص یک اجرا با سناریوی ذیل است:1- یک استفاده کننده داخلی با نام InternalUser1 عضو کتابخانه می شود. 2- استفاده کننده داخلی دیگری با نام InternalUser2 عضو می شود.3- کتابی با نام Book1 آرشیو می شود . 4- کتاب دیگری با نام Book2 آرشیو می شود.5- مجله ای با نام Journal1 آرشیو می شود.6- مجله آرشیو شده در ساعت 5 (Journal1) توسط اولین عضو (InternalUser1) به امانت (loan1) گرفته می شود.7- مجله امانت گرفته شده (Journal1) در ساعت 6 به کتابخانه برگشت داده می شود و از لیست امانات خارج می شود.8- کتابدار تایید می کند که کتاب امانتی برگشت داده شده است. در شکل ذیل براکت شاخص فاصله زمانی است و شیی loan2 برای حذف loan1 ایجاد شده است.
اسلاید 25: مهندسی معکوس25
اسلاید 26: مهندسی معکوس26دیاگرام های تعاملدیاگرام تعامل شاخص تعامل بین اشیا جهت رسیدن به هدفی خاص است. دو نوع دیاگرام تعامل وجود دارد. تعامل بین اشیا در قالب فراخوانی متدها می باشد. تعامل بین اشیا معمولا“ بر اساس زمان و دنباله اجرایی شماره گذاری می شوند. برای نمونه فراخوانی شماره 3.2 شاخص دومین فراخوانی داخل فراخوانی شماره 3 است. در شکل ذیل :1- اولین عمل
اسلاید 27: مهندسی معکوس27
اسلاید 28: مهندسی معکوس28دیاگرام توالی فوق نمایانگر تعامل بین اشیا جهت برگشت دادن یک کتاب امانتی به کتابخانه است. 1- فراخوانی متد IsOut برای این منظور که آیا کتاب برگشت داده شده جز لیست کتب امانتی است ؟ 2- فراخوانی تودرتوی isAvailable با شماره 1.13- متد removeloan با استفاده از شیی موقت loan2 کار حذف امانت را انجام می دهد.
اسلاید 29: مهندسی معکوس29گراف جریان شییگراف جریان شیی مبنایی برای استخراج انواع دیاگرام ها از متن برنامه ها است.گراف جریان شیی (OFG) شاخص چگونگی ایجاد و مقدار دهی به اشیا است.برای استخراج گراف جریان شیی برنامه ها در قالب ذیل خلاصه می شوند:a : ویژگی کلاسf : پارامتر فرمالcs : کانستراکتور کلاس- جملات شامل سه دسته ایجادی، تخصیصی و فراخوانی پارامترها پیشوند نام package / class دارنددنباله ویژگیهایی مثل a.b.c تبدیل به آخرین فیلد یعنی B.c می شود. در اینجا فرض بر این است که b از نوع کلاس B است.
اسلاید 30: مهندسی معکوس30مثالالف - ویژگی loans از کلاس Libraryب- تعریف متد borrowDocument از کلاس libraryج - سازنده کلاس Libraryجملات شامل انواع ایجادی (قاعده 5)، تخصیصی (قاعده 6) و فراخوانی هستند. متغیرهایی که شیی نیستند از برنامه حذف می شوند.اسامی کلاسها با پیشوند نام package های در برگیرنده کلاس مشخص می شوند.
اسلاید 31: مهندسی معکوس31خطوط 60 تا 62 تبدیل بهقوانین خلاصه سازی : 1- جملات شرطی و برگشت دهنده مقدار حذف می شوند 2- پارامتر ضمنی this مشخص می شود.
اسلاید 32: مهندسی معکوس323- مقادیر برگشتی دقیقاً با تعیین دقیق مکان متد و کلمه return مشخص می شوند. 4- اسامی یگانه می شوند. برای این منظور مکان دقیقاً مشخص می شود و به اسامی یکسان پسوند شماره های مجزا اضافه می شود. خطوط 42 تا 43 تبدیل به
اسلاید 33: مهندسی معکوس33گراف جریان شییالف – گره های گراف گراف جریان (N,E) شامل یک گره برای هر مکان درون برنامه است.1- برای هر ویژگی کلاس یک گره جداگانه در نظر گرفته می شود. برای مثال: Library.loan2- برای هر پارامتر رسمی یک گره در نظر گرفته می شود. برای مثال :public boolean borrowDocument(User user, Document doc) برای دو پارامتر رسمی این متد دو گره ذیل در نظر گرفته می شود:1. Library.borrowDocument.user2. Library.borrowDocument.doc 3- برای متغیر محلی Loan loan = new Loan(user, doc); گره ذیل در نظر گرفته می شود:Library.borrowDocument.loan برای شیی ضمنی this درون متد گره ذیل در نظر گرفته می شود:Library.borrowDocument.this
اسلاید 34: مهندسی معکوس34لبه های گرافگره ها بر طبق قواعد ارایه شده در شکل فوق به گراف افزوده می شوند. برای هر فراخوانی گره های پارمترهای رسمی به واقعی متصل می شوند. برای جمله x = new c(a1, …,ak) زوج (x, cs.this) ایجاد می شود. برای فراخوانی y.m(a1, …,ak) لبه (y,m.this) ایجاد می شود. برای فراخوانی x = y.m(a1, …,ak) لبه (m.return,x) ایجاد می شود.
اسلاید 35: مهندسی معکوس35مثالLoan loan = new Loan(user, doc);addLoan(loan);
اسلاید 36: مهندسی معکوس36Containersدر جاوا کلاسهایی مثل Vector، LinkedList، HashSet و TreeMap که رابط Collection را پیاده سازی می کنند، نوعی دیگر از جریان داده را در برنامه ها ایجاد می کنند. مثال دیگر رابط Map است که توسط کلاسهای Hashtable، HashMap و TreeMap پیاده سازی می شود.کلاسهای پیاده کننده Collection متدهای پابلیک برای درج و استخراج اشیا درون یک ظرف یا Container دارند. کلاسهای پیاده سازی کننده Map امکاناتی مشابه دارند اما از کلیدها برای آدأرس دهی و دسترسی به اشیا استفاده می کند. برای این کار بجای متد insert از متد put استفاده می کنند. دو عمل پایه که موجب تغییر جریان داده درون برنامه می شوند به شرح ذیل هستند: (1) c.insert(x) (c,x) E (2) c.extract(x) (c,x) Eمی توان در فرم خلاصه دو دستورالعمل فوق را به دو دستورالعمل ذیل تبدیل نمود: (1) c = x; (2) x = c;
اسلاید 37: مهندسی معکوس37مثالی از ظروفنمونه هایی از استفاده از ظروف در سطوح 4 تا 6 از کلاس library می باشد:3.class Library {4.Map documents = new HashMap();5.Map users = new HashMap();6.Collection loans = new LinkedList();7.final int MAX_NUMBER_OF_LOANS = 20;متد addloan شامل جمله loans.add(loan) در سطر 44 است.40. private void addLoan(Loan loan) {41.if (loan == null) return;42.User user = loan.getUser();43.Document doc = loan.getDocument();44.loans.add(loan); Library.loans = Library.addloan.loan;45.user.addLoan(loan); 46.doc.addLoan(loan);47. }
اسلاید 38: مهندسی معکوس38119.نمونه دیگر از اجرای یک ظرف در داخل متد printAllloans است. 110.public void printAllLoans() {120. Iterator i = loans.iterator();121. while (i.hasNext()) {122.Loan loan = (Loan)i.next();123.loan.print();124. }}خطوط 120 تا 122 به صورت ذیل خلاصه می شوند:Library.PrintAllLoans.i = Library.loans ;Library.PrintAllLoans.loan = Library.PrintAllLoans.i ;مثال دیگر در مورد ویژگی users از نوع Map است که توسط HashMap مقدار دهی شده است. متدهای addUser و getUser شامل دستورالعملهای درج و استخراج است. برای درج دستورالعمل زیر Usres.put(new Integer(user.getCode()), user); Library.user = Library.addUser.user;برای استخراج مقدار دستورالعمل ذیل استفاده می شود:Return (User)users.get(new Integer(userCode)); Library.getUser.return = Library.usres;کنترل حالات استثنایی : مرجع 76
اسلاید 39: مهندسی معکوس39الگوریتم انتشار جریانگراف OFG شاخص کلیه جریان داده ای از جمله اشیا است. جریان های داده ای چه نوع اطلاعاتی را در اختیار می گذارند ؟ ( تغییر نوع، محل ایجاد شیی)مستقل از چگونگی و نوع اطلاعات قابل استخراج از OFG می توان الگوریتم کلی ذیل را برای کشف چگونگی انتشار داده در OFG جهت استخراج اطلاعات مورد نظر، بکار گرفت.
اسلاید 40: مهندسی معکوس40الگوریتم انتشار جریان (2 ص 45)الگوریتم فوق شاخص forward propagation یا انتشار رو به جلو است. برای انتشار رو به عقب می بایست مجموعه out را بر مبنای in گره های بعدی محاسبه نمود.از آنجاییکه OFG صرفاً برای در نظر گرفتن کلیه مسیرهای ممکن جریان داده ایجاد شده است، مسیرهای غیر ممکن هم در الگوریتم در نظر گرفته می شود. بنابراین اطلاعاتی بیشتر از آنچه که هست را نشان می دهد.حساسیت به شیی از آنجاییکه اسامی ویژگیها و متدهای کلاس پیشوند نام کلاس را می گیرند، مشخص نیست که به کدام شیی متعلق می باشند. برای نمونه کلاس loan را در ادامه در نظر بگیرید. فرض کنید که دو شیی متفاوت loan1 و loan2 برای آن ایجاد شده است. برای جمله های خطوط شماره 141 و 144 از این کد که درون دو متد به ترتیب getUser و getDocument به ترتیب می باشند، جملات خلاصه شده در حالت غیر حساس و حساس به شیی مشخص شده است.
اسلاید 41: مهندسی معکوس41حساسیت به شیی (2)133. class Loan {134. User user;135. Document document;136. public Loan(User usr, Document doc)137. { user = usr;138.document = doc;139. }140. public User getUser() {141.return user;142. }143. public Document getDocument() {144.return document;145. }I - Object Insensitive141’. Loan.getUser.return = Loan.user;142’. Loan.getDocument.return=Loan.documentII - Object sensitive141’. Loan1.getUser.return = Loan1.user;141’. Loan2.getUser.return = Loan2.user;142’. Loan1.getDocument.return=Loan1.document142’. Loan2.getDocument.return=Loan2.documentنتیجه حساسیت به شیی دقیقتر شدن دیاگرام OFG است. به این ترتیب اطلاعات مربوط به اشیا متفاوت از یکدیگر قابل تفکیک است. برای نمونه به قطعه کد ذیل توجه نمایید:
اسلاید 42: مهندسی معکوس42حساسیت به شیی (3، ص 48)class Loan { User user; Document document; public Loan(User usr, Document doc) { user = usr; Loan.user = Loan.Loan.usr document = doc;} Loan.document = Loan.Loan.docpublic User getUser() { return user; }public Document getDocument() { return document; } Loan.getDocument.return = Loan.documentدر قطعه کد فوق متد سازنده Loan و متد getDocument استفاده شده اند که در ادامه مشخص شده اند:5 شیی در مجموع در قطعه کد فوق ایجاد شده که در قالب user1, Document1, Loan1, Document2, Loan2 در ادامه به آنها ارجاع شده است.قطعه کد مقابل درون متد main از کلاس Main قرار دارد.
اسلاید 43: مهندسی معکوس43حساسیت به شیی (4، ص 48)
اسلاید 44: مهندسی معکوس44حساسیت به شیی (5، ص 48)در شکل 4-2 یک شیی document که در دو مکان مختلف ایجاد شده به متغیرهای d1 و d2 تخصیص شده است. در حالیکه درون قطعه کد ارایه شده در بالا این دو شیی به صورت ذیل ایجاد می شدند:Document d1 = new Document(“ the story “);Document d2 = new Document(“ Mother “);در شکل 5-2 برای d1 شیی از (Document1.Document.this) می آید و به همین ترتیب برای d2 شیی از (Document1.Document.this) ارسال می شود. دو شیی تخصیصی به متغیرهای I1 و I2 به دو جریان متفاوت تعلق دارند که در شکل 4-2 مشخص نشده است. در شکل 5-2 بواسطه ارسال پارامترهای متفاوت Main.main.d1 به Loan1.Loan.doc جریان دارد در Main.main.d2 به Loan2.Loan.doc حالیکه متصل است. فراخوانی با پارامتر I1 موجب بر گشت مقدار Loan1.getDocument.return می شود در حالیکه فراخوانی با پارامتر I2 موجب برگشت مقدار Loan2.getDocument.return می شود. ساختن : ابتدا تمامی دستورالعملهای new به عنوان مکان ایجاد گره ها مشخص می شوند. سپس لبه های اتصال دهنده بین فراخوانی و متدهای سازنده ایجاد می شوند. به همین ترتیب کار ساختن لبه ها بر اساس فراخوانی ها و مقدار دهی به اشیا ادامه می یابد.
اسلاید 45: مهندسی معکوس45
اسلاید 46: مهندسی معکوس46مثالایجاد OLG با خلاصه سازی برنامه بر اساس گرامر داده شده آغاز می شود. متد Library.borrowDocument در ذیل مشخص شده است. در بالا، صرفاًجملات حاوی اشیا خلاصه شده اند.
اسلاید 47: مهندسی معکوس47
اسلاید 48: مهندسی معکوس48مثال ( 2 ص 54)در اسلاید بعد کد خلاصه شده قبلی به گراف جریان شیی تبدیل شده است. موارد قابل توجه عبارتند از:1- شماره جمله های ایجاد کننده لبه ها بر روی لبه ها مشخص شده است.2- فراخوانی متدها لبه هایی یا هدف مکان this را موجب می شوند. فراخوانی های ذیل را در نظر بگیرید:user.numberofLoans( ) (Library.borrowDocument.user, User.numberOfLoans.this)doc.isAvailable( ) (Library.borrowDocument.doc, Document.isAvailable.this)برای لبه اولی برچسب 58 و برای دومی و برای دومی 59 که به ترتیب شماره فراخوانی اولی و دومی در متن برنامه است قرار داده شده است.3- ارسال پارامتر موجب ایجاد لبه می شود. برای نمونه doc.aouthorizedLoan(User) موجب ایجاد لبه بین پارامتر واقعی Library.borrowDocument.user و پارامتر رسمی Document.authorizedLoan.user می شود. برچسب لبه 59 است.
اسلاید 49: مهندسی معکوس49ایجاد گراف جریان شیی (ص 54)4- ایجاد اشیا همراه با فراخوانی سازنده کلاسها موجب ایجاد لبـــــــه هایی مشابه فراخوانی معمولی در بین پارامترهای واقعی و رسـمی می شود. علاوه بر این لبـــه ای بیـن this در متد سازنده و شیی مورد نظر می شود. برای نمونه جمله ذیل را در نظر بگیرید:60. Loan loan = new Loan(user, doc); موجب ایجاد لبه (Loan.Loan.this, Library.borrowDocument.loan) با برچسب 60 می شود.
اسلاید 50: مهندسی معکوس50مثال ( 4 ص 54)5- عملیات بر روی ظروف نیز موجب ایجاد لبه می شود. برای نمونه جمله ذیل را در نظر بگیرید:315. loans.add(loan); موجب ایجاد لبه (User.addLoan.loan, User.loans) با بر چسب 315 می شود.
اسلاید 51: مهندسی معکوس51مثال ( 3 ص 54)5- برای مقدار برگشتی نیز بک لبه ایجاد می شود. برای نمونه جمله ذیل را در نظر بگیرید:42. User user = loan.getUser( ); موجب ایجاد لبه (Loan.getUser.return, Library.addLoan.user) با بر چسب 42 می شود.
خرید پاورپوینت توسط کلیه کارتهای شتاب امکانپذیر است و بلافاصله پس از خرید، لینک دانلود پاورپوینت در اختیار شما قرار خواهد گرفت.
در صورت عدم رضایت سفارش برگشت و وجه به حساب شما برگشت داده خواهد شد.
در صورت بروز هر گونه مشکل به شماره 09353405883 در ایتا پیام دهید یا با ای دی poshtibani_ppt_ir در تلگرام ارتباط بگیرید.
- پاورپوینتهای مشابه
نقد و بررسی ها
هیچ نظری برای این پاورپوینت نوشته نشده است.