汇编命令
空指令
nop #90
软件断点
int 3 #CC // 调试状态会断住程序;非调试状态会抛出SEH异常
压栈
push ebp #55 // 将ebp压栈(esp-=4)
push edi #57 // 将edi压栈(esp-=4)
弹栈
pop ecx // 将栈顶的4个字节弹出,并放在ecx中(esp+=4)
函数返回
ret // (esp+=4)
ret 8 // (esp+=8)
赋值
mov ebp,esp #8bec // ebp=esp
mov ecx,0Ah #b90a000000 // ecx=0Ah
mov eax,0CCCCCCCCh #b8cccccccc // eax=0CCCCCCCCh
mov dword ptr [ebp-0Ch],2 // [ebp-0Ch]=2(将2写入到ebp-0Ch地址处,中括号表示取值,相当于c语言里面的*运算符)
加法
减法
sub esp,28h #83ec28 // esp-=28h
取有效地址
lea edi,[ebp-28h] // edi=ebp-28h
串赋值
rep movs dword ptr es:[edi], dword ptr [esi] // 循环从esi指向的内存区域复制数据到edi处的内存区域,复制ecx次,每次数据长度为一个DWORD
串存储
rep stos dword ptr es:[edi] #f3ab // 将eax的值循环写到edi处的内存区域中,循环ecx次,每次数据长度为一个DWORD