You are here

Back to top

Foundations of Arm64 Linux Debugging, Disassembling, and Reversing: Analyze Code, Understand Stack Memory Usage, and Reconstruct Original C/C++ Code w (Paperback)

Foundations of Arm64 Linux Debugging, Disassembling, and Reversing: Analyze Code, Understand Stack Memory Usage, and Reconstruct Original C/C++ Code w Cover Image
$54.99
Usually Ships in 1-5 Days

Description


Chapter 1 - A64.1: Memory, Registers, and Simple Arithmetic 11
Memory and Registers inside an Idealized Computer 11Memory and Registers inside ARM 64-bit Computer 12"Arithmetic" Project: Memory Layout and Registers 13"Arithmetic" Project: A Computer Program 14"Arithmetic" Project: Assigning Numbers to Memory Locations 15Assigning Numbers to Registers 18"Arithmetic" Project: Adding Numbers to Memory Cells 19Incrementing/Decrementing Numbers in Memory and Registers 22Multiplying Numbers 25
Chapter 2 - A64.2: Code Optimization 29"Arithmetic" Project: C/C++ Program 29Downloading GDB 31GDB Disassembly Output - No Optimization 32GDB Disassembly Output - Optimization 37
Chapter 3 - A64.3: Number Representations 39Numbers and Their Representations 39Decimal Representation (Base Ten) 40Ternary Representation (Base Three) 41Binary Representation (Base Two) 42Hexadecimal Representation (Base Sixteen) 43Why are Hexadecimals Used? 44
Chapter 4 - A64.4: Pointers 47A Definition 47"Pointers" Project: Memory Layout and Registers 48"Pointers" Project: Calculations 50Using Pointers to Assign Numbers to Memory Cells 51Adding Numbers Using Pointers 58Incrementing Numbers Using Pointers 62Multiplying Numbers Using Pointers 65
Chapter 5 - A64.5: Bytes, Half Words, Words, and Double Words 69Using Hexadecimal Numbers 69Byte Granularity 70Bit Granularity 71Memory Layout 72
Chapter 6 - A64.6: Pointers to Memory 75Pointers Revisited 75Addressing Types 76Registers Revisited 81NULL Pointers 82Invalid Pointers 83Variables as Pointers 84Pointer Initialization 85Initialized and Uninitialized Data 86More Pseudo Notation 87"MemoryPointers" Project: Memory Layout 88
Chapter 7 - A64.7: Logical Instructions and PC 99Instruction Format 99Logical Shift Instructions 100Logical Operations 101Zeroing Memory or Registers 102Instruction Pointer 103Code Section 105
Chapter 8 - A64.8: Reconstructing a Program with Pointers 107Example of Disassembly Output: No Optimization 107Reconstructing C/C++ Code: Part 1 110Reconstructing C/C++ Code: Part 2 112Reconstructing C/C++ Code: Part 3 114Reconstructing C/C++ Code: C/C++ program 116Example of Disassembly Output: Optimized Program 117
Chapter 9 - A64.9: Memory and Stacks 119Stack: A Definition 119Stack Implementation in Memory 120Things to Remember 122Stack Push Implementation 123Stack Pop Implementation 124Register Review 125Application Memory Simplified 126Stack Overflow 127Jumps 128Calls 130Call Stack 131Exploring Stack in GDB 133
Chapter 10 - A64.10: Frame Pointer and Local Variables 137Stack Usage 137Register Review 138Addressing Array Elements 139Stack Structure (No Function Parameters) 140Function Prolog 141Raw Stack (No Local Variables and Function Parameters) 142Function Epilog 144"Local Variables" Project 145Disassembly of Optimized Executable 148
Chapter 11- A64.11: Function Parameters 149"FunctionParameters" Project 149Stack Structure 150Function Prolo...

About the Author


Dmitry Vostokov is an internationally recognized expert, speaker, educator, scientist, inventor, and author. He is the founder of the pattern-oriented software diagnostics, forensics, and prognostics discipline (Systematic Software Diagnostics), and Software Diagnostics Institute (DA+TA: DumpAnalysis.org + TraceAnalysis.org). Vostokov has also authored books on software diagnostics, anomaly detection and analysis, software and memory forensics, root cause analysis and problem solving, memory dump analysis, debugging, software trace and log analysis, reverse engineering, and malware analysis. He has over 25 years of experience in software architecture, design, development, and maintenance in various industries, including leadership, technical, and people management roles. In his spare time, he presents various topics on Debugging.TV and explores Software Narratology, its further development as Narratology of Things and Diagnostics of Things (DoT), Software Pathology, and Quantum Software Diagnostics. His current interest areas are theoretical software diagnostics and its mathematical and computer science foundations, application of formal logic, artificial intelligence, machine learning, and data mining to diagnostics and anomaly detection, software diagnostics engineering and diagnostics-driven development, diagnostics workflow, and interaction. Recent interest areas also include cloud native computing, security, automation, functional programming, and applications of category theory to software development and big data. He is based out of Dublin, Ireland.

Product Details
ISBN: 9781484290811
ISBN-10: 148429081X
Publisher: Apress
Publication Date: January 31st, 2023
Pages: 170
Language: English