decompiler
Binary source translator
A decompiler is software that attempts to reverse the compilation process—taking executable code and reconstructing something resembling the original source code.
The output is rarely identical to what the programmer wrote, since compilation discards variable names, comments, and structural choices.
Decompilers are used for software analysis, security research, and recovering lost source code.
We ran the binary through a decompiler to understand how it worked.
Separating into components
- binaryConsisting of two parts
- executableDirectly runnable program file
- reconstructionRebuilding after destruction
- bytecodeCompiled platform-neutral instructions
assembly-language · machine-code · pseudocode · recompilation · hopper · snowman
Informal algorithm representation
- readableEasy to understand
- annotationsExplanatory additions to documents
- commentsSpoken or written reactions
- constantsUnchanging fixed values
enumerations · unions · pointers · arrays
Deliberate concealment through confusion
- packingPutting items in containers
- unpackingRemoving items from containers
- ransomwareHostage-taking code
- backdoorHidden bypass mechanism
disassembly
Separating into components
- binaryConsisting of two parts
- executableDirectly runnable program file
- reconstructionRebuilding after destruction
bytecode · assembly-language · machine-code · pseudocode · recompilation · hopper · snowman
pseudocode
Informal algorithm representation
- readableEasy to understand
- annotationsExplanatory additions to documents
- commentsSpoken or written reactions
constants · enumerations · unions · pointers · arrays
obfuscation
Deliberate concealment through confusion
- packingPutting items in containers
- unpackingRemoving items from containers
- ransomwareHostage-taking code
static-analysis
Code review without execution
- cross-referencingVerifying by consulting elsewhere
- developer toolsIDE, debugger, analyzer, text editor, console
- reverse engineeringdisassembler, disassembly, Cutter, Frida, pseudocode
- dev toolslinter, compilers, Git, debuggers, IDEs
- JavaJDK, JAR, JVM, bytecode, packages
- editing toolsred pen, spell check, grammar check, editor, dictionary
- piracysoftware piracy, pirates, torrents, book piracy, buccaneers
decompilercompiler
Source-to-machine-code translator
assembler · linker · code generator · transpiler · interpreter