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 will 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.