mov |
传送数据 |
mov rax,18 |
将18的值传送进rax寄存器(rax = 18) |
add |
加法运算 |
add rax,rbx |
rax与rbx的值相加,并存储在rax(rax = rax + rbx) |
sub |
减法运算 |
sub rax,9 |
rax减9,将结果存储在rax(rax = rax - 9) |
xor |
异或运算 |
xor rax,rax |
将rax与rax进行异或处理,等价于:(rax = 0) |
call |
调用函数 |
|
|
lea |
取地址,现在一般用于运算 |
lea rax,[rbp - 18] |
将rbp-18的结果传送到rax(rax = rbp - 18) |
cmp |
判断指令,实际作用是做减法运算,通常搭配J开头的命令进行使用 |
cmp rax,0x61 |
进行rax - 0x61运算,此命令不会将运算的结果值存储(rax - 0x61) |
movzx |
传送数据 |
movzx rax,BYTE ptr [rbp-0x10] |
相当于将rbp-0x10地址的值,取8位数字传送至rax处BYTE:8位WORD:16位DWORD:32位QWORD:64位 |
push |
压栈 |
push ebp |
等同于:mov esp,esp - 4mov [esp],ebp[]的作用是取寄存器里的地址指向的值没有[]的作用是取寄存器的地址 |
pop |
弹栈 |
pop ebp |
等同于mov ebp,[esp]mov esp,esp+4 |
leave |
返回上级函数时,恢复原本栈空间 |
leave |
mov esp,ebppop ebp |
ret |
返回上级函数后,执行上级函数的指令 |
ret |
等同于pop eip(这条指令实际是不存在的,不能直接向RIP寄存器传送数据) |
call |
调用指定函数,注意,调用函数时,push eip的值实际上eip下一条指令的地址值 |
call dofunc |
等同于push eipjmp dofunc |
nop |
无操作,仅使ip指令+1,对应的指令是:\x90 |
|
|
test |
测试指定寄存器中的值与另一个值(常数或寄存器)的按位与操作结果,而不改变寄存器的值。如果结果为零,将设置零标志位ZF。 |
test rax,rax |
|