Software Migration Strategies - شبکه دانشجویان مهندسی نرم افزار

Report
a
‫نقش مهندسی معکوس در‬
‫دنیای صنعتی‬
‫سعید پارسا‬
‫دانشگاه علم و صنعت‬
‫زمستان ‪1389‬‬
Vigorous and Rapid Promotion of Industries
Through Reverse Engineering
‫نقش مهنسی معکوس در پیشبرد صنایع‬
3
‫نقش مهندس ی معکوس در صنایع‬
‫مهندس ی معکوس یک نوع فرآیند برای استخراج دانش و نقشه‬
‫دلیل اهمیت این علم زمانی مشخص شد که محققین به‬
‫پرداختند وباشد‪ .‬تنها تفاوت‬
‫باشد‪ ،‬می‬
‫دلیلی که‬
‫هر چیز‬
‫بشردوآن ر‬
‫ساختهژاپن‬
‫کشوار چین و‬
‫پیشرفت‬
‫ازرس ی‬
‫طراحی بر‬
‫مهندسکهی این کشور‬
‫نتیجهورسیدند‬
‫وسایلکهازتحقیق علمی بر‬
‫معکوس هادر بااینخریداست‬
‫بدینعلمی‬
‫در تحقیق‬
‫اماانجام‬
‫اولیه و‬
‫طبیعیعنوان‬
‫هایدیگر به‬
‫کشورهای‬
‫مهندسی یمعکوس بر روی‬
‫مهندس‬
‫نمونهشود‬
‫یک می‬
‫انجام‬
‫روی پدیده‬
‫معکوس بر روی آنها و طراحی مجدد آنها اتوانسته اند همان‬
‫معکوس در جاهایی‬
‫مهندسینمهندس‬
‫توسطمعمول‬
‫بومی وشود‪.‬‬
‫انجام می‬
‫خودشانی ایجاد‬
‫بشربصورت‬
‫سازها را‬
‫دست کال‬
‫استفاده قرار می گیرد که دانش و نقشه طراحی یک چیز‬
‫مورد نمایند ‪.‬‬
‫موجود نباشد ‪.‬‬
‫‪4‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫نقش مهندس ی معکوس در صنایع‬
‫‪‬‬
‫‪‬‬
‫‪5‬‬
‫هدف از مهندس ی معکوس در فرایندهای صنعتی ایجاد وسیله ای مشابه آنچه که‬
‫وجود دارد می باشد‪.‬‬
‫موارد استفاده بخصوص در ساخت‪ ،‬طراحی صنعتی و بازتولید قطعات است‪( .‬برای‬
‫نمونه ‪ RE‬اتومبیل جدید توسط رقبا )‬
‫نقش مهندس ی معکوس در صنایع‬
‫‪.1‬‬
‫جمع آوری داده های مربوط به یک ش ی واقعی جهت تشخیص سطوح ش ی‪.‬‬
‫‪.2‬‬
‫تحلیل داده های جمع آوری شده و ایجاد مدل سطح (‪)Surface Model‬‬
‫‪.3‬‬
‫استفاده از مدل سطح جهت رفع معایب ش ی‪ ،‬ایجاد اشیا بهتر‪ ،‬تحلیل ویژگی های ش ی و‬
‫ساخت مجدد ش ی‪.‬‬
‫‪6‬‬
‫موارد بکارگیری مهندس ی معکوس‬
‫ایجاد مدل ‪ CAD‬هنگامی که مستندات ساخت و یا سازنده در دسترس نیستند‬
‫ایجاد مدل هندس ی ‪ CAD‬از قطعات صنعتی جهت بررس ی و ساخت‬
‫‪.1‬‬
‫سازنده در دسترس‬
‫ایجاد مدل هندس ی ‪ CAD‬از اجزا بدن جهت اهداف پزشکی‬
‫ایجاد مدل هندس ی ‪ CAD‬جهت تصاویر متحرک‬
‫‪7‬‬
‫مفهوم مهندس ی معکوس در صنعت‬
‫‪‬‬
‫‪8‬‬
‫مهندس ی معکوس فرایند استخراج مدل ‪ CAD‬از نقاط سه بعدی‬
‫حاصل از اسکن ‪ /‬رقمی کردن قطعات موجود است‪.‬‬
‫مراحل مهندس ی معکوس‬
‫‪ -1‬اسکن‬
‫‪ -2‬پردازش نقاط‬
‫‪ -3‬تولید مدل هندس ی‬
‫‪9‬‬
‫مراحل مهندسی معکوس‬
‫مدل‬
‫‪CAD‬‬
‫تکمیل سطوح‬
‫ایجاد مش‬
‫اسکنر لیزری‬
‫شیی‬
‫فیزیکی‬
‫اسکن لیزری‬
‫‪10‬‬
‫دیسک ترمز‬
‫مهندس ی معکوس عملکرد قطعات‬
‫مهندس ی معکوس در حالت کلی محدود به ایجاد مدل مناسب‬
‫برای ‪ CAD‬می باشد‪.‬‬
‫هر رشته مهندس ی موارد خاص خود را برای مهندس ی معکوس‬
‫مطرح می نماید‬
‫‪11‬‬
‫مفهوم مهندسی معکوس‬
‫ی معکوس روشی برای استخراج مفاهیم از متن برنامه ها‬
‫با استفاده از مهندس ی معکوس می توان دریافت یک برنامه‪:‬‬
‫چه ساختاری دارد؟ چه مفهومی دارد؟ چه داده هایی دارد؟‬
‫چگونه عمل می کند؟‬
‫‪12‬‬
‫مهندس ی معکوس بر سه جنبه کنترل‪ ،‬فرایند و داده اشراف دارد‬
‫مهندسی رو به جلو و معکوس‬
‫توصیف‬
‫رفتار‬
‫طراحی‬
‫کد‬
‫کد‬
‫طراحی‬
‫رفتار‬
‫توصیف‬
‫مهندس ی روبه جلو‪ 000000000000000‬مهندس ی معکوس‬
‫‪13‬‬
‫نقش مهندسی معکوس نرم افزار در صنایع‬
‫ا‬
‫نرم افزارها و برنامه های کنترل کننده قطعات و دستگاه های کنترلی که معمول به‬
‫صورت کد باینری در حافظه های ایستا قرار گرفته اند را با کمک ابزار مهندس ی‬
‫معکوس می توان ‪:‬‬
‫‪ .1‬از کد باینری توسط دیس اسمبلرها به کد اسمبلی تبدیل نمود‪.‬‬
‫‪ .2‬از کد باینری توسط دیکامپایلرها به کد متن تبدیل نمود‪.‬‬
‫‪ .3‬مدلهای رفتاری و ساختاری را از متن برنامه استخراج نمود‪.‬‬
‫‪14‬‬
‫نقش مهندسی معکوس نرم افزار در صنایع‬
‫‪ .4‬توسط ابزاری مثل دایکون منطق برنامه را استخراج نمود‪.‬‬
‫‪ .5‬با استفاده از ابزار مهندس ی مجدد کد برنامه ها را بهینه نمود‪.‬‬
‫‪ .6‬کد برنامه را مورد ارزیابی های کیفی قرار داد‪.‬‬
‫‪ .7‬کد برنامه را بررس ی و نقاط نفوذ را مشخص نمود‪.‬‬
‫‪ .8‬سرویس های برنامه را تشخیص و تبدیل به وب سرویس نمود‪.‬‬
‫‪15‬‬
‫آیا مهندسی معکوس قانونی است ؟‬
‫ بازی کامپیوتری ارایه نمود‬Sega ‫ کمپانی ژاپنی‬1990 ‫در سال‬
‫ بود‬1990 ‫این بازی با کنسول خاص خود موفقترین بازی در‬
Using
‘fair use’
argument from
copyright
a clear
line ‫در‬
‫ شد‬the
‫معکوس‬
.‫ م‬Accolade
‫آمریکایی‬
‫شرکت‬law,
‫توسط‬
1991
of cases support
reverse engineering of software for the purposes of
‫نمود‬
‫عرضه‬understanding
‫با کیفیت بهتر‬functionality
‫ را‬Sega ‫بازی‬and
Accolade ‫کمپانی‬
for developing a different version of information or code.
... ‫ نشد زیرا‬Accolade ‫ موجب محکومیت‬Sega ‫شکایت‬
‫ را کپی نکرده بود‬Sega ‫ کد برنامه‬Accolade ‫شرکت‬
16
‫سطوح مهندس ی معکوس‬
‫‪ .1‬مهندس ی معکوس کد باینری‬
‫‪ -2‬مهندس ی معکوس متن برنامه ها‬
‫‪ -3‬مهندس ی معکوس داده ها‬
‫‪17‬‬
‫ابزار معکوس گرها‬
‫‪ .1‬ابزار مانیتورینگ‬
‫برای نظارت بر کانالهای ‪I/O‬‬
‫‪www.sysinternals.com‬‬
‫روش کار‪:‬‬
‫قالب انداختن به مولفه ها و قطعات سطح پایین در سیستم عامل‬
‫‪18‬‬
‫‪ .1‬ابزار مانیتورینگ‬
‫‪www.sysinternals.com‬‬
‫‪ : FIleMon‬برای نظارت بر عملیات فایلها (خواندن ‪ ،‬نوشتن‪ ،‬ایجاد و باز‬
‫کردن دایرکتوری) در هر پردازه ای از سیستم‬
‫‪ : TCPView‬برای نظارت بر اتصالت ‪ TCP‬و ‪ UDP‬در شبکه‬
‫‪ : RegMon‬برای نظارت بر عملیات بر روی رجیستری‬
‫‪ : PortMon‬برای نظارت بر ترافیک پورتهای موازی و سریال‬
‫‪ : ProcessExplorer 19‬مشابه ‪ Task Manager‬در ویندوز‬
‫‪ .1‬ابزار مانیتورینگ‬
‫یافتن فایل بعدی‬
‫کد پچ شده‬
‫کد اجرایی‬
‫فایل بعدی‬
‫کد بدخواه‬
‫پنهان کننده کد بدخواه‬
‫کد اجرایی‬
‫‪.........................‬‬
‫یافتن فایل بعدی‬
‫‪Rootkit‬‬
‫‪Trampoline‬‬
‫فایل بعدی‬
‫‪20‬‬
‫‪Code‬‬
‫ابزار معکوس گرها‬
‫‪ .2‬دیس اسمبلرها‬
‫هدف ‪ :‬تبدیل کد باینری به اسمبلی‬
‫روش کار‪ :‬تبدیل کد به دستورالعمل در طول مسیر اجرایی برنامه‬
‫مشکل ‪ :‬تفکیک کد از داده‬
‫‪21‬‬
‫‪ .2‬ابزار دیس اسمبلی‬
‫‪www.sysinternals.com‬‬
‫‪ : IDAPro‬امکان دیس اسمبلی‪ ،‬استخراج گراف جریان کنترلی‪ ،‬گراف‬
‫فراخوانی و فلوچارت را دارد‪ .‬توابع ‪ API‬را مشخص می کند‬
‫‪ : ILDasm‬برای تبدیل از ‪ MSIL‬به متن ‪IL‬‬
‫‪22‬‬
‫ابزار معکوس گرها‬
‫‪ .3‬دیباگر یا اشکالزداها‬
‫هدف ‪ :‬مکانیابی خطا در سطح کاربر و سطح سیستم عامل‬
‫روش کار‪ :‬توقف موقت با حفظ وضعیت اجرایی و بازیابی مجددآن‬
‫مشکل‪ :‬توقف موقت کد در هسته سیستم عامل موجب توقف سیستم می‬
‫شود‪.‬‬
‫‪23‬‬
‫‪ .3‬ابزار دیباگ‬
‫‪http://home.t-online.de/home/Ollydbg.‬‬
‫‪: OLLyDlg .1‬‬
‫ برای مهندس ی معکوس ساخته شده‬‫‪ -‬دیس اسمبلی قوی دارد‬
‫ تجزیه گر با قابلیت تشخیص حلقه ها و جمله ‪ ، switch‬بالکها و سایر‬‫ساحتارهای برنامه‬
‫ امکان پچ کردن و اسمبلی و اجرای کد پچ شده را دارد‬‫‪24‬‬
‫‪ .3‬ابزار دیباگ‬
‫‪www.microsoft.com/whdc/devtools/debugging/default.mspx.‬‬
‫‪WinDbg .2‬‬
‫ دارای یک مد هسته ای برای اشکالزدایی است که به صورت راه دور نیز عمل‬‫می کند‪.‬‬
‫ از راه دور می توان یک سیستم را با قرار دادن سوییچ ‪ /DEBUG‬درون‬‫‪ ، boot.ini‬فعال نمود‪.‬‬
‫ با قرار دادن این سوییچ امکان اشکالزدایی از هسته نیز فراهم می شود‪.‬‬‫‪25‬‬
‫‪ .3‬ابزار دیباگ‬
‫‪www.microsoft.com/whdc/devtools/debugging/default.mspx.‬‬
‫‪SoftICE .3‬‬
‫ امکان اشکالزدایی هسته سیستم عامل به صورت محلی دارد‪.‬‬‫ با فشردن کلید ‪ CTRL D‬عملکرد سیستم را مشخص می کند‪.‬‬‫ با فشردن ‪ CTRL D‬سیستم عامل ویندوز متوقف و پنجره مربوط به این‬‫اشکالزدا بر روی صفحه منانیتور ظاهر می شود‬
‫ پردازنده مرکزی را با یک امولتور جایگزین می کند‬‫‪26‬‬
‫‪ .3‬ابزار دیباگ‬
‫‪www.smidgeonsoft.com.‬‬
‫‪PEBrowse .4‬‬
‫ اشکالزدایی کد میانی ‪ IL‬در محیط ‪.NET‬‬‫ امکان اشکالزدایی در مد هسته را دارد‬‫ قابلیت تعیین نقطه توقف درون ‪ API‬های ویندوز را دارد‪.‬‬‫ امکان متوقف کردن و ادامه عملیات در هسته ویندوز را دارد‪.‬‬‫‪27‬‬
‫ابزار معکوس گرها‬
‫‪ .4‬دیکامپالیرها‬
‫هدف ‪ :‬تبدیل کد باینری به کد متن یا ‪ source‬برنامه‬
‫‪ -1‬دیس اسمبلی‬
‫‪ -2‬استخراج گراف جریان فراخوانی و کنترلی‬
‫‪ -3‬تشخیص دستورالعمل ها بر اساس الگو یا ساختار دستورالعمل‬
‫‪ -4‬تشخیص ساختمان داده ها‬
‫‪28‬‬
‫‪ .4‬دیکامپایلرها‬
‫الف‪ .‬دیکامپایلرهای شناخته شده در ‪.NET‬‬
‫ ‪Remotesoft Salamander‬‬‫ ‪Reflector for .Net‬‬‫ب‪ .‬دیکامپایلرهای شناخته شده در ‪Java‬‬
‫‪JODE -‬‬
‫‬‫‪29‬‬
‫‪JAD‬‬
‫دیکامپایلر ‪ salamandar‬برای ‪C#‬‬
‫‪30‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫ساخت قطعات با استفاده از اندروید‬
‫سیستم عامل اندروید‬
‫ آندروید بستری را فراهم می کند تا بتوان برنامه هایی ساخت که از تمام ویژگی های یک‬‫گوشی هوشمند مثل ارسال پیامک‪ ،‬استفاده کند‪.‬‬
‫ آندروید امکان استفاده از توابع داخلی گوشی موبایل همچون شماره گیری‪ ،‬فرستادن‬‫پیامک یا استفاده از دوربین گوشی را به برنامه نویسان می دهد‬
‫‪Open Source -1‬‬
‫‪ -2‬پوسته جاوا بر روی لینوکس‬
‫‪ -3‬برنامه نویس ی فقط با جاوا‬
‫‪developer.android.com/sdk/ -4‬‬
‫ قابل نصب بر روی ‪eclipse‬‬‫‪31‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫مهندس ی معکوس برای ساخت قطعات‬
‫هدف‬
‫‪‬‬
‫‪‬‬
‫‪32‬‬
‫با استفاده از تکنیک های مهندس ی معکوس الگوریتم های کد نهفته درون قطعات سخت‬
‫افزاری را بدست آورده تا بتوان این وسایل را بصورت بومی برنامه ریزی و ایجاد نمود و در‬
‫صورت امکان توسعه داد‪.‬‬
‫برای نمونه سخت افزارهای مبتنی بر سیستم عامل اندروید از قبیل ‪( Arm‬نسخه ‪ 9‬و‬
‫بالتر ) و همچنین واسطهایی مانند ‪ Android IOIO‬که امکان مدیریت سخت افزار‬
‫بوسیله ی گوش ی های اندروید را فراهم می کند مورد بررس ی قرار داده شده است‪.‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫ساخت سیستم حضور و غیاب با اندروید‬
‫‪RFID‬‬
‫‪Friendly Arm /Beagle‬‬
‫‪Ardino / IOIO‬‬
‫‪Finger‬‬
‫‪Print‬‬
‫رابط‬
‫‪KeyPad‬‬
‫‪33‬‬
‫نقش‬
‫َ‬
‫اندروید‬
‫برای ساخت این سیستم نیاز به بخش های زیر می باشد ‪:‬‬
‫‪ ‬سخت افزار برای اجرای سیستم عامل آندروید ( ‪) Beagle ، ARM‬‬
‫‪ ‬ماژول اثر انگشت ‪ ،‬ماژول آر اف آی دی ‪ ،‬کی پد ‪ ،‬ال ای دی ‪...‬‬
‫‪ ‬رابط بین سیستم عامل و ماژول ها‬
‫مهنسی نرم افزار‬
‫‪‬‬
‫معکوس در پیشبرد صنایع‬
‫ساخت سیستم حضور و غیاب با اندروید‬
‫برد های ‪Frienfly Arm‬‬
‫‬‫‪-‬‬
‫‬‫‬‫‪-‬‬
‫‪34‬‬
‫قابلیت نصب آندروید را دارند‬
‫از پورت های ارتباطی مختلفی از‬
‫قبیل پورت ‪، HDMI ، usb‬‬
‫پورت شبکه و ‪ ...‬استفاده می کند‬
‫‪ LCD‬همراه نیز دارند‬
‫به وفور در بازار ایران یافت می‬
‫شوند‪.‬‬
‫قیمت این برد ها بسته به قدرت‬
‫پردازش ی و ارتباطی و ‪ Lcd‬همراه‬
‫بین ‪ 100‬تا ‪ 200‬دلر متغیر است ‪.‬‬
‫بردهای ‪ ARM‬دارای پردازنده های خانواده ‪ATMEL‬‬
‫هستند‪ .‬این پردازنده ها‪:‬‬
‫ ارزان‬‫ با محبوبیت زیاد‬‫ در اغلب گوش ی های موبایل استفاده می شوند‬‫‪ -‬امکان نصب لینوکس‪ ،‬ویندوز ‪ CE‬و اندروید را دارند‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫ساخت سیستم حضور و غیاب با اندروید‬
‫ماژول اثز انگشت‬
‫ به وفور در بازار ایران یافت می شود ‪-‬‬‫دارای حافظه داخلی است‬
‫ یک پردازنده آنها را اداره می کند‬‫ تمامی مراحل ثبت اثر انگشت و‬‫جستجوی آن توسط ماژول و پردازنده‬
‫آن صورت می گیرد‬
‫ در صورت تایید اثر انگشت و یا ذخیره‬‫اثر انگشت‪ ،‬پیغام های مربوطه را از‬
‫طریق پورت های خود ارسال می کند‬
‫ قیمت ماژول اثر انگشت ‪ 130‬دلر‬‫‪35‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫ساخت سیستم حضور و غیاب با اندروید‬
‫ماژول ‪(Radio Ftrquency Idenentificatuib) RFID‬‬
‫‬‫‬‫‬‫‬‫‪-‬‬
‫‪36‬‬
‫شامل برچسب‪،‬آنتن و خواننده برچسب و نرم افزار کنترلی که توسط سازنده ارایه می شود‬
‫برای شناسایی برچسب ها و عالمت های نصب شده روی اجسام به کار می رود‬
‫با دریافت شناسه برچسب ‪ ،‬کارت آر اف آی دی آن را از پورت های خود ارسال می کند‬
‫ردیابی اشیاء ‪ ،‬نظارت بر فعالیت ها‪ ،‬کنترل دسترس ی و امنیت ‪ ،‬نمونه هایی از کاربردها می باشد‪.‬‬
‫قیمت ‪ 10‬تا ‪ 30‬دلر‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫ساخت سیستم حضور و غیاب با اندروید‬
‫)کاربردی از ‪(RFID‬‬
‫کنترل ورود و خروج کتاب از کتابخانه‬
‫‪37‬‬
‫کنترل ورود و خروج اتومبیل ها‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫توسعه نرم افزار در محیط اندروید‬
‫َ‬
‫ساخت نرم افزار در اندروید‬
‫•‬
‫•‬
‫•‬
‫َ‬
‫نرم افزار لزم برای ارتباط مابین ماژول های خارجی و اندروید توسط ‪ SDK‬رابط ( یویو ‪ ،‬آردینو ) ارایه‬
‫شده توسط شرکت سازنده برد های یویو ‪ ،‬آردینو است‪.‬‬
‫فارس ی نویس ی در آندروید با معکوس کردن یکی از برنامه های ارسال پیامک فارس ی‬
‫ذحیره و بازیابی اطالعات با معکوس کردن نرم افزارهای استفاده کننده از پایگاه داده‬
‫فایل‬
‫‪fn.class‬‬
‫‪38‬‬
‫‪JAD‬‬
‫فایل‬
‫‪fn.jar‬‬
‫‪Dex2Jar‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫فایل اجرایی‬
‫‪fn.apk‬‬
‫دیکامپایلر ‪ Dex‬برای جاوا تحت اندروید‬
‫‪39‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫دیکامپایلر ‪ Dex‬برای جاوا‬
‫‪40‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫دیکامپایلر ‪ Dex‬برای جاوا‬
‫َ‬
‫و‬
‫ساخت نرم افزار در اندر ید‬
‫برای رسیدن به کالس های جاوا باید‬
‫فایل جار را به کالسهای جاوا تبدیل‬
‫کنیم ‪ .‬برای این روند نیز از نرم افزار‬
‫‪ jd-gui‬استفاده می شود‪ .‬کافیست‬
‫که این نرم افزار اجرا کرده و به ورودی‬
‫آن فایل ‪ Jar‬مورد نظر را وارد نمود‪.‬‬
‫فایل‪ jar‬به کالس های جاوا تبدیل می‬
‫شود‪ .‬برای دریافت این برنامه می توان‬
‫به سایت زیر رجوع کرد ‪.‬‬
‫‪http://java.decompiler‬‬
‫‪.free.fr/?q=jdgui‬‬
‫‪41‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫مهندس ی معکوس کد نهفته درون تراشه‬
‫هدف معرفی برنامه ای جهت یافتن کد نهفته درون بردهای خانواده ‪ ARM‬و تبدیل آن به کد اسمبلی است‪ .‬مراحل‬
‫کار ‪:‬‬
‫‪ .1‬از برنامه ‪ icprog‬یا ‪ flash magic‬برای خواندن کد ‪ hex‬که در ‪ eeprom‬میکروکنتلر ذخیره شده استفاده‬
‫شود‪.‬‬
‫‪ .2‬بدین منظور ابتدا ‪ ARM‬را بوسیله ی پورت ‪ usb‬به کامپیوتر متصل نموده‪ .‬حال با اجرای برنامه ‪icprog‬‬
‫یا ‪ flash magic‬اطالعات درون تراشه را می توان خواند‪ .‬برای دریافت این دو برنامه می توان به لینک های‬
‫زیر مراجعه کرد ‪:‬‬
‫‪http://www.esacademy.com/en/products.html‬‬
‫‪http://www.ic-prog.com/‬‬
‫‪.3‬‬
‫‪42‬‬
‫سپس از برنامه ‪ disavrex‬به منظور تبدیل کدهای ‪ hex‬به کد اسمبلی استفاده می شود‪.‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫مشکالت کار با بردهای ‪Family Arm‬‬
‫‪ -1‬پیام ها اغلب به زبان چینی هستند‪.‬‬
‫‪ -2‬فارس ی را پشتیبانی نمی کند‪.‬‬
‫‪ -3‬راهنمای استفاده وجود ندارد‪.‬‬
‫‪ . -4‬برنامه های مدیریت امکانات برد مثل ‪ led‬ها ‪ ،‬وسایل ‪ PWM ، I/O‬و ‪ I2C‬نهفته در ون سیستم عامل راهنما‬
‫ندارند‪.‬‬
‫‪43‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫روال کار با بردهای ‪Family Arm‬‬
‫‪ -1‬پیام ها اغلب به زبان چینی هستند‪.‬‬
‫‪ -2‬فارس ی را پشتیبانی نمی کند‪.‬‬
‫‪ -3‬راهنمای استفاده وجود ندارد‪.‬‬
‫‪ . -4‬برنامه های مدیریت امکانات برد مثل ‪ led‬ها ‪ ،‬وسایل ‪ PWM ، I/O‬و ‪ I2C‬نهفته در ون سیستم عامل راهنما‬
‫ندارند‪.‬‬
‫‪44‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫مهندس ی معکوس و نفوذ در برنامه ها‬
‫‪ ‬حمالت مهندس ی معکوس با تحلیل عملکرد برنامه در زمان اجرا‬
‫حمالتدارند‪.‬‬
‫برنامهها‬
‫کشفیکنقط‬
‫‪ ‬سعی‬
‫مهندس ی معکوس عمل‬
‫ضعفاتر از‬
‫مرحله فر‬
‫حمالتدرتغییر‬
‫ تحلیلهای ایستا شامل دیکامپایل و دیساسمبل و تحلیل جریان کنترلی است‪.‬‬‫گیرد‪.‬روی برنامهها‬
‫معکوس بر‬
‫ی‬
‫مهندس‬
‫عملیات‬
‫انجام‬
‫بر‬
‫عالوه‬
‫و‬
‫کرده‬
‫ر‬
‫و‬
‫ تحلیلهای پویا بر ر ی کد اجرایی توسط دیباگر هم صو ت می‬‫خودزهدارند‪.‬‬
‫کارکرد برنامه به‬
‫تغییر‬
‫سعیو در‬
‫سود امرو‬
‫توسط هکرها برای‬
‫اشکالزداها که‬
‫دیباگر یا‬
‫فترین‬
‫‪ ‬معر‬
‫تشخیص آسیب پذیری های برنامه ها و یا غیر فعال کردن سیستم‬
‫امنیتی استفاده می شوند عبارتند از ‪.SofIce, OllyDbg, IdaPro‬‬
‫‪45‬‬
‫مهندس ی معکوس و دفاع از برنامه ها‬
‫‪Virus Binary Code :‬‬
‫‪Virus Data :‬‬
‫‪Anubis Analyzer :‬‬
‫استخراج ویژگیها‬
‫از متن برنامه‬
‫نرمال سازی‬
‫تعیین رفتار‬
‫‪0 ≤ data ≤ 1‬‬
‫‪Anubis‬‬
‫تعیین نوع ویروس‬
‫تعیین پیشگوها‬
‫استخراج ویژگیها‬
‫‪Attrib. Sel.‬‬
‫‪.crf => .ARFF‬‬
‫کد باینری‬
‫ویروس ها‬
‫مستند ‪XML‬‬
‫رفتار ویروس‬
‫بر اساس رابطه‬
‫متن برنامه‬
‫ویروس ی‬
‫‪Nqty=NewAttrib quantity=Dll calls * file weight‬‬
‫آموزش مدل با‬
‫‪Weka‬‬
‫} ‪{(Attribnumber nqty)* , Malware type‬‬
‫‪46‬‬
‫‪{45 0.107, 46 0.107, 47 0.107, 48 0.107, 49 0.107, 50 0.107, 51 0.107, 52 0.107,‬‬
‫}‪53 0.107, 54 0.107, 55 0.107, 56 0.107, 73 0.107, 87 1, 88 T24‬‬
‫رابطه رگرسیون‬
‫دسترس ی های‬
‫انتخاب شده‬
‫مهندسی معکوس و دفاع از برنامه ها‬
‫کد باینری‬
‫ویروس ها‬
‫برچسب ‪ Processes‬شامل موارد ذیل است‪:‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪.6‬‬
‫‪.7‬‬
‫‪.8‬‬
‫‪.9‬‬
‫‪ : dll_handling_section‬شامل اطالعات مربوط به فراخوانی تعدادی از فایلهای کتابخانهای‬
‫‪ : filesystem_section‬شامل اطالعات مربوط به ایجاد ‪ ،‬جستجو‪ ،‬تغییر در فایلها‬
‫‪ : registry_section‬شامل اطالعات مربوط به تغییراتی که برنامه در رجیستری ایجاد کرده‬
‫‪ : process_section‬شامل اطالعات مربوط به فرایندها‬
‫تعیین رفتار‬
‫‪ : Mutex‬شامل اطالعات میوتکس های مورد دسترس ی‬
‫‪Anubis‬‬
‫‪ : virtual_memory_section‬شامل اطالعات مربوط به دستکاری و تغییرات حافظه مجازی توسط برنامه‬
‫‪ : Emails‬ارسال پست الکترونیک‬
‫‪ : Links‬ارتباط از طریق سوکتها‬
‫‪...‬‬
‫مستند ‪XML‬‬
‫رفتار ویروس‬
‫‪ .1‬برنامه هایی ویروس ی را از سایت اینترنتی ‪ http://vx.netlux.org/‬دانلود نمایید‪.‬‬
‫‪ .2‬فایلهای ویروسی را به سایتهای ذیل ارسال و فایلهای ‪ XML‬نتیجه را دانلود نمایید‪:‬‬
‫‪ http://anubis.iseclab.org‬و ‪http://www.sunbeltsecurity.com/sandbox/default.aspx‬‬
‫‪ .3 47‬مستنا ‪ XML‬انهایی را با اطالعات بیش از ‪ 30000‬ویروس که از آدرس ذیل قابل دسترس ی است تکمیل نمایید‪:‬‬
‫‪http://pi1.informatik.uni-mannheim.de/malheur‬‬
‫مهندس ی معکوس و دفاع از برنامه ها‬
‫کد باینری‬
‫ویروس ها‬
‫لیستی از خصوصییت های انتخاب شده نمایانگر رفتار ویروس‬
1. version.dll
6. profmap.dll
11. winsta.dll
2. authz.dll
7. netapt32.dll
12.wintrust.dll
…
…
85. msctfime.ime
3. crypt32.dll
8. psapi.dll
13. magehlp.dll
4. msan1.dll
9. regapi.dll
14. ws2_32.dll
…
86. asycfil.de
5. nddeapi.dll
10. seupapiI.dll
15.ws2help.dll
…
87. delete_file
…
88.create_mutex 89.process_call
‫های مؤثر‬API ‫نام‬
‫انتحاب ویژگی ها‬
XMltoMatrix ‫برنامه‬
XML ‫مستند‬
‫رفتار ویروس‬
Process32Next
Process32First
RegEnumValueA
CopyFileA
RegCreateKeyExA
InternetConnectA
CopyFileW
RegOpenKeyA
RegQueryInfoKeyA
TerminateThread
OpenFile
WSACleanup
GetUserNameA
RegQueryValueExA
ReadFile
InternetOpenA
GetEnvironmentVariableA
CreateFileA
DeleteFileA
OpenServiceA
GetEnvironmentStrings
RegSetValueExA
WSAStartup
GetUserNameW
EnumServiceStatusA
RegDeleteValueA
OpenServiceW
StartServiceW
LookupPrivilegeValueA
RegEnumKeyExA
CreateThread
StartServiceA
GetSystemDirectoryA
CreateServiceA
RegDeleteKeyA
‫ مطلوبیت خصوصیت = اندازه فایل مورد دسترس ی ویروس * تعداد دفعاتی دسترس ی ویروس به فایل‬: ‫ معیار انتخاب‬.1
{45 0.107, 46 0.107, 47 0.107, 48 0.107, 49 0.107, 50 0.107, 51 0.107, 52 0.107, 53 0.107, 54 0.107, 55 0.107, 56 0.107, 73 0.107, 87 1, 88 T24}
.‫ هر سطر حاوی خصوصییات یک ویروس است‬.‫ستون است‬92 ‫ سطر و‬3131 ‫حاصل ماتریس ی با بیش از‬
.‫ عدد انتخاب شد‬35 ‫ کاندید‬API 170 ‫اجرا شد و از‬WinAPIOverride32 ‫ برنامه سالم و ویروس ی توسط‬1500 ‫اجرای‬48
.2
‫مهندس ی معکوس و دفاع از برنامه ها‬
‫ایجاد رابطه تشخیص نوع ویروس با استفاده از وکا‪:‬‬
‫‪ .1‬تبدیل ماتریس خصوصییت ها به فرمت ‪.arrf‬‬
‫‪ .2‬نرمالیزه کردن داده ها به فاصله [‪]0..1‬‬
‫‪ .3‬فیلتر کردن خصوصییتهای ‪ corelated‬و محدود کردن آنها به ‪ 14‬عدد‬
‫‪ .4‬آموزش مدل با استفاده از ‪ %70‬مجموعه ورودی ها و رگرسیون خطی‬
‫‪ .5‬آزمون مدل با استفاده از ‪ %30‬باقیمانده از مجموعه ورودی ها‬
‫ابزار ‪Weka‬در دانشگاه ‪ Waikato‬نیوزیلند توسعه یافته است و سرواژه ‪Waikato Environment for‬‬
‫‪ Knowledge Analysis‬می باشد‪ .‬این ابزار توسط ‪ Java‬پیاده سازی شده است و تحت مجوز ‪GNU‬‬
‫‪ General Public‬منتشر می گردد و در حال حاضر بر روی سیستم عاملهای ‪،Windows ،Linux‬‬
‫‪ Macintosh‬و حتی پلتفرم ‪PDA‬قابل اجراست‪ .‬همچنین ‪Weka‬نام پرنده ای کمیاب و در حال انقراض در نیوزیلند‬
‫‪49‬‬
‫است که جستجوگر بوده و توانایی پرواز ندارد‪.‬‬
‫سطوح مهندس ی معکوس‬
‫‪ .1‬مهندس ی معکوس کد باینری‬
‫‪ -2‬مهندس ی معکوس متن برنامه ها‬
‫‪ -3‬مهندس ی معکوس داده ها‬
‫‪50‬‬
‫درک برنامه ها‬
‫تقسیم برنامه به نواحی یا در اصطالح ‪ Slice‬یا برش با رفتار خاص‬
‫‪ .1‬برش بندی بر اساس شرط خاص‬
‫برای نمونه تعیین کلیه نواحی ای از برنامه که شرط ‪ Phone-off-hook‬برقرار‬
‫است‬
‫بدینوسیله جنبه خاص ی از برنامه مشخص می شود‪.‬‬
‫‪ .2‬برش بندی بر اساس رویدادها‬
‫تعیین نواحی ای از برنامه که با یک رویداد به اجرا در می آیند‬
‫بدینوسیله رفتار در قالب دیاگرام حالت برای اشیا مشخص می شود‬
‫‪51‬‬
‫درک برنامه ها‬
‫تقسیم برنامه به نواحی یا در اصطالح ‪ Slice‬یا برش با رفتار خاص‬
‫‪ .3‬برش رو به جلو‬
‫کلیه جمله های تحت تاثیر مقدار یک متغیر یا ورودی در مکانی مشخص‬
‫بدینوسیله مشخص می شود یک ورودی بر کدام نواحی کد موثر است‬
‫‪ .4‬برش رو به عقب‬
‫کلیه جمله های موثر بر مقدار یک متغیر در مکانی مشخص‬
‫بدینوسیله مشخص می شود‬
‫‪52‬‬
‫استخراج ساختار و رفتار برنامه ها‬
‫‪ .1‬استخراج مدلهای ساختاری و رفتاری با تحلیل ایستای متن برنامه ها‬
‫‪ .2‬استخراج مدلهای رفتاری با تحلیل پویای متن برنامه ها‬
‫‪53‬‬
‫استخراج ساختار معماری با تحلیل ایستا‬
‫‪ .1‬استخراج گراف فراخوانی ( مشکل فراخوانیهای چند ریختی)‬
‫‪54‬‬
‫گراف فراخوانی برای مساله فروشنده دوره گرد‬
‫استخراج ساختار معماری با تحلیل ایستا‬
‫‪ .2‬تبدیل گراف فراخوانی‬
‫به مدل ارتباطی کالسها‬
‫وزن لبه ها تعداد فراخوانیها‬
‫بین کالسها در مساله فروشنده‬
‫دوره گرد‬
‫‪55‬‬
‫استخراج ساختار معماری با تحلیل ایستا‬
‫‪ .3‬خوشه بندی کالسها بر اساس اصول پیمانه بندی‬
‫‪56‬‬
‫دیدگاه های معماری‬
‫دیدگاه ‪4+1‬‬
‫ديدگاه فیزيکي‬
‫ديدگاه فرايند‬
‫ديدگاه سناريو‬
‫ديدگاه توسعه‬
‫‪57‬‬
‫ديدگاه منطقي‬
‫استخراج ساختار معماری با تحلیل ایستا‬
‫مدل قطعات برای سیستم آموزش‬
‫صفخه های رابط برای‬
‫صفخه های رابط برای‬
‫امور آموزش‬
‫امور ثبت نام‬
‫سرویسهای‬
‫کنترلی‬
‫‪58‬‬
‫سرویس های بانک‬
‫صفخه های رابط برای‬
‫اطالعاتی‬
‫لیست کالسها‬
‫استخراج ساختار معماری با تحلیل ایستا‬
‫ابزار‬
‫ایحاد مدل قطعات در‬
‫کد منبع‬
‫‪Component View‬‬
‫از‪:‬‬
‫‪Source Code‬‬
‫مراحل اصلی عبارتند‬
‫‪ .1‬بدست آوردن مدل ارتباطی کالسها توسط نرمافزار ‪Understand‬‬
‫‪http//:www.scitools.com‬‬
‫تبدیل مدل قطعات به‬
‫استخراج مدل ارتباطی‬
‫درتوسط نرمافزار ‪Bunch‬‬
‫ها‬
‫‪ .2‬خوشهبندی مدل ارتباطی کالس‬
‫فرمت قابل نمایش‬
‫‪Rattional Rose‬‬
‫کالسها توسط نرمافزار‬
‫‪Understand‬‬
‫‪ .3‬نمایش نمودار قطعهی حاصل (خوشهبندی ایجاد شده) در محیط ‪Rational Rose‬‬
‫خوشه بندی کالسها‬
‫توسط ‪Bumch‬‬
‫‪59‬‬
‫استفاده از ابزار ‪Understand‬‬
‫‪ -1‬ایجاد پروژه جدید در محیط‬
‫ابزار ‪Understand‬‬
‫این نرمافزار را از سایت ‪ http://www.scitools.com‬دانلود و نصب می توان نمود‪.‬‬
‫‪60‬‬
‫ابتدا از منوی ‪ File‬گزینه ‪ New‬و سپس گزینه ‪ Project‬انتخاب شود‪.‬‬
‫استفاده از ابزار ‪Understand‬‬
‫‪ -2‬انتخاب زبان برنامه نویس ی برای برنامه مورد‬
‫نظر در ‪Understand‬‬
‫نرمافزار ‪ Understand‬قادر به تحلیل کدهای زبانهای مختلف میباشد‪ .‬لذا در ادامه می‪-‬‬
‫بایست زبانهای برنامه نویسی به کار رفته در کد منبع را انتخاب نمود‪،‬‬
‫‪61‬‬
‫استفاده از ابزار ‪Understand‬‬
‫‪ -3‬تعیین دایرکتوری شامل برنامه مورد بررس ی‬
‫در ‪Understand‬‬
‫سپس در پنجره ظاهر شده‪ ،‬با کلیک بر روی‪ ،Add a Dirrectory‬پوشهای که حاوی کد‬
‫موردنظر برای تحلیل میباشد را می توان مشخص نمود‪.‬‬
‫‪62‬‬
‫استفاده از ابزار ‪Understand‬‬
‫‪ -4‬درخواست مشاهده نمودار وابستگی کالسها‬
‫در ابزار ‪Understand‬‬
‫در ادامه برای مشاهده نمودار وابستگی بین کالسها‪ ،‬بر روی پوشهی پروژه کلیک راست کرده‬
‫و سپس به ترتیب گزینههای ‪ Graphical views‬و ‪ Internal Dependencies‬را‬
‫‪63‬‬
‫می توان انتخاب نمود‪.‬‬
‫استخراج مدل ارتباطی کالسها‬
‫‪ -5‬نمایش گراف وزن دار وابستگی بین‬
‫کالسها در ‪Understand‬‬
‫با انجام این کار‪ ،‬نمودار وابستگی بین کالسها مشاهده خواهد شد که بر روی یالهای آن میزان‬
‫وابستگی بین آنها درج شده است‪.‬‬
‫‪64‬‬
‫استخراج ماتریس ارتباطی کالسها‬
‫‪ -6‬ثبت ماتریس وابستگی توسط‬
‫ابزار ‪Understand‬‬
‫نرمافزار ‪ ،Understand‬امکان گرفتن خروجی از این وابستگیها را به فرمت ‪ csv‬در‬
‫اختیار قرار میدهد‪ .‬بدین منظور از منوی ‪ ،Reports‬به ترتیب گزینه های‬
‫‪ Export Matrix CSV ،Class Dependencies ،Dependency‬انتخاب می‬
‫شوند‪.‬‬
‫‪65‬‬
‫استخراج ماتریس ارتباطی کالسها‬
‫‪ -7‬فایل اکسل ماتریس وابستگی کالسها تولیدی‬
‫در ابزار ‪Understand‬‬
‫فایل خروجی با فرمت ‪ ،CSV‬ماتریسی است که سطرها و ستونهای آن نام کالسها و دادههای‬
‫آن‪ ،‬عدد وابستگی بین کالسها را نشان میدهد‪.‬‬
‫‪66‬‬
‫تابع هدف برای خوشه بندی کالسها‬
‫تابع کیفیت ‪Basic MQ‬‬
‫‪ -1‬میزان چسبندگی برای خوشه ‪ i‬مساوی با مجموع وزن لبه های درون خوشه تقسیم بر‬
‫تعداد گره های درون خوشه به توان دو است ‪:‬‬
‫‪i‬‬
‫‪Ni ^ 2‬‬
‫‪‬‬
‫‪Ai‬‬
‫‪ -2‬میزان اتصال بین دو خوشه ‪ i‬و ‪ j‬مساوی با مجموع وزن لبه های بین دو خوشه تقسیم‬
‫بر حاصل دو برابر ضرب تعداد گره های ‪ i‬در تعداد ‪ j‬است ‪:‬‬
‫تابع کیفیت ‪ Basic MQ‬به صورت تفاضل میان میانگین چسبندگی و اتصال محاسبه می شود‪:‬‬
‫‪67‬‬
‫تعیین تابع هدف برای خوشه بندی کالسها‬
‫تابع کیفیت ‪Turbo-MQ‬‬
‫‪ -1‬میزان اتصال برای خوشه ‪ i‬مساوی با مجموع وزن لبه های درون خوشه تقسیم بر‬
‫دوبرابر این مجموع به اضافه وزن اتصالت با سایر خوشه ها ‪:‬‬
‫‪ -2‬میزان کیفیت سریع از رابطه ذیل محاسبه می شود ‪:‬‬
‫تابع کیفیت به عنوان تابع هدف برای سنجش ارزش خوشه بندی مورد استفاده قرار می گیرد‪.‬‬
‫مقدار آن باید ماکزیمم شود‪.‬‬
‫‪68‬‬
‫خوشه بندی کالسها‬
‫ابزار خوشه بندی ‪Bunch‬‬
‫‪ -1‬ورودی ‪ :‬فایل ماتریس ارتباط وزن دار کالسها‬
‫‪ -2‬خروجی ‪ :‬فایل خروجی می تواند متن‪ ،‬عکس یا ‪ .dotty‬باشد‪.‬‬
‫‪ -3‬برای نمایش خروجی می توان از نرم افزار ‪ Graphviz 2.28‬استفاده می توان کرد‬
‫‪69‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫استخراج ساختار معماری با تحلیل ایستا‬
‫تبدیل خروجی ‪ understand‬از فرمت اکسل به ورودی برای‬
‫ابزار ‪Bunch‬‬
‫کسل خروجی ‪ Understand‬را در یک حلقه سطر به سطر خوانده‬
‫با یک برنامه ‪ C#‬می توان فایل ِا ِ‬
‫درون یک ماتریس و در یک فایل ‪ .txt‬ذخیره نمود‪.‬‬
‫نام کالس متناظر با ردیف ‪i‬‬
‫نام کالس متناظر با ستون ‪j‬‬
‫میزان ارتباط ‪ i‬با ‪j‬‬
‫کسل در محیط ‪ visual studio‬نیاز است تا در قسمت‬
‫برای کار کردن با فایل ِا ِ‬
‫‪ references 70‬مربوط به پروژه‪ ،‬مرجع مربوط به ‪ Excel‬را اضافه نمود‪.‬‬
‫استخراج ساختار معماری با تحلیل ایستا‬
‫ابزار ‪Bunch‬‬
‫‪ −‬در پنجرهی اصلی نرمافزار در سربرگ ‪ ،Basic‬ابتدا می بایست مسیر‬
‫مربوط به فایل متنی ‪ .txt‬ایجاد شده به فرمت قابل قبول را برای نرمافزار‬
‫مشخص کرد‪ .‬از طریق دکمهی ‪ Select‬میتوان فایل ورودی را از هر‬
‫مکانی بر روی کامپیوتر خود انتخاب کرد‪.‬‬
‫‪ −‬با دادن فایل ورودی‪ ،‬نرمافزار بطور خودکار فایل خروجی همنام با فایل‬
‫ورودی را در مسیر فایل ورودی ایجاد میکند‪ .‬نوع فایل خروجی میتواند‬
‫متن‪ dotty ،‬و یا عکس باشد‪.‬‬
‫‪71‬‬
‫استخراج ساختار معماری با تحلیل ایستا‬
‫ابزار ‪Bunch‬‬
‫‪ −‬ر سریرگ ‪ Clustering Option‬میتوان تنظیماتی مربوط به عمل خوشهبندی را اعمال‬
‫کرد‪.‬‬
‫‪72‬‬
‫استخراج ساختار معماری با تحلیل ایستا‬
‫ابزار ‪Bunch‬‬
‫با فشردن دکمهی ‪ Run‬نرافزار به طور خودکار خوشهبندی را انجام داده‪،‬‬
‫نتیجه در پنجرهی جدیدی همانند پنجرهی فوق نمایش داده می شود‪..‬‬
‫‪73‬‬
‫ وابستگی بین کالسها‬.txt ‫فایل‬
ab3
ac2
ad8
ba4
bc7
bd1
ca2
cd1
da5
db3
‫ حاصل از کالسترینگ‬.Dot ‫فایل‬
‫استخراج ساختار معماری با تحلیل ایستا‬
digraph G {
size= "10,10";
rotate = 90;
subgraph cluster0 {
label = "(SS-L0):b";
color = black;
style = bold;
Rational Rose
‫ برای نمایش در محیط‬C# ‫ورودی برنامه‬
"d"[label="d",shape=ellipse,color=lightblue,fontcolor=black,style=filled];
"b"[label="b",shape=ellipse,color=lightblue,fontcolor=black,style=filled];
}
subgraph cluster1 {
label = "(SS-L0):a";
color = black;
style = bold;
‫که یک‬
"c"[label="c",shape=ellipse,color=lightblue,fontcolor=black,style=filled];
"a"[label="a",shape=ellipse,color=lightblue,fontcolor=black,style=filled];
}
"b" -> "a" [color=blue,font=6];
"b" -> "d" [color=blue,font=6];
"b" -> "c" [color=blue,font=6];
"a" -> "b" [color=blue,font=6];
"a" -> "d" [color=blue,font=6];
"a" -> "c" [color=blue,font=6];
Bunch ‫ودی‬
‫همراه‬
‫ این فایل‬.‫ دارد‬.dot ‫ قالب بندی‬Bunch
"d"‫ور‬->‫"با‬b"
[color=blue,font=6];
"d" ->‫قطعات‬
"a" [color=blue,font=6];
‫استفاده می شود‬
‫ برای ایجاد مدل‬C# ‫ بود به عنوان ورودی برنامه‬.txt ‫فایل‬
"c" -> "a" [color=blue,font=6];
"c" -> "d" [color=blue,font=6];
}
‫فایل خروجی ابزار‬
74
‫استخراج ساختار معماری با تحلیل ایستا‬
‫ورودی برنامه ‪ C#‬برای نمایش در محیط‬
‫‪Rational Rose‬‬
‫پس از نصب رشنال رز‪ ،‬برای استفاده از واسطی که رشنال در اختیار برنامه‬
‫نویسان قرار داده‪ ،‬موسوم به ‪،RationalRose Extensibility Interface‬‬
‫در پروژه مربوطه در محیط ‪ ، Visual Studio‬توسط گزینه ‪Add‬‬
‫‪ ،reference‬فایل ‪ RationalRose.tlb‬در شاخهی ‪C:\\Program‬‬
‫‪ Files\Rational\Rose‬را به پروژه خود اضافه باید نمود‪.‬‬
‫‪75‬‬
‫استخراج ساختار معماری با تحلیل ایستا‬
Rational Rose
‫ برای نمایش در محیط‬C# ‫برنامه‬
using RationalRose;
RationalRose ‫برررای کررار بررا واسررط‬
‫اضافه میکنیم‬
private void button3_Click(object sender, EventArgs e)
{
Dictionary<string, string> classComp = new Dictionary<string, string>();
String depFile = browseFile.FileName;
String clusFile = browseFile2.FileName;
RationalRose.RoseApplicationClass();
RoseModel rmdl = rsc.NewModel();
RoseApplicationClass rsc = new
RoseClassDiagram mainClassDia = rmdl.RootCategory.AddClassDiagram("class
diagram");
mainClassDia.Visible = true;
‫ نشرران مرریدهررد کرره هررر‬classComp
‫کالسی متعلق به کدام کامپوننت میباشد‬
‫متغیرهررایی کرره نررام فایررل هررای ورودی را‬
‫نگه میدارند‬
‫بررررای شرررروع بررره کرررار برررا نمودارهررررای‬
‫ ابتدا یک مدل از واسرط‬RationalRose
‫آن را توسط خطوط رو به رو میگیریم‬
‫ جهت کشیدن نمرودار‬،‫یک دیاگرام کالس‬
‫وابستگی بین کالسها ایجاد میکنیم‬
76
‫استخراج ساختار معماری با تحلیل ایستا‬
RoseModuleDiagram rModDia =
‫ جهررررت کشرررریدن‬،‫یرررک دیرررراگرام مررررایول‬
rmdl.RootSubsystem.AddModuleDiagram("myModuleDiagram"
‫نمررودار وابسررتگی بررین کامپوننررتهررا ایج راد‬
);
‫میکنیم‬
rModDia.Visible = true
string[] depLines = File.ReadAllLines(depFile);
-‫ کرردن فایرل‬parse ‫متغیرهرایی جهرت‬
string[] clusLines = File.ReadAllLines(clusFile);
RoseModule theModule ;
‫های ورودی‬
‫متغی ررری ک رره ی ررک نمون رره از م رراژول را در خ ررود‬
‫نگه می دارد‬
RoseComponentView rComView;
‫متغیری که با اضافه کردن مایول به نمودار‬
‫ مقداردهی میشود‬componentview
Dictionary<string, RoseModule> catContainer = new
Dictionary<string, RoseModule>();
‫نرام هررر مراژول و مرراژول مربروط برره آن را نگرره‬
Dictionary<string, RoseClass> classContainer = new
Dictionary<string, RoseClass>();
‫نام هر کالس و کالس مربوط بره آن را نگره‬
int clusCounter = 0;
int i = 0 ;
short xPos = 0;
short yPos = 100;
short rowCounter = 1;
‫میدارد‬
‫میدارد‬
‫متغیره ررایی ک رره مک رران م ررازوله ررا در نم ررودار را‬
‫تعیین میکنند‬
77
‫استخراج ساختار معماری با تحلیل ایستا‬
‫نمایش در محیط‬
‫‪78‬‬
‫‪Rational Rose‬‬
‫استخراج ساختار معماری با تحلیل ایستا‬
‫نمایش در محیط‬
‫‪79‬‬
‫‪Rational Rose‬‬
‫استخراج ساختار معماری با تحلیل ایستا‬
‫‪ .1‬استخراج معماری سه لیه از داخل کد برنامه‬
‫لیه ارایه (رابط ها و ‪API‬ها)‬
‫لیه سرویس عملیات‬
‫لیه میان افزار‬
‫‪ .2‬باز سازی معماری جهت افزایش امکان تعامل‪ ،‬استفاده مجدد‪ ،‬انعطاف‬
‫پذیری‪ ،‬توزیع و مسیرهای مجزای تعامل‬
‫‪80‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫استخراج الگوهای طراحی‬
‫جستجو در مدل ارتباطی کالسها برای یافتن زیر گراف الگو‬
‫‪81‬‬
‫الگوی محصول در سیستم مزایده‬
‫مهندسی معکوس کیفیت نرم افزار‬
‫‪82‬‬
‫فاکتورهای سنجش کیفیت‬
.‫جهت سنجش کیفیت می بایست فاکتورهای ذیل را مد نظر قرار داد‬
• The length N of P: N = N1 + N2
• The vocabulary μ of P: μ = μ1 + μ2
• The volume V of P: V = N * log2 μ
• The program difficulty D of P: D = (μ1 ÷ 2) * (N2 ÷ μ2)
• The effort E to generate P is calculated as: E = D * V.
،N2 ‫ تعداد عملوندها‬،N1 : ‫تعداد عملگرها‬
μ2 : ‫ انواع عملوندها‬،μ1 : ‫انواع عملگرها‬
‫ تعداد کامنت ها = سهم توضیحات‬/ (‫)تعداد کل خطوط برنامه‬
• CC: Cyclomatic Complexity
• ECC: Extended Cyclometic Complexity
83
‫قابلیت ترمیم ( ‪(MI‬‬
‫* ‪MI = 171 – 5.2 * ln(aveV) – 0.23 * ECC – 16.2‬‬
‫))‪ln(aveLOC) + 50 * sin(sqrt(2.4 * perCM‬‬
‫در رابطه فوق‪:‬‬
‫‪ Avel‬مقدار میانگین ‪ volume‬در هر پیمانه های برنامه و ‪ ECC‬میانگین پیچیدگی پیشرفته حقوی در حلقه های برنامه‬
‫‪ aveLOC‬متوسط تداد خطوط در پیمانه های برنامه و ‪ PERcm‬میانگین درصد توضیحات در پیمانه های برنامه است‬
‫)نگهداري ضعيف قابليت ( >= ‪MI < 65‬‬
‫ا‬
‫)نگهداري نسبتا خوب قابليت ( >= ‪65 =< MI < 85‬‬
‫)نگهداري عالي قابليت( >= ‪MI >= 85‬‬
‫‪84‬‬
‫مهندس ی معکوس معیارهای کیفی‬
‫با استفاده از مجموعه داده هاي پروژه ‪ KC1‬سازمان فضايي آمریکا‬
‫كه در مخـزن داده اي اين سازمان در آدرس فـوق موج ــود مي باشد‬
‫مدلهای ریاض ی برای ارزیابی معـیارهای کیــفی را می تــوان استخراج‬
‫نمود‪ .‬اين پروژه دربرگي ــرنده ‪ 43‬هزار خط برنامه با كد ‪145 ، C++‬‬
‫ا‬
‫كالس و مجمـوعا داراي ‪ 2107‬متد مربوط به يكي از سيستــمهاي‬
‫زمين ــي سازمان فضایی آمری ــکا است که عملـیات مدیریت ذخیره‬
‫سازی را انجام می دهد‪.‬‬
‫‪85‬‬
‫استخراج مدل رفتاری با پروفایلینگ‬
‫‪ .1‬استخراج گراف جریان کنترلی برنامه‬
‫‪86‬‬
‫استخراج مدل رفتاری با پروفایلینگ‬
‫‪.2‬مستندگذاری‪-‬جهت ثبت وضعیت اجرایی‬
‫‪87‬‬
‫هدف‬
‫ثبت مسیرهای اجرایی قابل استفاده برای ایجاد مدل رفتاری اجرایی برنامه‬
‫روش‬
‫درح فرامین در کد برنامه برای ثبت مقدار تعیین کننده های مسیر اجرایی‬
‫کاربرد‬
‫ اندازه گیري میزان پوشش مسیرهای اجرایی در طی فرایند آزمون‬‫ تشخيص ناهنجاري در جريان داده ها‬‫ مکانيابي خطا‬‫شرط‬
‫تاثیری بر رفتار اصلی برنامه نداشته باشد‬
‫استخراج مدل رفتاری با پروفایلینگ‬
‫‪.2‬مستندگذاری‪-‬جهت ثبت وضعیت اجرایی‬
‫)‪if (!err && count < size‬‬
‫انواع جمله های کمنرلی‬
‫;‪list[count++] = obj‬‬
‫کلمه کلیدی‬
‫نوع جمله‬
‫درج دستورالعمل‬
‫‪else‬‬
‫جمالت حلقه‬
‫‪for, while, do-while‬‬
‫جهت ثبت‬
‫جمالت تصميم گیری‬
‫;)‪unref(obj‬‬
‫‪if-else, switch-case‬‬
‫مقادیر‬
‫جمالت انشعابی‬
‫‪break, continue, label:,‬‬
‫; ‪return count‬‬
‫‪return‬‬
‫ذخیره کردن مقادیرعبارات منطقی موثر بر مسیر اجرایی ‪:‬‬
‫‪ .1‬عبارات کنترلی‬
‫‪88‬‬
‫‪ .2‬مقادیر برگشتی‬
‫ابزار ‪TestCocoon‬درآدرس ‪http://www.coveragemeter.com/download.html‬‬
‫استخراج مدل رفتاری با پروفایلینگ‬
‫‪ .3‬گردآوری داده های حاصل از چندین اجرای برنامه مستند گداری شده‬
‫‪p1‬‬
‫‪p1‬‬
‫‪p2‬‬
‫‪p3‬‬
‫‪p3‬‬
‫‪p4‬‬
‫‪p4‬‬
‫‪p5‬‬
‫‪p6‬‬
‫‪P1P3P4P6P7‬‬
‫‪p7‬‬
‫‪89‬‬
‫‪p2‬‬
‫مسیر اجرایی بدون خطا‬
‫‪P1P2P4P5P7‬‬
‫‪p5‬‬
‫‪p6‬‬
‫‪p7‬‬
‫مسیر اجرایی خطادار‬
‫استخراج مدل رفتاری با پروفایلینگ‬
int main(int argc,char**argv){
int x=0;
int y=0;
int out=0;
x=atoi(argv[1]);
y=atoi(argv[2]);
printf("x=%d,y=%d-->",x,y);
switch (x){
case 1 :
if (y>5)
out=x+y;
else
out=x-y;
break;
case 2 :
if (y>0)
out=x+2*y;
else
out=x*y;
break;
default:
if (y=x){
if (x>5)
out=x*x;
else
out=0;
}else
out=-1;
}
printf("%d\n",out);}
1
2
‫مسیر اجرایی برنامه‬
‫مقابل در داخل گراف‬
‫جریان کنترلی‬
3
4
7
10
8
11
14
12
5
6
9
13
‫نقش مهنسی معکوس در پیشبرد صنایع‬
15
90
‫استخراج مدل رفتاری با پروفایلینگ‬
‫ابزار ‪ TestCocoon‬ازآدرس ‪http://www.coveragemeter.com/download.html‬‬
‫بخش ‪ CoverageScanner‬از نرم افزار ‪ Test Cocoon‬برای مستند گذاری کد برنامه ها است‪.‬‬
‫نیاز به کامپایلر زبان برنامه مستند گذاری شونده است‪.‬‬
‫‪o‬‬
‫‪o‬‬
‫‪o‬‬
‫برای زبان ‪ C‬کامپایلر ‪ gcc‬و برای ‪ C++‬کامپایلرهای‬
‫‪ Visuali Studio® 6.0‬و ‪ .NET‬قابل استفاده هستند‪.‬‬
‫‪o‬‬
‫پس از نصب کامپایلر به مسیر زیر باید ارجاع نمود‪:‬‬
‫‪G++‬‬
‫‪o‬‬
‫و یا ‪ .GNU‬عالوه بر اینها‬
‫®‪Microsoft‬‬
‫‪Start -> Control Panel -> System -> Advanced -> Environment Variables‬‬
‫‪o‬‬
‫و سپس در قسمت ‪ user variables‬یا ‪ system variables‬مسیر مذکور را به متغیر ‪ path‬افزود‪.‬‬
‫‪o‬‬
‫حال می توان مبادرت به نصب بخش ‪ CoverageScanner‬از ‪ Test Cocoon‬نمود‪.‬‬
‫‪91‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫استخراج مدل رفتاری با پروفایلینگ‬
‫استفاده از ‪ CoverageScanner‬برای مستند گذاری برنامه ها ‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫برای کامپایل یک برنامه به زبان ‪C‬با نام ‪ hello.c‬کافیست در خط فرمان‬
‫دستور زیر قرار داده می شود‪.‬‬
‫‪gcc hello.c -o hello‬‬
‫حاال برای فعال شدن برنامه ‪ CoverageScanner‬کافی است تا پیشوند ‪cs‬‬
‫را به ابتدای ‪ gcc‬یا هر کامپایلر مورد استفاده اضافه شود‪:‬‬
‫‪csgcc hello.c -o hello‬‬
‫در دستورالعمل ذیل سوییچ زرد رنگ به مفهوم مستند گذاری کامل است «‬
‫‪csgcc --cs-keep-instrumentation-files D:\program.c‬‬
‫‪csgcc --cs-keep-instrumentation-files D:\program.c‬‬
‫‪92‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫استخراج مدل رفتاری با پروفایلینگ‬
‫‪ .4‬آموزش مدل با استفاده از داده های گردآوری شده‬
‫‪P3‬‬
‫‪P2‬‬
‫اجرای‬
‫موفق‬
‫مدل ‪ SVM‬ایجاد شده در این شکل‬
‫وابسته به مقادیر ‪ P2 ،P1‬و ‪P3‬‬
‫در زمان اجرا و در هر نقطه ای پیش‬
‫بینی می کند که آیا برنامه در مسیر‬
‫اجرایی صحیح و یا غلط می باشد‪.‬‬
‫‪P1‬‬
‫‪93‬‬
‫طبقه بندی رفتارهای موفق (امن) و ناموفق (ناامن) نرم افزار‬
‫اگر هر کدام از رفتارهای یک برنامه را به صورت یک نقطه در فضا نمایش دهیم‪،‬‬
‫می توان مدلی برای طبقه بندی آنها ایجاد کرد‬
‫اجرای‬
‫ناموفق‬
‫استخراج مدل رفتاری با پروفایلینگ‬
‫‪ .5‬استفاده از مدل برای پیش بینی مسیر اجرایی غلط در زمان اجرا‬
‫‪P1‬‬
‫‪P3‬‬
‫‪P6‬‬
‫‪P2‬‬
‫‪P5‬‬
‫‪P8‬‬
‫‪P7‬‬
‫‪P9‬‬
‫‪94‬‬
‫‪P4‬‬
‫مقایسه مسیر‬
‫اجرایی تا ‪ P5‬با‬
‫بردارهای پشتیبانی‬
‫جهت تشخیص‬
‫اینکه مسیر اجرایی‬
‫متعلق به فضای‬
‫اجراهای موفق یا‬
‫ناموفق است‪.‬‬
‫ابزار رایج برای آموزش مدل‬
‫‪ ‬ابزار آماری ‪SAS‬‬
‫‪ ‬ابزار آماری ‪SPSS‬‬
‫‪ ‬ابزار آماری ‪R‬‬
‫‪ ‬ابزار داده کاوی ‪WEKA‬‬
‫‪ ‬ابزار داده کاوی ‪RAPIDMINER‬‬
‫‪ ‬ابزار داده کاوی ‪ORANGE‬‬
‫‪ ‬ابزار داده کاوی ‪CLEMENTINE‬‬
‫‪MATLAB 95‬‬
‫سطوح مهندس ی معکوس‬
‫‪ .1‬مهندس ی معکوس کد باینری‬
‫‪ -2‬مهندس ی معکوس متن برنامه ها‬
‫‪ -3‬مهندس ی معکوس داده ها‬
‫‪96‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫مهندسی معکوس داده ها‪ -‬روشها‬
‫]‪And [descriptive‬‬
‫‪97‬‬
‫مهندسی معکوس داده ها‬
‫مهندس ی معکوس داده ها متمرکز بر استخراج ساختار و طرح پایگاه داده ها و‬
‫جداول مربوطه ئ ساختمان داده ها می باشد‪ .‬شامل روشها و ابزارهایی است‬
‫که به سازمان کمک می کند تا ساختار فیزیکی و منطفی‪ ،‬مفهوم و عملیات بر روی‬
‫داده ها را از داده های موجود استخراج و مدل جامعی ایجاد نماید‪.‬‬
‫تحلیل رگرسیونی‬
‫‪98‬‬
‫مهندس ی مجدد‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫‪.5‬‬
‫‪.6‬‬
‫‪.7‬‬
‫‪99‬‬
‫بازسازی خودکار ساختار نرم افزار‬
‫بازیابی طرح برنامه ها‬
‫انتقال سیستم های قدیمی به بسترهای جدید‬
‫تبدیل خودکار‬
‫تبدیل نیمه خودکار‬
‫مهندس ی معکوس و رو به جلوی کد‬
‫مهندس ی معکوس داده ها و اسکیما‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫مهندس ی مجدد ‪ :‬تبدیل برنامه ها‬
‫‪ .1‬تبدیل خودکاراجزا برنامه به وب سرویس‬
‫‪ .2‬تبدیل خودکار‬
‫ برنامه ترتیبی به برنامه توزیعی‬‫‪ -‬برنامه ترتیبی به برنامه چند نخی‬
‫‪100‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫کاربرد مهندس ی معکوس در ايجاد سازمانهای مجازی‬
‫آب‬
‫برق‬
‫عوارض‬
‫گاز‬
‫تلفن همراه‬
‫تلفن منزل‬
‫‪101‬‬
‫حاکميت ‪ IT‬تفکر ‪ IT‬ميخواهد‪ ،‬سرويسهايي که سازمانها ميدهند جدا جدا است‪.‬‬
‫لفافه بندی برنامه ها با کوربا‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪.4‬‬
‫با استفاده از راه کارهای مهندس ی معکوس برنامه جهت تشخیص‬
‫قطعات توزیع شونده خوشه بندی می شود‪.‬‬
‫تشخیص امضاء رابط بین مولفه ها و ذخیره سازی امضا ها در قالب‬
‫مستندات ٍاکس ٍٍٍام ال با استفاده از یک ابزار ‪IDL‬‬
‫ایجاد ‪ CORBA/IDL‬بر اساس مستندات اکس ام ال ایجاد شده‬
‫کامپایل برنامه ها‬
‫قطعه توزیع شده‬
‫‪102‬‬
‫برنامه ترتیبی‬
‫لفافه بندی در سطح سازمان‬
‫‪ -1‬برنامه کنترل کننده بر روی سرویس دهنده وب فعال می شود‬
‫‪ -2‬ارتباط با برنامه ها از طریق مرورگرهای وب‬
‫‪103‬‬
‫‪ -3‬مولفه های برقرار کنند ه ارتباط در محیط کامپیوتر میزبان‬
‫تبدیل خودکار برنامه ترتیبی به توزیعی‬
‫مراحل اصلی‬
Class
Java Source Dependency Weighted
Cluster i
Cluster j
Class C
Class B
Class A
Class C
Class B
Class A
Partitioned
Port
7
Synchronizer Object manager
Port
Synchroniz
er
Object
manager
4
3
Call graph
Extraction
3
Distribution
Gains
Clustering
Engine
Distributed Code
Data Dependency
Analysis
Connector
Connector
CORBA Infrastructure
Component
Generator
Modify
Source
104
‫تبدیل خودکار برنامه ترتیبی به توزیعی‬
Optimal Partitioning
Class A
Class B
---------
TS
Class
A
i=a.m()
---------------------------Clustering
Use( i )
Tc
Criterion:Td
Tc
T=∑ S(ci,cj)
SpeedUp A..B
, where the amount of speed
up between clusters Ci and cj
TSerial :Ts + S(c
Td i,cj)=speedupai,bj /n
is the
average of speedups for
m( )
{
------------------------------return i;
}
Class
B
TAsynch: max(T
,2T
Any s
two
classes
in
SpeedUp
A..E
c+T
d)the clusters
Class
Sm = TSerial
C - TAsynch
SpeedUp
D..E
Speedup
A,B =
Class
SpeedUp B..E
ΣSm , for calls to m
1
... mn
SpeedUp D..E
Class
E
105
‫تبدیل خودکار برنامه ترتیبی به توزیعی‬
Cluster 2
Cluster 1
Class B
Class A
B b=new B();
b.m(p);
Handle b=Cluster2ObjectManager.CreateObject(“B”)
m(P p ){
…
}
Port1.B.m(b,p);
Port1
Static class Port1{
Static class B {
Void m (Handle h, P p ) {
Connector.SendEvent(“B”,h,”m”,p);
….
Port2
Static class Port2{
Static class B {
Void m (Handle h, parlist ){
B b=(B)ObjectManager.GetObject(h)
b.m(parlist);
…
106
….
‫زمینه های تحقیقاتی‬
‫‪ ‬ایجاد روشها و ابزاری برای استخراج و مدلسازی طرح برنامه ها‬
‫و ارتباط بین طرح و پیاده سازی به قسمی که بتوان هر بخش از‬
‫طراحی تا پیاده سازی را به سادگی جایگزین و اصالح نمود‪.‬‬
‫‪ ‬درج دستورالعمل هایی در کد که کار استخراج و تحلیل مدلهای‬
‫تحلیل و طراحی را ساده نماید‪.‬‬
‫‪ ‬ایجاد امکاناتی برای بازیابی ساختار جدول ها‪ ،‬مدل پایگاه داده‬
‫و عملیات بر روی پایگاه داده ها‪.‬‬
‫‪107‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫زمینه های تحقیقاتی‬
‫‪ ‬ایجاد امکان بکارگیری ابزار مهندسی معکوس همگام با‬
‫تولید نرم افزار‪.‬‬
‫‪ ‬ایجاد ابزاری برای استخراج و بازسازی سریع معماری‬
‫نرم افزار‪.‬‬
‫‪108‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬
‫‪109‬‬
‫نقش مهنسی معکوس در پیشبرد صنایع‬

similar documents