Obfuscated code

related topics
{math, number, function}
{system, computer, user}
{law, state, case}
{@card@, make, design}
{company, market, business}
{god, call, give}
{work, book, publish}
{food, make, wine}

Obfuscated code is source or machine code that has been made difficult to understand for humans. Programmers may deliberately obfuscate code to conceal its purpose (security through obscurity) or its logic to prevent tampering, deter reverse engineering, or as a puzzle or recreational challenge for someone reading the source code. Programs known as obfuscators transform readable code into obfuscated code using various techniques. Code obfuscation is different in essence from hardware obfuscation, where description and/or structure of a circuit is modified to hide its functionality.

Contents

Overview

Some languages may be more prone to obfuscation than others.[1][2] C,[3] C++,[4] and Perl[5] are some examples.

Recreational obfuscation

Writing and reading obfuscated source code can be a brain teaser for programmers. A number of programming contests reward the most creatively obfuscated code: the International Obfuscated C Code Contest, Obfuscated Perl Contest, and International Obfuscated Ruby Code Contest.

Types of obfuscations include simple keyword substitution, use or non-use of whitespace to create artistic effects, and self-generating or heavily compressed programs.

Short obfuscated Perl programs may be used in signatures of Perl programmers. These are JAPHs ("Just another Perl hacker").[citation needed]

Examples

This is a winning entry from the International Obfuscated C Code Contest[6] written by Ian Phillipps in 1988[7] and subsequently reverse engineered by Thomas Ball.[8]

Full article ▸

related documents
Ruby (programming language)
Lua (programming language)
RSA
Subroutine
Denotational semantics
Numerical analysis
Complete lattice
Kernel (algebra)
Infinity
Cardinal number
Huffman coding
Gaussian elimination
Sequence alignment
Stone–Čech compactification
Series (mathematics)
Newton's method
Integration by parts
Functor
Direct sum of modules
Hash function
Boolean satisfiability problem
Riemann zeta function
Entropy (information theory)
List of trigonometric identities
Russell's paradox
Logic programming
Pascal's triangle
Principal components analysis
Interval (mathematics)
XML