تور لحظه آخری
امروز : دوشنبه ، 12 آذر 1403    احادیث و روایات:  امام علی (ع):خدا داناست به هر رازى كه مردم در دل نهان داشته اند، و به نجواى آهسته رازگويان و به هر...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

صرافی ارکی چنج

صرافی rkchange

سایبان ماشین

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

پی جو مشاغل برتر شیراز

آراد برندینگ

خرید یخچال خارجی

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

قیمت سرور dl380 g10

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

پوستر آنلاین

بهترین وکیل کرج

بهترین وکیل تهران

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

ساختمان پزشکان

محصولات فوراور

خرید سرور اچ پی ماهان شبکه

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

خرید سرور مجازی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

لوله و اتصالات آذین

قرص گلوریا

نمایندگی دوو در کرج

خرید نهال سیب

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

رفع تاری و تشخیص پلاک

پرگابالین

دوره آموزش باریستا

مهاجرت به آلمان

بهترین قالیشویی تهران

بورس کارتریج پرینتر در تهران

تشریفات روناک

 






آمار وبسایت

 تعداد کل بازدیدها : 1836813251




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

مهندسی معکوس (Reverse Engineering) -


واضح آرشیو وب فارسی:سایت ریسک: مهندسی معکوس (Reverse Engineering) ab.mahmoodi 16 ارديبهشت 1387, 07:58مهندسی معکوس (Reverse Engineering) مجموعه ای حساس از تکنیکها و ابزارها برای فهمیدن اینکه محتوای یک نرم افزار شامل چه چیزهایی میباشد. به عبارت دیگر عمل تجزیه و تحلیل یک سیستم برای مشخص کردن مولفه های سیستم و رابطه متقابل آنها به منظور نمایش سیستم به شکلی دیگر یا در سطحی بالاتر میباشد. این نوع تکنیکها باعث میشود تا ساختار یک نرم افزار را نمایان نموده و راههای عملکرد آن و همچنین ویژگیهایی که طبق آن حرکت میکند را مشخص کنیم. در واقع مهندسی معکوس زمانیکه شخصی کد شخص دیگری را کاوش کند نیز اتفاق می افتد. بحث در مورد علم مهندسی معکوس از سال 1990 میلادی آغاز شده و در بعضی مجله های علمی مثل IEEE Software به صورت یک طبقه بندی علمی از آن صحبت میشود. آیا شما مهندسی معکوس را نادیده میگیرید؟ فرض کنید شما نرم افزاری را توسعه داده و به فروش رسانده اید! آیا نمیخواهید دیگران به حقوق کپی (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: به دست آوردن اطلاعات کامل و جزیی روی قسمتی از کد برنامه. ابزارهای System Monitoring برای بخش System Level ابزارهایی نیاز است که به وسیله آنها اطلاعات کلی در مورد برنامه (فایل اجرایی) را در اختیار قرار میدهد که معمولاً این اطلاعات توسط سیستم عامل ایجاد میگردد براي مثال مشخص ميگردد كه نرم افزار با چه ابزاري توسعه داده شده يا با چه ابزاري Protect شده است. ابزارهای Code Level Disassembler ابزاری است که یک فایل اجرایی را دریافت نموده و یک فایل متنی که شامل کدهای زبان Assembly که مربوط به قسمتهای مختلف برنامه است را تولید میکند. Disassembler های پیشرفته یکی از ابزارهای کلیدی مهندسی معکوس به شمار میروند. Debugger Debugger برنامه ای است که به توسعه دهنده (Developer) اجازه می دهد برنامه را در حال اجرا مشاهده نماید. Debugger یکی از مهمترین ابزارهای مهندسی معکوس بوده که از یک Disassembler برای برگرداندن کدها به زبان اسمبلی استفاده مینماید. زمانیکه یک فایل اجرایی با استفاده از یک Debugger باز میشود حالت Register های CPU، محتویات حافظه و Stack های فعال قابل مشاهده هستند. ویژگی های مهم Debugger ها : Disassembler قدرتمند: یکی از ویژگیهای مهم و لازم برای هر Debugger بوده به طوریکه محتوای فایل اجرایی به وضوح قابل مشاهده میباشد. همچنین متدهای برنامه قابل تجزیه و تحلیل بوده و Trace کردن آنها ساده میشوند. Breakpoint های سخت افزاری و نرم افزاری: یکی دیگر از ویژگیهای مهم Debugger ها بوده و هر Debugger دارای این ویژگی میباشد. Breakpoint های نرم افزاری دستوراتی هستند که در زمان اجرا (Runtime) توسط Debugger به برنامه اضافه میشوند و باعث میشوند اجرای برنامه توسط پردازشگر متوقف شده و کنترل برنامه به Debugger سپرده میشود. Breakpoint های سخت افزاری یکی از قابلیتهای ویژه CPU بوده که به پردازشگر اجازه میدهد اجرای برنامه را متوقف کرده و کنترل آنرا به Debugger منتقل نماید و زمانی اتفاق می افتد که یک آدرس از حافظه مورد دسترسی قرار گیرد. دیدن Register ها و حافظه: یکی از قابلیتهای خوب Debugger ها دیدن Register ها و محتوای حافظه سیستم میباشد. اطلاعات Process : یکی از قابلیتهای بسیار مفید Debugger ها دیدن جزییات Process ها در حال Debug کردن میباشد. دیدن ماجول های قابل اجرا و یا Thread هایی که در حال اجرا هستند را امکان پذیر میسازد. انواع Debugger 1-User Mode Debugger بیشتر Debugger ها از این نوع هستند. این نوع Debugger ها برنامه هایی هستند که به Process های دیگر متصل شده و کنترل آنرا در دست میگیرند. مزیت دیگر آنها نصب و استفاده آسان از آنها میباشد. از طرف دیگر User Mode Debugger ها فقط میتوانند با یک Process کار کنند و کدهای User Mode درون آن Process را ببینند. گاهی اوقات شما با استفاده از این نوع Debugger برنامه ای را باز میکنید که چندین Process را شامل میشود که به نوعی به هم متصل هستند. در اینطور موارد شما ممکن است ندانید کد مورد نظر شما در کدام Process اجرا میشود. User Mode Debugger ها معمولاً مشکل خاصی ایجاد نمیکنند مگر اینکه برنامه ای که در حال Debug شدن میباشد دارای مولفه های Kernel Mode باشد (همانند Device Driver). بعضی از این نوع Debugger ها عبارتند از : -OllyDbg این Debugger توسط Oleh Yuschuk ساخته شده که شاید یکی از بهترین ها در نوع خود باشد، این Debugger دارای یک Disassembler بسیار قدرتمند بوده که برای افرادی که در زمینه مهندسی معکوس در سطح مبتدی هستند بسیار مناسب میباشد.وجود Analyzer در این Debugger باعث میشود که حلقه های تکرار و شرطها (for، switchو ...) و همچنین پارامترهای متدها به راحتی قابل تشخیص باشد. OllyDbg دارای امکان patching نیز میباشد به این ترتیب که میتوان تغییراتی در فایل اجرایی ایجاد نموده و آنرا ذخیزه نمود. این ابزار کاملا رایگان بوده و از سایت قابل دریافت میباشد. -WinDbg یک Debugger رایگان بوده که سازنده آن شرکت Microsoft میباشد. در حالیکه تعدادی از ویژگیهای آن از طریق رابط کاربر قابل دسترسی هستند، دارای یک کنترلگر دستوری نیز میباشد. دارا ی یک Disassembler ضعیف بوده و امکانات دیگر آن نیز چندان برای کاربران ساده نیست. () -IDA Pro یک User Mode Debugger است که دارای Assembler بسیار قدرتمند و همچنین امکانات Debug فراوان میباشد و میتوان گفت از قدرتمندترین Debuggerها میباشد. این Debugger رایگان نبوده ولی میتوان از نسخه های Trial آن استفاده نمود. Debuggerهای Kernel Mode ... Decompiler Decompilerیک سطح بالاتر از Disassembler میباشد. Decompiler یک فایل اجرایی را به عنوان ورودی دریافت نموده و سعی میکند کد سطح بالا را از آن تولید کند. با توجه به اینکه فایل اجرایی با چه ابزاری تولید شده باشد معمولاً Decompile کردن آنها غیر ممکن است. ... شرکت منشور سیمین () () ()




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 519]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن