کتاب الکترونیکی Practical Binary Analysis
دانلود کتاب آموزشی Practical Binary Analysis
تحلیل کاربردی باینری
همانطور که میدانید اکثر برنامههای کامپیوتر به زبان C یا C++ نوشته شده است که امکان راهاندازی مستقیم این برنامهها وجود ندارد. بنابراین برای این که بتوانید از آنها استفاده کنید باید ابتدا آنها را در کد ماشینی اجرای باینری (دودویی) که کامپیوتر توان خواندن آن را دارد، ذخیره کنید. اما پرسش این است که چگونه میتوانید متوجه شوید که برنامهی ذخیره سازی شده همان نشانههایی را دارد که منبع پیشرفته دارای آن است؟ پاسخ مشخص است. نمیدانید.
فاصلهی بسیار زیادی میان زبانهای پیشرفته و کد ماشینی باینری وجود دارد که بسیاری از افراد نمیدانند بدرستی چه کاری باید در این زمینه انجام بدهند. حتی بسیاری از برنامهنویسان، دانش محدودی در این زمینه دارند، این که برنامهی آنها در پایینترین سطح، به چه شکل کار میکند؛ بنابراین و به خاطر این دانش محدود، به سادگی مطمئن میشوند که برنامهی ذخیره شدهی انها با مقاصد مورد نظرشان تناسب و همخوانی دارد. در نتیجه، بسیاری از باگهای ذخیرهسازی، اشکالات جزئی اجرایی، در سطح باینری پنهان، پارازیتهای بد و مخرب، ممکن است مورد غفلت قرار بگیرد.
حتی بدتر این که تعداد بیشماری از برنامههای باینری ، کتابخانهها، بانکها و سیستمهای پایهگذاری شده، وجود دارد که کد منبع آنها مدتهاست که از دسترس خارج شده است و یا دیگر متناسب بودن خود را از دست داده است. این به آن معناست که ممکن نیست برنامهها و کتابخانهها و یا ارزیابی امنیت آنها با استفاده از روشهای قراردادی در سطح منبع، مطابقت پیدا کند. این یک مشکل واقعی برای شرکتهای مهم نرمافزاری است. همانطور که محصول جدید مایکروسافت در برنامهی اکویشن ادیتور Equation Editor که یک کد باینری ترکیبی و سرهم شده است به عنوان یک حائل (بافر) اضافه در این برنامه، خود را نشان داد.
شما در این کتاب یاد میگیرید چگونه در سطح باینری، برنامهها را آنالیز و حتی تعیین کنید. فرقی ندارد که شما چه کسی هستید، یک هکر، یا یک محقق امنیتی، یک تحلیلگر بدافزار، یک برنامهنویس و یا یک علاقهمند ساده. این تکنیکها این امکان را به شما میدهد که کنترل بیشتری بر روی برنامههای باینری که هر روز آنها را ایجاد، و از آنها استفاده میکنید، داشته باشید.
تحلیل باینری چیست؟
تحلیل باینری یک علم و هنر است. علم و هنرِ تحلیل امکانات برنامههای باینری کامپیوتر که کد ماشینی و دادههای آن، باینری نامیده میشود. بطور خلاصه، هدف تمام تحلیلهای باینری این است که امکانات واقعی برنامههای باینری را در صورت امکان مشخص کند و به عبارت سادهتر ببیند ما چه انتظاراتی از آنها داریم و آنها واقعاً چه کارایی خاصی دارند؟ بسیاری از افراد، تحلیل باینری را با مهندسی معکوس و پیادهسازی مرتبط میدانند که این نظر تاحدودی درست است. جداسازی یا پیاده سازی، گام اولیه در بسیاری از شکلهای تحلیل باینری محسوب میشود و مهندسی معکوس، یک روش متداول برای استفاده از تحلیل باینری است و حتی تنها راه برای ثبت کردن میزان تناسب آن با عملکرد نرمافزار و بدافزار است. به هرحال، شاخهی تحلیل باینری، مسائلی بسیار بیش از این را در برمیگیرد. به عنوان مثال تکنیکهای استاتیک دلیل خوبی برای آنالیز باینری بدون نیاز به راهاندازی سیستم است. این روش از چندین مزیت برخوردار است. مثلاً این امکان و پتانسیل وجود دارد که تمام تحلیلهای باینری در یک مرحله انجام شود و برای انجام آن نیازی به سی پی یو CPU که روش باینری را راهاندازی میکند، نیست.
دیدگاهتان را بنویسید