Obfuscating an application program comprises reading an application
program comprising code, determining multiple dispatch tables associated
with the application program, transforming the application program into
application program code configured to utilize the dispatch tables during
application program execution to determine the location of instruction
implementation methods to be executed based at least in part on a current
instruction counter value, and sending the application program code.
Executing an obfuscated application program comprises receiving an
obfuscated application program comprising at least one instruction opcode
value encoded using one of multiple instruction set opcode value encoding
schemes, receiving an application program instruction corresponding to a
current instruction counter value, selecting an instruction dispatch
table based at least in part on the current instruction counter value,
and executing the application program instruction using the selected
instruction dispatch table.