Traditional NOP sleds are made up of long sequences of the NOP (0x90
) instruction, but exploit authors can be creative in order to avoid detection. Other popular opcodes are in the 0x40
to 0x4f
range. These opcodes are single-byte instructions that increment or decrement the general-purpose registers. This opcode byte range also consists of only printable ASCII characters. This is often useful because the NOP sled executes before the decoder runs, so it must pass the same filtering requirements as the rest of the shellcode.