Everything about Decompiler
Program translating executable to source code
A decompiler is a computer program that translates an executable file back into high-level source code. Unlike a compiler, which converts high-level code into machine code, a decompiler performs the reverse process. While disassemblers translate executables into assembly language, decompilers reconstruct higher level representations resembling source languages such as C. Because compilation generally discards source-level information such as variable names, comments, types, and aspects of the original program structure, a decompiler usually cannot reproduce the original source code exactly. Wikipedia →
🧭 Start here: a 6-step reading path
- Read the overview: DecompilerA 5-minute orientation
- Skim a recent paper: Android decompiler performance on benign and malicious apps: an empirical studyInfluential work since 2022
- Pick up a classic book: The web application hacker's handbookThe most-reprinted book on the subject
- Read the landmark paper: Neutron: an attention-based neural decompilerCited 24 times
- Go sideways: Assembly languageA closely related topic
- Go sideways: DisassemblerA closely related topic
📖 Definitions
Noun A computer program performing the reverse operation to that of a compiler.
🗂️ The subject at a glance
🏆 Landmark papers (most cited)
Neutron: an attention-based neural decompiler
Java decompiler diversity and its application to meta-decompilation
Control Logic Forensics Framework using Built-in Decompiler of Engineering Software in Industrial Control Systems
Augmenting Smart Contract Decompiler Output Through Fine-Grained Dependency Analysis and LLM-Facilitated Semantic Recovery
A refined decompiler to generate C code with high readability
Understanding and Finding Java Decompiler Bugs
The Incredible Shrinking Context... in a Decompiler Near You
An Analysis on Java Programming Language Decompiler Capabilities
🆕 Influential since 2022
📚 Books worth reading
The web application hacker's handbookDafydd Stuttard, Marcus Pinto · 2007
Java 2 for dummiesBarry A. Burd · 2001
Decompiling JavaGodfrey Nolan · 2004
Clojure high performance programmingShantanu Kumar · 2013
Decompiling AndroidGodfrey Nolan · 2012
Covert JavaAlex Kalinovsky · 2004
Secrets of the JavaScript NinjaJohn Resig, Bear Bibeault · 2013- 📕Decompiler - der Stand der Technik Im Jahr 2008C. Pernsteiner, B. Engleder · 2010
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
🔗 Related topics
- Assembly language In computing, assembly language (alternatively assembler language or symbolic machine code), often referred to simply as assembly and commonly abbreviated…
- Disassembler A disassembler is a computer program that translates machine language into assembly language—the inverse operation to that of an assembler. The output…
- Obfuscation (software) In software development, obfuscation is the practice of creating source or machine code that is intentionally difficult for humans or computers to understand…
- X86 assembly language x86 assembly language is a family of low-level programming languages that are used to produce object code for the x86 class of processors. Previous evolutions…
- CPUID In the x86 architecture, the CPUID instruction (identified by a CPUID opcode) is a processor supplementary instruction (its name derived from "CPU Identificatio…
- Bytecode Bytecode (also called portable code or p-code) is an instruction set designed for efficient execution by a software interpreter. Unlike human-readable…
- Instruction selection In computer science, instruction selection is the stage of a compiler backend that transforms its middle-level intermediate representation (IR) into a…
- SoftICE SoftICE is a kernel mode debugger for DOS and Windows up to Windows XP. It is designed to run underneath Windows, so that the operating system is unaware…