Skip to content

Software Reverse Engineering Toolkits

You can debug a program from the command line using GDB or even more powerful tools such as Radare2, IDA Pro and Binary Ninja.

Practical Binary Analysis | Chapter 6: Disassembly and Binary Analysis Fundamentals

Arm Assembly Internals and Reverse Engineering | Chapter 10 Static Analysis - Static Analysis Tools

Disassembler#

The process of disassembling a binary includes reconstructing the assembly instructions that the binary would run from their machine-code format into a human-readable assembly language.

Disassembling an executable file can be done in multiple ways, one of the simplest tools to quickly look at the disassembly output of an executable file is the Linux tool objdump.

While Linux utilities like objdump are useful for quickly disassembling small programs, larger programs require a more convenient solution. Various disassemblers exist to make reverse engineering more efficient, ranging from free open source tools, such as Ghidra, to expensive solutions like IDA Pro.

Decompiler#

A more recent innovation in reverse engineering is the use of decompilers. Decompilers go a step further than disassemblers. Where disassemblers simply show the human-readable assembly code of the program, decompilers try to regenerate equivalent C/C++ code from a compiled binary.

One value of decompilers is that they significantly reduce and simplify the disassembled output by generating pseudocode. This can make it easier to read when skimming over a function to see at a broad-strokes level what the program is up to.

Disassemblers are used to view the low-level code of a program and come in different flavors and price tags, ranging from free open-source tools such as Radare2 and Ghidra to commercial tools like Binary Ninja and IDA Pro. Some of them come with decompilation features that attempt to reconstruct the high-level source code of the disassembled program.

SRE Toolkits#

Practical Binary Analysis | Appendix C: List of Binary Analysis Tools - Disassemblers

Software Reverse Engineering(SRE) Toolkit:

references#

Compiler Explorer @github
An Empirical Study on ARM Disassembly Tools

CSC 472/583 Software Security - 2021-Fall Course Website
CSC 495/583 Topics of Software Security - 2023-Fall Course Website

forums#

web forums focusing on reverse engineering

r/Reverse Engineering
Reverse Engineering Stack Exchange

Red Team Notes / BlackHatWorld
HackTricks / Phrack Magazine

看雪学苑, 飘云阁, 吾爱破解

collections#

Advanced Binary Exploitation CTF
easy-linux-pwn, linux-kernel-exploitation

Crackmes / Root Me
Reversing.Kr / Exploit Database
exploit-exercises, Exploit Education

ROPgadget, Ropper, ropshell, ROP Emporium

CTF Notes#

Note: CTF
CTF101 - CTF Handbook
Binary Exploitation Notes
nnamon/linux-exploitation-course
CTF-All-In-One 《CTF 竞赛入门指南》

Reverse Engineering#

Linux Reverse Engineering CTFs for Beginners
TryHackMe: Reversing ELF. - reverselfiles

Reverse Engineering for Beginners
Reverse Engineering For Everyone!

Reverse Engineering on macOS
How To Reverse Malware on macOS

Binary Exploitation#

A Noob's Guide To ARM Exploitation
bkerler/exploit_me - ARM/AARCH64
awesome-arm-exploitation

ARM Exploit Development | Azeria Labs
ARM binary exploitation: Aaarchibald, Armory, RET2ZP

Introduction to ROP Exploitation on ARM64: @slideshare, Exploit-Challenges

Reverse Engineering - ARM Exploitation
ARM64 Reversing and Exploitation: 1, 2, 3
ARM64 Reversing And Exploitation: 1, 2, 3, 4, 5, 6, 7, 8, 9

ARM64 Reverse Engineering and Exploitation Training (November 2018)


An introduction to the Return Oriented Programming and ROP chain generation.pdf
Initiating Linux Binary Exploitation: A Beginner's Expedition into Code Manipulation

Malware Reverse Engineering for Beginners: Part 1, Part 2
Introduction to x64 Linux Binary Exploitation: 1, 2, 3, 4, 5

Reverse Engineering Malware | hackers-arise
The Offensive Labs - Exploit Development for Linux (x86_64)

Comments