~help disassemble~Install please:
Reverse engineering is the process of understanding the behaviour of a system based on an analysis of its source code or source code artifacts (compilation output).
Normally we forward engineer a program from a specification, in reverse engineering we try to infer the specification from the program.
Static and dynamic analysis are complementary
Static analysis gives us a first idea of what the program might be doing
Dynamic analysis allows us to test our hypothesis
printGood ol’ print
from pprint import pprint
A prettier print
breakpoint()Pauses execution and opens the Python debugger
help for help
ipythonA better, interactive Python shell
Useful for testing how snippets of code behave
System.out.printlnJava’s print with trailing line
Reverse engineering tool that analyzes compiled binaries
Decompiles machine code into feasible C code (C code that would result in similar machine code)
GNU Debugger
Allows us to run and debug C (and other language) compiled programs
As most of our programs will be compiled without debugging information (source code information), we will need to understand x86-64 assembly to be able to use GDB
You should also search for the documentation of any used libraries.
For learning x86-64