Reverse Engineering
Reverse engineering is the process of extracting information or design knowledge from anything that is man-made. The mechanisms within the field of reverse engineering are used in many applications including understanding malware, bridging software interoperability, and determining the strength of application code.
Knowledge of the usage of a disassembler is helpful to solve reverse engineering tasks. A disassembler is a tool that interprets a compiled program and produces the
corresponding machine code that can be used for analysis. There are several disassemblers available including IDA and Ghidra (https://www.ghidra-sre.org).
A free evaluation version of IDA can be found at the following link:
https://www.hex-rays.com/products/ida/support/download.shtml
Potential skills that may be necessary to solve reverse engineering tasks.
- Basic understanding of how binary data is read and structured
- How to programmatically read in binary data
- How to handle low-level reads and writes
- How to interpret raw data using a hexadecimal viewer
- Understanding how the stack and heap is used with applications
Below are potential examples of reverse engineering problems:
- Password discovery
- Breaking through obfuscation
- Discovering DLL Injection
- Discovering malware
Helpful links for information on the reverse engineering process