- عنوان کتاب: Reverse Engineering Armv8-A Systems
- نویسنده: Austin Kim
- حوزه: مهندسی معکوس
- سال انتشار: 2025
- تعداد صفحه: 447
- زبان اصلی: انگلیسی
- نوع فایل: pdf
- حجم فایل: 7.73 مگابایت
امروزه، پردازندههای Arm در طیف وسیعی از سیستمها، مانند تلفنهای هوشمند، سیستمهای روی تراشه هوش مصنوعی، بخش خودرو (برای رانندگی خودکار و سرگرمی)، سرورهای ابری و مکبوکها استفاده میشوند. این پردازندهها عمدتاً مبتنی بر معماری ۶۴ بیتی Armv8-A هستند، از جمله پردازندههای محبوب Arm مانند Cortex-A53، Cortex-A57 و Cortex-A78. در توسعه نرمافزار سیستم، معماری Armv8-A اکنون یکی از مهمترین موضوعاتی است که مهندسان باید درک کنند. این کتاب، مهندسی معکوس سیستمهای Armv8-A، برای به اشتراک گذاشتن روشهای عملی برای تجزیه و تحلیل دادههای باینری در سیستمهای Armv8-A نوشته شده است. هدف من کمک به خوانندگان در یادگیری نحوه عملکرد معماری Armv8-A و همچنین ایجاد مهارتهای واقعی از طریق تجربه عملی است. این کتاب شامل محتوای عملی است که میتواند مستقیماً در پروژههای دنیای واقعی استفاده شود. این کتاب برای خوانندگانی طراحی شده است که میخواهند یادگیری تجزیه و تحلیل دودویی را از اصول اولیه شروع کنند و به درک عمیقتری از سیستمهای سطح پایین در سیستمهای Armv8-A برسند. مهندسی معکوس به معنای تجزیه و تحلیل یک سیستم بدون دسترسی به کد منبع اصلی است. وقتی اصطلاح «مهندسی معکوس» را میشنوید، ممکن است به تحلیل دودویی، تحقیقات امنیتی یا توسعه اکسپلویت فکر کنید. اینها مهارتهای مهمی هستند و اغلب به عنوان مهارتهای اصلی دیده میشوند. بسیاری از پستها و مقالات وبلاگ در مورد استفاده از مهندسی معکوس برای ایجاد اکسپلویتها از دیدگاه امنیتی صحبت میکنند. با این حال، برای بسیاری از توسعهدهندگان نرمافزار سیستم، مهندسی معکوس معمولاً برای هدف متفاوتی استفاده میشود: یافتن اشکالات، تحلیل خرابیها یا بررسی خرابیهای سیستم، نه برای توسعه اکسپلویتها. این کتاب بر مهارتهای تحلیل دودویی که برای توسعهدهندگان میانافزار و مهندسان نرمافزار سیستم مفید است، تمرکز دارد. این کتاب برای امنیت تهاجمی نوشته نشده است. در عوض، روشهای تحلیل دودویی دقیق و تکنیکهای اشکالزدایی عملی را توضیح میدهد. فصل 1، یادگیری اصول معماری Arm، مفاهیم اساسی معماری Armv8-A، مانند سطوح استثنا، استفاده از رجیستر، AAPCS و مدیریت استثنا را معرفی میکند. این اصول به شما کمک میکند تا رفتار سیستم را درک کنید و برای تحلیل دودویی آماده شوید. فصل 2، درک فرمت دودویی ELF، شما را با فرمت دودویی ELF، از جمله هدر فایل، هدر بخش و هدر برنامه، آشنا میکند. شما یاد خواهید گرفت که چگونه از دستور readelf برای بررسی ساختار دودویی استفاده کنید و چگونه هر هدر در طول مهندسی معکوس کمک میکند. فصل 3، دستکاری دادهها با دستورالعملهای پردازش دادههای Arm، دستورالعملهای پردازش دادهها را برای حساب، منطق و تغییر بیت توضیح میدهد. شما یاد خواهید گرفت که چگونه دستورالعملهای اسمبلی را به زبان C بازسازی کنید. این مهارتها دانش پیشزمینه کلیدی برای تحلیل دودویی هستند. فصل 4، خواندن و نوشتن با دستورالعملهای دسترسی به حافظه، نحوه عملکرد دسترسی به حافظه در Armv8-A با استفاده از LDR و STR را پوشش میدهد. شما یاد خواهید گرفت که چگونه دادهها را بین رجیسترها و حافظه جابجا میکنند. فصل 5، کنترل اجرا با دستورالعملهای کنترل جریان، دستورالعملهای کنترل جریان را توضیح میدهد که نحوه اجرای یک برنامه را بر اساس شرایط با دستورالعملهای مقایسه و انشعاب تغییر میدهند. فصل 6، معرفی مهندسی معکوس، مهندسی معکوس را معرفی میکند، راهی برای درک نرمافزار بدون کد منبع. شما در مورد تحلیل استاتیک و دینامیک و همچنین فرآیند کامپایل که برای تحلیل دودویی مهم هستند، یاد خواهید گرفت. فصل 7، راهاندازی یک محیط تمرین با یک دستگاه Arm، نحوه راهاندازی یک محیط تمرین با استفاده از یک دستگاه Arm مانند Raspberry Pi یا QEMU را پوشش میدهد. با این ابزارها، شما تحلیل دودویی انجام خواهید داد. فصل ۸، باز کردن هسته با اصول لینوکس، بر اصول اولیه لینوکس تمرکز دارد: فضای کاربر، فضای هسته، فراخوانیهای سیستم و مدیریت فرآیند. همچنین در مورد مدیریت حافظه و ویژگیهای امنیتی مانند LSM و KASLR خواهید آموخت. فصل ۹، درک تحلیل استاتیک پایه، تحلیل استاتیک پایه برای مهندسی معکوس با استفاده از ابزارهای دودویی را پوشش میدهد. شما یاد خواهید گرفت که چگونه نوع یک فایل دودویی را بررسی کنید و چگونه یک فایل شیء خراب را بررسی کنید. همچنین یاد خواهید گرفت که چگونه کد اسمبلی را بخوانید و نحوه تبدیل آن به کد C را درک کنید. فصل ۱۰، عمیقتر شدن با تحلیل استاتیک پیشرفته، تحلیل استاتیک پیشرفته برای فایلهای دودویی هسته مانند *.ko و vmlinux را پوشش میدهد. شما در مورد ساختار ELF، الگوهای دودویی معمول هسته و نحوه تشخیص عناصری مانند بخش .modinfo خواهید آموخت. فصل ۱۱، تحلیل رفتار برنامه با تحلیل دینامیک پایه، تحلیل دینامیک پایه، از جمله مزایا و محدودیتهای آن را مورد بحث قرار میدهد. شما از ابزارهایی مانند GDB و GEF برای اشکالزدایی فایلهای دودویی مختلف فضای کاربر استفاده خواهید کرد. این فصل همچنین مطالعات موردی مربوط به مسائل مربوط به خرابی حافظه را ارائه میدهد. فصل 12، تکنیکهای تخصصی در تحلیل پویای پیشرفته، تحلیل پویای پیشرفتهی فایلهای باینری هسته را با استفاده از ابزار Crash پوشش میدهد. شما یاد خواهید گرفت که چگونه ساختارهای هسته مانند task_struct را با استفاده از الگوهای پشته و آدرسهای حافظه شناسایی کنید. این مهارتها از ویژگیهای کلیدی این کتاب هستند. فصل 13، ردیابی اجرا با uftrace، uftrace، یک ابزار متنباز قدرتمند برای نظارت بر پردازشهای حرفهای را بررسی میکند.
Today, Arm processors are used in a wide range of systems, such as smartphones, AI SoCs, the automotive sector (for autonomous driving and infotainment), cloud servers, and MacBooks. These processors are mostly based on Armv8-A 64-bit architecture, including popular Arm processors, such as Cortex-A53, Cortex-A57, and Cortex-A78. In system software development, Armv8-A architecture is now one of the most important topics that engineers should understand. This book, Reverse Engineering Armv8-A Systems, was written to share practical ways to analyze binaries on Armv8-A systems. My goal is to help readers learn how Armv8-A architecture works and also build real skills through hands-on experience. The book covers practical content that can be used directly in real-world projects. It is designed for readers who want to start learning binary analysis from the basics and move forward to a deeper understanding of low-level systems in Armv8-A systems. Reverse engineering means analyzing a system without access to the original source code. When you hear the term “reverse engineering,” you might think of binary analysis, security research, or exploit development. These are important skills and are often seen as core skills. Many blog posts and articles talk about using reverse engineering to create exploits from a security point of view. However, for many system software developers, reverse engineering is usually used for a different purpose: to find bugs, analyze crashes, or investigate system failures, rather than to develop exploits. This book focuses on binary analysis skills that are useful for firmware developers and system software engineers. This book is not written for offensive security. Instead, it explains detailed binary analysis methods and practical debugging techniques. Chapter 1, Learning Fundamentals of Arm Architecture, introduces the basic concepts of the Armv8-A architecture, such as exception levels, register usage, AAPCS, and exception handling. These fundamentals will help you understand system behavior and prepare you for binary analysis. Chapter 2, Understanding the ELF Binary Format, introduces you to the ELF binary format, including the file header, section header, and program header. You will learn how to use the readelf command to check binary structure and how each header helps during reverse engineering. Chapter 3, Manipulating Data with Arm Data Processing Instructions, explains data processing instructions for arithmetic, logic, and bit shifts. You will learn how to reconstruct assembly instructions into C. These skills are key background knowledge for binary analysis. Chapter 4, Reading and Writing with Memory Access Instructions, covers how memory access works in Armv8-A using LDR and STR. You will learn how they move data between registers and memory. Chapter 5, Controlling Execution with Flow Control Instructions, explains flow control instructions that change how a program runs based on conditions with comparison and branch instructions. Chapter 6, Introducing Reverse Engineering, introduces reverse engineering, a way to understand software without source code. You will learn about static and dynamic analysis, as well as the compilation process, which are important for binary analysis. Chapter 7, Setting Up a Practice Environment with an Arm Device, covers how to set up a practice environment using an Arm device such as the Raspberry Pi or QEMU. With these tools, you will perform binary analysis. Chapter 8, Unpacking the Kernel with Linux Fundamentals, focuses on Linux basics: user space, kernel space, system calls, and process management. You will also learn about memory management and security features such as LSM and KASLR. Chapter 9, Understanding Basic Static Analysis, covers basic static analysis for reverse engineering by using binary utilities. You will learn how to check the type of a binary file and how to examine a corrupted object file. You will also learn how to read assembly code and understand how to convert it into C code. Chapter 10, Going Deeper with Advanced Static Analysis, covers advanced static analysis for kernel binaries such as *.ko and vmlinux. You will learn about the ELF structure, typical kernel binary patterns, and how to recognize elements such as the .modinfo section. Chapter 11, Analyzing Program Behavior with Basic Dynamic Analysis, discusses basic dynamic analysis, including its benefits and limitations. You will use tools such as GDB and GEF to debug various user-space binaries. This chapter also provides case studies related to memory corruption issues. Chapter 12, Expert Techniques in Advanced Dynamic Analysis, covers advanced dynamic analysis of kernel binaries using the Crash utility. You will learn how to identify kernel structures such as task_struct using stack patterns and memory addresses. These skills are a key feature of this book. Chapter 13, Tracing Execution with uftrace, explores uftrace, a powerful open source tool to monitor process execution. You will learn how to install and use uftrace with a simple example that traces function calls and return values. Chapter 14, Securing Execution with Armv8-A TrustZone, explores TrustZone in Armv8-A. You will also learn how software switches between the non-secure and secure worlds using the SMC instruction. It also explains hardware features that support TrustZone, such as the AxPROT signal. Chapter 15, Building Defenses with Key Security Features of Armv8-A, explains the latest security features in Armv8-A, including PAN, PAC, BTI, and MTE. These features are used to protect systems by controlling memory access and verifying addresses.
این کتاب را میتوانید از لینک زیر بصورت رایگان دانلود کنید:
Download: Reverse Engineering Armv8-A Systems
نظرات کاربران