اگه علاقمند به حوزه مهندسی معکوس باشید ، قطعا با برنامه های مختلف دیس اسمبلر ، دیکامپایلر و … کار کردید. در این پست به بررسی یکی از این برنامه ها بنام Relyze ،پرداختیم.
اغلب کسایی که در زمینه مهندسی معکوس فعالیت دارن به دیس اسمبلر و دیباگر و … خاصی عادت میکنن و از تست و بررسی سایر موارد خودداری میکنن، اما تست و بررسی موارد مختلف گاهی اوقات میتونه کمک کننده باشه. مثلا گاهی اوقات pseudo code یه دیس اسمبلر نسبت به دیس اسمبلر دیگه میتونه بهتر و خواناتر باشه و … .
برنامه Relyze ویژگی ها و امکانات مختلفی رو برای مهندسین معکوس فراهم کرده و دارای دو نسخه 32 بیتی و 64 بیتی برای ویندوز هستش. برخی از این ویژگی ها عبارتند از:
قابلیت آنالیز و بررسی فایلهای ELF و PE : معماریهای x86 و x64 و ARM32 و ARM64 رو پوشش میده. همچنین برای آنالیز بیشتر امکان استفاده از سیمبولها با فرمت PDB و embedded COFF و STAB و TDS و MAP رو داره.
ویژگی First look : وقتی یه فایلی رو وارد برنامه میکنیم یه نمای کلی از برنامه میده. این نمای کلی شامل اطلاعاتی مانند هش فایل ، اطلاعاتی که داخل برنامه قرار گرفته، ویژگی های امنیتی برنامه ، نمودار آنتروپی ، اطلاعات تجزیه و تحلیل ، گواهی های امنیتی برنامه و … هستش.
نمایش گرافیکی : ارائه نمودار آنتروپی که استفاده از این نمودار میتونید داده های پک شده و رمزنگاری شده و ناهنجار رو بدست بیارید. این نمودار بصورت تعاملی ایجاد شده یعنی هرجاش که خواستید اطلاعات بیشتری کسب کنید ، میتونید وارد بخش مربوطه در ساختار کد برنامه بشید. برنامه همچنین نمایش گراف جریان برنامه ، فراخوانی توابع رو هم داره. همچنین میتونید یک مسیر در برنامه ایجاد کنید. یعنی مثلا شما میخوایید بررسی کنید که از ابتدای برنامه چه مسیری طی میشه تا برسه به یه تابع خاص برسه. با توجه به اینکه از DirectX برای نمایش گرافها استفاده میکنه در مواجه با فایلهای بزرگ دچار مشکل نمیشه.
بررسی ساختار فایلها: برنامه امکان بررسی ساختار فایلها با ارائه هگز ادیتور ، دیکدر و جستجوی پیشرفته در اختیارتون قرار میده. همچنین امکان توسعه دیکدر شخصی رو هم داره.
دیکامپایلر : برنامه یه دیکامپایلر داره که کدهای native در معماریهای x86 و x64 و ARM32 وARM64 رو به شبه کد (pseudo code) تبدیل میکنه تا فرایند درک عملکرد برنامه ساده تر باشه.
قابلیت Binary Diffing : برنامه امکان مقایسه باینری ها رو برای درک تغییرات بینشون رو فراهم میکنه. همچنین امکان استفاده از Pseudocode برای این ویژگی هم در دسترس هست. یعنی شما میتونید دو کد دیکامپایل شده رو با هم بررسی کنید.
قابلیت Multi Thread : با استفاده از این ویژگی ، برنامه از تمام پتانسیل پردازنده استفاده میکنه و در نتیجه در برابر فایلهای بزرگ با مشکل مواجه نمیشه.
قابلیت ویرایش کد : برنامه امکان ویرایش و تغییر کد رو در اختیارتون قرار میده و بعد از تغییرات هم ، اونهارو به آنالیزش اضافه میکنه.
قابلیت آنالیز توابع: برنامه توابع و پارامترهای اون و همچنین متغییرهای محلی اون رو آنالیز و به شکل مناسبی نمایش میده و قابلیت تعامل با اون رو در اختیارتون قرار میده.
قابلیت جستجوی همه چیز : امکان جستجو در بخش های مختلف مانند رشته ها ، سگمنتها ، importها ، exportها ، توابع ، bookmark و … داره.
قابلیت شناسایی نوع داده ها : امکان شناسایی و تجزیه و تحلیل خودکار نوع داده ها رو در اختیارتون قرار میده. این نوعها میتونه از نوع اولیه تا پیچیده باشن. میتونید با وارد کردن هدرهای C/C++ نوع داده های اونها رو تعریف کنید.
قابلیت حالت نمایش آدرسها : قابلیت نمایش برنامه براساس relative virtual addresses و virtual addresses داره. ویژگی تنظیم virtual base address جدید ، در مواجه با ASLR میتونه کمک کننده باشه.
قابلیت پلاگین نویسی : یه فریمورک پلاگین روبی رو در اختیارتون قرار میده تا ویژگی های جدیدی رو به برنامه و فرایند تجزیه و تحلیلتون اضافه کنید.
پشتیبانی از کامندلاین: قابلیت اجرای آنالیز و پلاگین از طریق کامند لاین رو هم داره.
علاوه بر موارد بالا ، در نسخه 4 این برنامه اعلام شده که برنامه بصورت رایگان در دسترس عموم هستش.
حداقل سیستم مورد نیاز برای استفاده از این برنامه :
- سیستم عامل ویندوز
- حداقل 4 گیگ رم
- حداقل 300 مگ هارد
اگه علاقمند به استفاده از relyze هستید ، میتونید از اینجا دانلودش کنید.