A binary recompiler is a
compiler
In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
that takes
executable
In computer science, executable code, an executable file, or an executable program, sometimes simply referred to as an executable or binary, causes a computer "to perform indicated tasks according to encoded instruction (computer science), in ...
binary file
A binary file is a computer file that is not a text file. The term "binary file" is often used as a term meaning "non-text file". Many binary file formats contain parts that can be interpreted as text; for example, some computer document files ...
s as input, analyzes their structure, applies transformations and optimizations, and outputs new optimized executable binaries.
The foundation to the concepts of binary recompilation were laid out by
Gary Kildall
Gary Arlen Kildall (; May 19, 1942 – July 11, 1994) was an American computer scientist and microcomputer entrepreneur. During the 1970s, Kildall created the CP/M operating system among other operating systems and programming tools, and s ...
with the development of the optimizing
assembly code translator XLT86 in 1981.
See also
*
Binary optimizer (binary-to-binary)
*
Binary translator (binary-to-binary)
*
Decompiler
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 e ...
(binary-to-source)
*
Disassembler
A disassembler is a computer program that translates machine language into assembly language—the inverse operation to that of an assembler. The output of disassembly is typically formatted for human-readability rather than for input to an asse ...
(binary-to-source)
*
Dynamic recompiler (binary-to-binary)
*
Transcompiler
A source-to-source translator, source-to-source compiler (S2S compiler), transcompiler, or transpiler is a type of translator that takes the source code of a program written in a programming language as its input and produces an equivalent sou ...
(source-to-source)
*
Honeywell Liberator (running
IBM 1401
The IBM 1401 is a variable word length computer, variable-wordlength decimal computer that was announced by IBM on October 5, 1959. The first member of the highly successful IBM 1400 series, it was aimed at replacing unit record equipment for pr ...
programs on
Honeywell H200)
References
Further reading
* {{cite journal , title=From hack to elaborate technique - A survey on binary rewriting , author-first1=Matthias , author-last1=Wenzl , author-first2=Georg , author-last2=Merzdovnik , author-first3=Johanna , author-last3=Ullrich , author-first4=Edgar R. , author-last4=Weippl , location=Vienna, Austria , journal=
ACM Computing Surveys
''ACM Computing Surveys'' is peer-reviewed quarterly scientific journal and is published by the Association for Computing Machinery. It publishes survey articles and tutorials related to computer science and computing. The journal was established i ...
, volume=52 , number=3 , id=Article 49 , date=June 2019 , orig-date=February 2019, November 2018, May 2018 , doi=10.1145/3316415 , pages=49:1–49:36 , s2cid=195357367 , url=https://publications.sba-research.org/publications/201906%20-%20GMerzdovnik%20-%20From%20hack%20to%20elaborate%20technique.pdf , access-date=2021-11-28 , url-status=live , archive-url=https://web.archive.org/web/20210115224807/https://publications.sba-research.org/publications/201906%20-%20GMerzdovnik%20-%20From%20hack%20to%20elaborate%20technique.pdf , archive-date=2021-01-15 (36 pages)
*
Compiler construction
Computer libraries