Skip to content

Environment Setup

Generally, we need to have a Linux environment as our attack base. As our target platform is also the Linux, it'll make our attacks easy as we use the same environment for debugging, local testing, and remote attacks.

It's recommended that you install any Linux distro you like on your physical machine, as which can provide you the native experience. You can also choose to use virtual machines as your attack base. Please feel free to choose the virtual machine manager you like to set up a Linux environment with any Linux distro you preper. We will give simple comparisons to different Linux distros and different virtual machine managers at the end of the article.

Reverse Engineering

Usually we will need to do the reverse engineering work on target programs as they're commonly not open-source. In this paragraph we will introduce some well-known tools for the reverse engineering.

Interactive Disassembler (IDA)

The UI of IDA Free 8.4

The Interactive Disassembler (aka IDA) is a powerful disassembler and discompiler developed by the Hex-Rays for reverse engineering. It supports reverse analyzation on a great number of executable formats on different instruction set architectures to recover and generate the assembly language code and high-level programming language code (e.g., C and C++) from machine-executable code.

The Interactive Disassembler Professional (aka IDA Pro) is the most well-known reverse engineering tool and the mainline version of the IDA. It supports a wide range of executable formats and instruction architecture sets with integrated debugger server (local and GDB server), and can be run on OS platforms including Windows, macOS and Linux. It also supports running scripts with internal libraries (i.e. IDAPython API and IDC scripting) to easily modify the target binary.

As IDA Pro is a property software, we need to pay for a valid license for use. For commercial usage, a valid license will be charged annually, and the price starts from 1099 USD per year (2025).

Besides, Hex-Rays has also provided other varients of IDA softwares for non-commercial and educational use, and some of them are free:

  • The IDA Free is a free version of IDA with 2 cloud-based decompilers that supports 2 ISA: x86 and amd64.
  • The IDA Home is a simplified version of IDA with a disassembler on a processor family and a cloud-based decompiler specified by your choice at buying. It also supports for scripting and integrated debugger. The annual price starts from 365 USD per year (2025).
  • The IDA Classroom Free is a special and free version of IDA that integrated with 2 disaseemblers for 2 ISA: x86 and amd64, with 4 cloud-based decompilers that supports 4 ISA: X86, AMD64, ARM 32, and ARM 64.

Ghidra

The UI of Ghidra 2024

Ghidra is a free and open source reverse engineering framework that contains a suite of software analysis tools for reverse engineering, which is created and maintained by the National Security Agency of the United States. It provides users with disaseemblers and discompilers on a wide range of different instruction set architectures and executable formats. Users can also develop their own extensions with Java/Python to assist their work on Ghidra.

As Ghidra is an open source software, you can easily download it on its release page without any purchases. Note that you will need to install a Java runtime in your environment as Ghidra is written in Java.

Binary Ninja

The UI of Binary Ninja

Binary Ninja is an interactive reverse engineering framework integrated with decompiler, disassembler and debugger, which is developed by Vector 35. Binary Ninja supports various instruction set architectures and executable formats, and can be run on Windows, macOS and Linux.

As Binary Ninja is a property software, we need to pay for a valid license for use. For commercial usage, the price (2025) of a non-commercial personal license is at 299 USD, while the license for commercial use starts from 1499 USD. It also provides students with discounts at approximately 25%.

Besides, Binary Ninja also provide users with free varients equipped with limited functionalities:

  • Binary Ninja Cloud is a free and online reverse engineering tool that supports only PE/MachO/ELF file formats with limited performance.
  • Binary Ninja Free is a free version of Binary Ninja that only supports x86, x86_64, and ARMv7 architectures, without API/plugin access, and can only be used for non-commercial purposes.

Debugger

To get a deeper understanding of the runtime state of our target programs, usually we will need to use a debugger for jobs including memory introspection.

GNU Debugger (GDB)

The GNU

Plugins

LLDB