Part of the Programming glossary:

To decompile is to convert executable (ready-to-run) program code (sometimes called object code ) into some form of higher-level programming language so that it can be read by a human. Decompilation is a type of reverse engineering that does the opposite of what a compiler does. The tool that accomplishes this is called a decompiler. A similar tool, called a disassembler, translates object code into assembler language. There are a number of different reasons for decompilation or disassembly, such as understanding a program, recovering the source code for purposes of archiving or updating, finding virus es, debugging programs, and translating obsolete code. Decompilation was first used in the 1960s to facilitate the migration of a program from one platform to another.

Decompilation is not always successful for a number of reasons. It is not possible to decompile all programs, and data and code are difficult to separate, because both are represented similarly in most current computer systems. The meaningful names that programmers give variable s and function s (to make them more easily identifiable) are not usually stored in an executable file, so they are not usually recovered in decompiling.

Decompilation is sometimes used unethically, to reproduce source code for reuse or adaptation without permission of the copyright holder. Programs can be designed to be resistant to decompilation through protective means such as obfuscation .

This was last updated in September 2005
Posted by: Margaret Rouse

Related Terms

Definitions

  • application program interface (API)

    - An application program interface (API) is code that allows two software programs to communicate with each other. Typically, APIs are released for third-party development as part of a software devel... (SearchExchange.com)

  • algorithm

    - An algorithm (pronounced AL-go-rith-um) is a procedure or formula for solving a problem. (WhatIs.com)

  • abstraction

    - Abstraction (from the Latin abs, meaning away from and trahere, meaning to draw) is the process of taking away or removing characteristics from something in order to reduce it to a set of essential... (WhatIs.com)

Glossaries

  • Programming

    - Terms related to software programming, including definitions about programming languages and words and phrases about software design, coding, testing and debugging.

  • Internet applications

    - This WhatIs.com glossary contains terms related to Internet applications, including definitions about Software as a Service (SaaS) delivery models and words and phrases about web sites, e-commerce ...

Ask a Question. Find an Answer.Powered by ITKnowledgeExchange.com

Ask An IT Question

Get answers from your peers on your most technical challenges

Ask Question

Tech TalkComment

Share
Comments

    Results

    Contribute to the conversation

    All fields are required. Comments will appear at the bottom of the article.