Table of Contents
چه کسانی و چه کسانی هستند؟
تجزیه و تحلیل نرم افزار اختصاصی بدون دسترسی به کد منبع آن اغلب به ابزارهای تخصصی نیاز دارد. [] گردآورنده ها و decompilers دو دسته از ابزارهای مهندسی معکوس هستند که به محققان، تحلیلگران امنیتی و توسعه دهندگان اجازه می دهد تا باینری های اجرایی را در سطوح مختلف انتزاع بررسی کنند.ALT:0disaser [FLT 1] کد ماشین را می خواند و آن را به دستورالعمل های پیام رسانی زبان جمع آوری شده توسط یک نرم افزار واحد کد پایین، که نه به عنوان یک تابع یک تابع یک تابع یک تابع یک تابع یک تابع یک تابع یک تابع یک تابع یک تابع از یک تابع یک تابع یک تابع یک تابع یک تابع از یک تابع از یک تابع از یک تابع یک فایل کد دودویی کد.
چگونه Dissemblers کار می کند
جداکننده ها به طور مستقیم بر فایل های باینری -PE، ELF، Mach-O یا تصاویر سیستم عامل خام - با تجزیه بایت های دستورالعمل و نقشه برداری آنها به دایرکتوری های مرتبط خود [FPLI] نیز به طور گسترده ای به سیستم های دستورالعمل تنظیم شده پردازنده (ISA)، مانند x86، ARM یا MIPS، دستورالعمل های شناسایی خطی (Fcurying) برای پردازش فایل های پردازش شده (Ffollow) یا رمزگشایی دقیق تر (مانند پردازش) استفاده می کنند.
چگونه Decompilers کار می کند
Decompilers ترکیب اختلاف با تجزیه و تحلیل عبور می کند تا سطح انتزاع را افزایش دهد.اول، آنها باینری را جمع آوری می کنند، سپس تجزیه و تحلیل جریان کنترل را برای ساخت یک نمودار جریان کنترل (CFG) و تجزیه و تحلیل جریان داده برای ردیابی استفاده متغیر و انواع تطبیق و تجزیه و تحلیل های اوورistic برای بازسازی ساختارهای سطح بالا معمولی اعمال می شود: بلوک های کاملاً ساخته شده (من می تواند به عنوان یک تابع متغیر و تجزیه و نقل قول های پیکربندی شده، معمولاً تغییر نام داده شود.
استفاده از Disassemblers و Decompilers در عمل
تحلیل امنیت و تحقیقات آسیب پذیری
متخصصان امنیتی به طور معمول از disassemblers و decompilers برای حسابرسی نرم افزار اختصاصی برای نقاط ضعف استفاده می کنند.با بررسی باینری، آنها می توانند اشکالات حافظه فساد، اعتبار ورودی نامناسب یا اعتبار نامه های کد نویسی سخت را شناسایی کنند - مانند کشف آسیب پذیری قلب در OpenSSL یا backdoors در سیستم عامل - اغلب با تجزیه و تحلیل باینری شروع شد.com کد گذاری شده به درک توابع پیچیده از تحلیلگران کمک می کند.
تحلیل بدافزار
نمونه های مخرب تقریبا هرگز با کد منبع توزیع نمی شوند. تحلیلگران به گردآورنده ها برای درک محموله های مخرب، شناسایی روتین های رمزنگاری و ردیابی ارتباطات فرمان و کنترل کننده وابسته هستند. Decompilers این کار را با تبدیل کردن blob های باینری مبهم به یک ابزار نمایندگی کد نویسی غیر قابل کنترل تر مانند Radar2] تسریع می کنند و [F1]
بازیابی کد منبع گمشده یا میراث
سازمان هایی که نرم افزار باستانی را حفظ می کنند، گاهی اوقات منبع اصلی را به دلیل کنترل نسخه ضعیف یا گردش پرسنل ضعیف از دست می دهند. Decompilation می تواند به بازسازی یک معادل عملکردی از پایه کد کمک کند، اجازه می دهد تا تعمیر و نگهداری یا پورت کردن به سیستم عامل های مدرن امکان پذیر باشد.
یادگیری الگوریتم های تبلیغاتی و Interoperability
رقبا یا پروژه های منبع باز ممکن است نیاز به همکاری با پروتکل های اختصاصی یا فرمت های فایل داشته باشند.تجمع کردن باینری مربوطه نشان می دهد ساختار الگوریتم، فرمت های داده و ماشین های دولتی است که در توسعه جایگزین های سازگار برای نرم افزار میراث به طور مشابه رایج است، توسعه دهندگان مایل به نوشتن افزونه ها یا برنامه های منبع بسته اغلب باید رابط های باینری معکوس را معکوس کنند.
گردآورنده های محبوب و Decompilers
IDA Pro (مشارکت فعال)
IDA Pro استاندارد de facto برای تجزیه و تحلیل باینری است.از ده ها معماری CPU پشتیبانی می کند، یک رابط اسکریپتینگ قدرتمند (IDAPython) را ارائه می دهد و با پلاگین Hex-Rays decompiler ادغام می شود.من مرجع، دیدگاه های گراف و کنفدراسیون آن را یک پلت فرم جامع برای هر دو disassembly و decomilation نرم افزار استفاده می کند (I) نسخه رایگان است.
Ghidra
توسعه یافته توسط آژانس امنیت ملی و آزاد به عنوان منبع باز، Ghidra رقبا IDA در بسیاری از جهات، آن را شامل یک decompiler ساخته شده، یک API برنامه ریزی شده (Python یا جاوا)، و ویژگی های تجزیه و تحلیل مشترک است. GhidraLThiler به ویژه برای x86، ARM و PowerPC Binaries قوی است.
رادار
Radare2 یک چارچوب مهندسی معکوس هدایت شده است که ارائه می دهد ناهمگونی، decompilation (از طریق یا پلاگین ها])، و قابلیت های اشکال زدایی بسیار مدولار و اسکریپت، آن را ایده آل برای اتوماسیون و ادغام به خط لوله تجزیه و تحلیل بزرگتر است. Radare2 رایگان و منبع باز است.
Hex-Rays Decompiler
Hex-Rays یک پلاگین تجاری Decompiler برای IDA Pro است که از x86، x64، ARM و PowerPC پشتیبانی می کند، به طور قابل توجهی کد شبه کد C مانند تمیز را تولید می کند و به طور گسترده به عنوان دقیق ترین دکپیلر در دسترس است. بسیاری از شرکت های امنیتی و محققان آسیب پذیری Hex-Ray را ضروری برای گردش کار خود می دانند.
سایر ابزارهای غیر قابل اعتماد
- [LOS و Linux] - هر دو اختلاف و بی نظیری را با یک GUI کاربر پسند ارائه می دهد.
- نینجای داخلی - یک پلت فرم مهندسی مدرن معکوس با تمرکز بر قابلیت استفاده و یک زبان متوسط قوی است.
- [[۱] [۱۰] [[۱۰]] [FLT: ۱] و readelf [GNU Binutils] - گردآورنده های پایه برای بازرسی سریع در سیستم های یونیکس.
چالش ها و محدودیت ها
پیچیدگی کد تکمیل شده
بهینه سازی های Compiler (در اصل، حلقه بدون ثبت، هش ثابت) کد ماشین را تولید می کند که به طور قابل توجهی از منبع اصلی جدا می شود. Decompilers باید معانی سطح بالا را از توالی های سطح پایین بازسازی کند، که می تواند منجر به خروجی مبهم یا نادرست شود. - مانند بسته بندی های مجازی، کنترل صاف، و تجزیه و تحلیل پیچیده -
قانونی بودن و مجوز
نرم افزار اختصاصی مهندسی معکوس به طور قانونی در بسیاری از حوزه های قضایی محدود شده است.قانون کپی رایت دیجیتال (DMCA) در ایالات متحده، دستورالعمل کپی رایت اتحادیه اروپا، و قوانین مشابه در سراسر جهان شامل مقرراتی است که ممکن است مهندسی معکوس برای همکاری، تحقیقات امنیتی یا آموزش الکترونیکی را معاف کنند، اما مرزها همیشه قبل از جدا کردن یا تجزیه و تحلیل یک محصول شما یا اجازه کلی مفید است.
خروجی کامل
گردآورندگان نمی توانند تمام مسیرهای کد را مدیریت کنند (به عنوان مثال، پرش های غیرمستقیم از طریق آدرس های محاسبه شده)، و Decompilers ممکن است نتوانند ساختارهای داده پیچیده یا توابع خط را بازسازی کنند. خروجی اغلب نیاز به اصلاح دستی و اشاره دارد. تحلیلگران تجربه توسعه مدل های ذهنی از برنامه با متناوب بین دیدگاه های پراکنده و گیج کننده.
چارچوب حقوقی و اخلاقی
با استفاده از اختلافات و اخراج کنندگان بدون مجوز می تواند قراردادها یا قوانین حق تکثیر را نقض کند، با این حال، چندین بندر امن قانونی وجود دارد. محققان امنیتی به طور کلی در هنگام انجام تحقیقات آسیب پذیری خوب، که توسط قانون اشتراک گذاری اطلاعات امنیت سایبری ایالات متحده (CISA) و دستورالعمل های وزارت دادگستری به رسمیت شناخته شده است، حفاظت می شوند. اتحادیه اروپا در دستورالعمل های کپی رایتینگ دیجیتال در ابزارهای تجزیه و تحلیل تک و تحلیل، به عنوان ابزار تجزیه و تحلیل غیر قانونی استفاده می شود.
استفاده اخلاقی نیاز به احترام به حقوق خالق نرم افزار دارد، از کد استخراج شده برای تکرار عملکرد دقیق محصول اختصاصی استفاده نکنید و الگوریتم های محرمانه را بدون اجازه منتشر نکنید. بهترین شیوه ها، شناسایی مسئولانه آسیب پذیری های موجود در مهندسی معکوس را تشویق می کنند.
در این میان، در مورد خواندن کتاب «فَلَهُوَهُ» و «مَلَهُمْهُمْهُوا» و «مَهُوَهُ» (فَهُوَهُمْهُوَهُمْهُوَهُمِهُوا وَهُوَهُمِهُوَهُوا مِهُمْهُوا مِهُوَهُوا مِهُوا مِهُوا وَهُوا وَهُوا مِهُوا مِهُمْمْمْمْهُوا مِهُوَهُوا مِهُوَهُوَهُوا مِهُوَهُوا مِهُوا وَهُمْمْمْمْمْمْمْهُوَهُوَهُوَهُوَهُوَهُوَهُوَهُوَهُوَهُوَهُوَهُوَ
روند آینده در Disassembly و Decompilation
آموزش ماشین پیشرفته تحلیل
تحقیقات اخیر از شبکه های عصبی برای طبقه بندی توابع، شناسایی انواع متغیر و حتی قطعه های باینری دودویی دودویی به طور مستقیم به صورت زبان سطح بالا استفاده می کند، در حالی که هنوز تجربی است، AI وعده های مهندسی معکوس را به سرعت تجزیه و تحلیل از obscated یا بزرگ binaries تسریع می کند.
بهبود پوشش پلتفرم
همانطور که مجموعه های آموزشی جدید ظهور می کنند (RISC-V، WebAssembly و غیره)، توسعه دهندگان disassembler و decompiler پشتیبانی می کنند. Ghidra، به عنوان مثال، در حال حاضر بیش از 30 معماری را پشتیبانی می کند و مشارکت های جامعه در دسترس آن به میکروکنترلرها و ماشین های مجازی بلاک چین گسترش می یابد.
همکاری Cloud-based
ابزارهایی مانند تجزیه و تحلیل ابری دودویی نینجا و فایل های پروژه مشترک Ghidra امکان توزیع تیم های مهندسی معکوس را فراهم می کنند، این روند حرکت گسترده تر به سمت توسعه نرم افزار مشترک را منعکس می کند و به ویژه برای تجزیه و تحلیل نفوذ بزرگ، پیچیده یا کمپین های مخرب مفید است.
نتیجه گیری
گردآورنده ها و Decompilers ابزار ضروری برای به دست آوردن دید به نرم افزار اختصاصی هستند.آنها حسابرسی امنیتی، تجزیه و تحلیل بدافزار، بازیابی کد و همکاری بدون دسترسی به کد منبع اصلی را فعال می کنند.IDA Pro، Ghidra، Radare2 و Hex-Ray هر کدام مزایای متمایزی ارائه می دهند و جامعه متن باز همچنان به دموکراتیزه کردن این ابزار های اخلاقی، و ایمن تر کردن آن ها، و شناسایی دقیق تر از آن ها، به عنوان یک ابزار های اخلاقی، و محافظت می پردازد.