Mastering Reverse Engineering & Malware Analysis | REMASM+
Master Reverse Engineering, Malware Analysis, Linux, Cyber Security, Ghidra,x86-64, IDA Pro, IDA Free, Assembly and NASM
What you'll learn
- The theory behind disassembly and its role in reverse engineering.
- The four stages of binary analysis: Preprocessing, Compilation, Assembly, and Linking.
- The compilation process breakdown and the purpose of each phase.
- Working with symbolic information in stripped and not stripped binaries.
- How binary executables load and execute.
- Installation and basics of Ghidra, a tool for reverse engineering.
- Installing the Java Development Kit (JDK) for Ghidra.
- Navigating and utilizing Ghidra for project analysis.
- Real-world malware analysis using Ghidra.
- Practical reverse engineering skills through hands-on malware analysis.
- Writing a 64-bit assembly program to display "Hello, world!" using a makefile.
- Installing and setting up the SASM assembler for assembly programming.
- Understanding the superiority of NASM (Netwide Assembler) and comparing it with other assemblers.
- Creating a basic "Hello, world!" program in assembly without using a makefile.
- Exploring the theory of disassembly and disassemblers in reverse engineering.
- Analyzing the fundamentals of disassembly and its importance in reverse engineering.
- Delving into various data types and their representation in assembly language.
- Understanding CPU architectures, binary files, and their relationship.
- Converting decimal numbers to binary using basic mathematical operations in assembly.
- Initiating debugging with gdb (GNU Debugger) and configuring debugging flavors.
- Debugging techniques for locating and inspecting variables in memory addresses.
- Expanding knowledge of gdb functionalities for advanced debugging scenarios.
- Writing a second 64-bit assembly program, creating the source code, and generating a makefile.
- Analyzing program output using gdb and building a makefile for the assembly code.
- Exploring binary analysis and comprehending the four stages of compilation.
- Learning about preprocessing, compilation, assembly, and linking phases of program compilation.
- Distinguishing between symbols, stripped, and non-stripped binaries.
- Utilizing READELF to view symbolic information in binaries and object files.
- Revealing the contents of an object file and attempting to analyze binary executables.
- Understanding how binary files load and execute in theory.
- Exploring the Executable and Linkable Format (ELF) used in Linux executables, focusing on the executable header.
- Learning about ELF fields and ELF program header fields.
- Understanding the fundamentals of Windows PE (Portable Executable) format used in Windows executables.
- Mastering bitwise logical operations: OR, XOR, NOT, and AND.
- Applying OR logic to manipulate data and perform bitwise operations.
- Implementing NOT logic to invert bits in assembly programming.
- Exploring XOR logic and its applications in data manipulation.
- Understanding AND logic and how it's used for masking and bit filtering.
- Utilizing the Data Display Debugger (DDD) to analyze assembly programs.
- Developing assembly programs to analyze using DDD and understanding the debugging process.
- Analyzing RAX register values using DDD and gdb.
- Mastering control flow with jump and loop instructions in assembly.
- Learning about common errors in assembly programming and their solutions.
- Using conditional statements and jumps to control program flow.
- Implementing jump instructions based on equality conditions.
- Understanding jump instructions for inequality conditions.
- Employing jump instructions for comparisons involving greater values.
- Implementing jump instructions for greater-than-or-equal-to conditions.
- Using jump instructions for comparisons involving lesser values.
- Implementing jump instructions for less-than-or-equal-to conditions.
- Developing an assembly project that utilizes jump and loop instructions effectively.
- Creating a calculator project using assembly language to perform arithmetic operations.
- Defining variables and memory allocation in assembly programming.
- Implementing addition and subtraction operations in assembly language.
- Adding final touches and decorations to assembly projects.
- Explaining the practical usage of registers in assembly programming.
- Completing the assembly projects with a focus on optimization and efficiency.
- Utilizing memory manipulation techniques to interact with data structures.
- Exploring a more advanced project called "EXABYTE" involving memory manipulation.
- Testing and analyzing projects using tools like Readelf and GDB for verification and debugging.