Self-modifying code

This is an old revision of this page, as edited by Michael Hardy (talk | contribs) at 22:59, 27 April 2003 (Highlighting correction. Punctuation correction. Context-setting (There wasn't any! Now there is.).). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

In computer programming, self-modifying code is code that modifies itself. This is impossible to do without the use of assembly language as high level langugages (HLL's) simply cannot describe how to do such an advaced operation.

example algorithm (theoretic!)

Start:
GOTO Decryption_Code
Encrypted:
    ...
    lots of encrypted code!!!
    ...
Decryption_Code:
    *A = Encrypted
Loop:
    B = *A
    B = B XOR CryptoKey
    *A = B
    A = A + 1
    GOTO Loop IF NOT A = (Decryption_Code - Encrypted)
    GOTO Encrypted
 CryptoKey:
    some_random_number

This "program" will decrypt a part of itself and then jump to it. (*A means "the ___location to wich A points")