很少记录汇编的东西,不过做逆向必须用到,特此记录。

EAX 累加器 EBX 基址 ECX 计数器 EDX 数据 ESI 源指针? EDI 目标指针 ESP 栈指针 EBP 基址指针

其中ESP EBP常作为程序的入口和出口点。栈顶和栈底。

EBX ESI EDI必须保留。比如你要调用WINAPI必须先保存这3个寄存器。调用结束后再做恢复。所以写汇编过程中可以把这3个寄存器作为计数器或者变量。

EAX ECX EDX 常用运算。

[ebp+8]常作为变量存储地址的开始。

PUSHAD POPAD 保存和恢复现场。

地址变量:

[ Base Address + Index * Scale + Displacement ]

[ebx + ecx * 4 + 8]

ebx is the base address.  base
ecx
is the index.  counter
4
is the scale based on the data size.
8
is the
displacement in BYTES.

区段寄存器

CS code segment
DS data segment
SS stack segment
ES extra segment
FS (only 286+) general purpose segment
GS (only 386+) general purpose segment

运算符

MOV ADD SUB MUL DIV

AND OR XOR NOT

INC DEC

SHL SHR 左移和右移补0

SAL SAR ..左移和右移补1

TEST 做and运算

Related articles

  • No Related Post