What are the uses of self modifying code? [closed]

Turns out that the Wikipedia entry on “self-modifying code” has a great list:

  1. Semi-automatic optimization of a state dependent loop.
  2. Runtime code generation, or specialization of an algorithm in
    runtime or loadtime (which is popular,
    for example, in the domain of
    real-time graphics) such as a general
    sort utility preparing code to perform
    the key comparison described in a
    specific invocation.
  3. Altering of inlined state of an object, or simulating the high-level
    construction of closures.
  4. Patching of subroutine address calling, as done usually at load time
    of dynamic libraries, or, on each
    invocation patching the subroutine’s
    internal references to its parameters
    so as to use their actual addresses.
    Whether this is regarded as
    ‘self-modifying code’ or not is a case
    of terminology.
  5. Evolutionary computing systems such as genetic programming.
  6. Hiding of code to prevent reverse engineering, as through use of a
    disassembler or debugger.
  7. Hiding of code to evade detection by virus/spyware scanning software and
    the like.
  8. Filling 100% of memory (in some architectures) with a rolling pattern
    of repeating opcodes, to erase all
    programs and data
    , or to burn-in
    hardware
    .
  9. Compression of code to be decompressed and executed at runtime,
    e.g., when memory or disk space is
    limited.
  10. Some very limited instruction sets leave no option but to use
    self-modifying code to achieve certain
    functionality
    . For example, a “One
    Instruction Set Computer” machine that
    uses only the
    subtract-and-branch-if-negative
    “instruction” cannot do an indirect
    copy (something like the equivalent of
    “*a = **b” in the C programming
    language) without using self-modifying
    code.
  11. Altering instructions for fault-tolerance

On the point about thwarting hackers using self-modifying code:

Over the course of several firmware updates, DirectTV slowly assembled a program on their smart card to destroy cards that have been hacked to illegally receive unpaid channels. See Jeff’s Coding Horror article on the Black Sunday Hack for more information.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)