A quick introduction to Reverse Engineering

Introduction to Software Reverse Engineering

Reverse engineering can mean different things when it comes to software. But generally speaking it is the process of taking software and converting it into something that is human readable and using that result to decipher the functionality of the software.

Common Terminology

  • Disassembler - software that converts machine language to assembly language
  • Decompiler - takes an executable and converts it into a source file that can be recompiled
  • Packet Sniffing - gathering network packets for analysis
  • Bus Analyzer - a protocol analyzer for capturing communications directly off an interface bus
  • Stack Overflow - occurs if the call stack pointer exceeds the bounds of the stack (more details in the Ghidra section
  • Obfuscation - obscuring the source code of software to make it harder to understand
  • Code Injection - introducing code into a vulnerable program in order to change its execution

References

  1. Reverse engineering. (2019, June 28). Retrieved December 08, 2020, from https://www.newworldencyclopedia.org/entry/Reverse_engineering
  2. Andriesse, D. (2019). Practical binary analysis: Build your own Linux tools for binary instrumentation, analysis, and disassembly. San Francisco, CA: No Starch Press.
  3. The New Merriam-Webster dictionary. (1989). Springfield, MA: Merriam-Webster.