Hacking/Shellcode/Alphanumeric/x64 printable operands
From Skypher
|
▼Main Page |
|
[todo:This is a work in progress, please ignore anything you see here unless it is accidentally correct.]
The AND (21, 23), SUB (29, 2B), XOR (31, 33), CMP (39, 3B), MOVSX (63) and IMUL (69, 6B) instructions can use a wide range of operands through their ModRM and SIB bytes. In addition to this, the OPERAND SIZE OVERRIDE (OSO) prefix (66) and REX prefixes can be used to specify different operand sizes and use the r8-r15 registers. I've created this list ot help clarify what can and what cannot be done using only those bytes that are printable or alphanumeric in the ASCII character set.
The AND (21, 23), SUB (29, 2B), XOR (31, 33) and CMP (39, 3B) instructions have two forms: [m], r and r, [m]. The ModRM and SIB bytes are exactly the same for both forms and the effect of the OSO and REX prefixes is also the same. This page only describes the operands in the r, [m] form, but everything applies to the [m], r form exactly the same.
