逆向中常见寄存器及常用汇编指令

寄存器

通用寄存器 (前八个)
3216位	作用
EAX(累加器)		    AX	    作用于操作数和结果的数据
EBX(基址寄存器)	BX	    DS段中的数据指针
ECX(计数器)		CX		用于字符串和循环操作
EDX(数据寄存器)	DX		输入/输出指针
EBP(扩展基址寄存器)BP		SS段中的栈底指针
ESI(源变址寄存器)	SI		字符串操作源指针
EDI(目的变址寄存器)DI		字符串操作的目的指针
ESP(栈指针寄存器)	SP		SS段中的栈顶指针

EIP(指令寄存器)		IP		下一条将要执行的指令

段寄存器(6个)
3216位	作用
ECS		CS	代码段寄存器,存放代码段的段基址
ESS		SS	栈段寄存器,存放栈的段基址
EDS		DS	数据段寄存器,存放数据段的段基址
EES		ES	附加段寄存器,存放附加数据段的段基址
EFS		FS	附加段寄存器,存放附加数据段的段基址
EGS		GS	附加段寄存器,存放附加数据段的段基址

程序状态与控制寄存器(状态标志)

CF
进位标志
无符号整数发生溢出时被置为1

ZF
零标志
运算结果为0时,其值为1,否则为零

OF
溢出标志
有符号整数发生溢出时被置为1

SF
符号标志
结果为负,SF=1,结果为非负,SF=0

PF
奇偶标志
二进制1的个数为偶数个时,为1

DF
方向标志位
DF=0时,si,di递增。否则递减

汇编指令

这里有本手册,可以对着看一下这些指令的作用
链接:https://pan.baidu.com/s/12JSgbh4Ww8_QK1s36sbJ9Q
提取码:n0wf
常见的一些指令如下

数据转移指令
MOV
算术运算指令
ADD
SUB
MUL/IMUL
DIV/IDIV
逻辑运算符
AND
OR 
XOR
NOT
分支跳转指令
JMP/JE/JLE
循环指令
LOOP
栈指令操作
PUSH
POP
函数相关指令
CALL
RET
中断指令
INT
比较指令
cmp

条件跳转指令

上面已经有过无条件跳转指令jmp了
下面这些是与状态标志有关的
cmp dest,str
jxx xxxx
在这里插入图片描述
当然这个表格的记法有一些技巧
一般条件跳转指令会与比较指令结合使用
例如cmp,test之类的
例如 je j->jump转移,e->equal相同
也就是相同转移,意思就是写两个数相同就跳转
cmp是比较指令,也就是两个数相减,但是不存储,只是改变状态标志

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值