;
starts a commentMOV
, from source to destinationLEA
, loads memory address and stores it in the destination. Address can have an offset. Does not dereference [var]
or [var+x]
PUSH
& POP
, put & delete registers to/from stack.INC
, incrementDEC
, decrementADD
SUB
, substracts source from dest and stores in destMUL
& IMUL
, result may be stored in upper and lower halfs (rdx:rax)DIV
& IDIV
, rax is divided by rbx and may be stored in two halfs as wellRET
, return value to the callerCMP
, compare two values and sets flag. Next instruction is a jump condition to a line number. Works as followsJE
, JEZ
, JLE
... followed by linenumberNOP
, \x90
CALL
a function[var]
, memory address of var.mov [var], 42
var points to the value 42. [
dereference.eax
will result in zeroing the upper 32 bit of an rax
register, move to ax
, ah
, al
will not.MOVZX
zeros anything but the value moved to the register inside of it.For signed value comparison
JL/JNGE
(SF <> OF) ; Jump if less/not greater or equalJGE/JNL
(SF = OF) ; Jump if greater or equal/not lessJLE/JNG
(ZF = 1 or SF <> OF); Jump if less or equal/not greaterJG/JNLE
(ZF = 0 and SF = OF); Jump if greater/not less or equalFor unsigned value comparison
JB/JNAE
(CF = 1) ; Jump if below/not above or equalJAE/JNB
(CF = 0) ; Jump if above or equal/not belowJBE/JNA
(CF = 1 or ZF = 1) ; Jump if below or equal/not aboveJA/JNBE
(CF = 0 and ZF = 0); Jump if above/not below or equaleflags
32bitrflags
64bitrax
or xmm0
$rsp to $rsp+0x18
rax, rcx, r8, r9, r10, r11, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5
. These are destroyed after function call.rbx, rbp, rdi, rsi, rsp, r12, r13, r14, r15, xmm6-15
ares saved and restored after function call.
Social_engineering