Learning the basics of advanced reverse engineering
In this section, we will provide an overview of the Ghidra processor module skeleton. This skeleton will be a little bit different since processor modules are not written in Java. Instead, the processor modules are written in SLEIGH, the Ghidra processor specification language.
Learning about symbolic execution
You should already be familiar with the aspects of debugging a program. In this kind of process, you explore the program using concrete values, which is why this is called concrete execution. For instance, the following screenshot shows an x86_64 debugging session. The RAX
register takes a value of 0x402300
while debugging the hello_world.exe
program, which is a concrete value:
But there is a way of exploring a program using symbols instead of concrete values. This way of exploring a program is called symbolic execution...