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:
- OllyDbg: frozen, odbg64 incomplete.
-
x64dbg: An open-source x64/x32 debugger for windows.
-
radare: UNIX-like reverse engineering framework and command-line toolset
-
Ghidra: SRE framework developed by NSA's Research Directorate in support of the Cybersecurity mission
-
IDA Pro: A powerful disassembler and a versatile debugger.
-
Binary Ninja: an interactive decompiler, disassembler, debugger, and binary analysis platform.
-
Capstone: The Ultimate Disassembly Framework - introduction
- rscloura/Doldrums: A Flutter/Dart reverse engineering tool.
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)