学破解论坛

 ★找回密码★
 ★免费注册★

QQ登录

绑定QQ,免密登录

查看: 110|回复: 4

[经验资料] 《汇编》常用指令详解

[复制链接] |关注本帖

  离线 

签到天数: 17

今日第389个签到




GAS中每个操作都是有一个字符的后缀,表明操作数的大小。
C声明
GAS后缀
大小(字节)
char
b
1
short
w
2
(unsigned) int / long / char*
l
4
float
s
4
double
l
8
long double
t
10/12

注意:GAL使用后缀“l”同时表示4字节整数和8字节双精度浮点数,这不会产生歧义因为浮点数使用的是完全不同的指令和寄存器。


操作数格式:
格式
操作数值
名称
样例(GAS = C语言)
$Imm
Imm
立即数寻址
$1 = 1
Ea
R[Ea]
寄存器寻址
%eax = eax
Imm
M[Imm]
绝对寻址
0x104 = *0x104
(Ea)
M[R[Ea]]
间接寻址
(%eax)= *eax
Imm(Ea)
M[Imm+R[Ea]]
(基址+偏移量)寻址
4(%eax) = *(4+eax)
(Ea,Eb)
M[R[Ea]+R[Eb]]
变址
(%eax,%ebx) = *(eax+ebx)
Imm(Ea,Eb)
M[Imm+R[Ea]+R[Eb]]
寻址
9(%eax,%ebx)= *(9+eax+ebx)
(,Ea,s)
M[R[Ea]*s]
伸缩化变址寻址
(,%eax,4)= *(eax*4)
Imm(,Ea,s)
M[Imm+R[Ea]*s]
伸缩化变址寻址
0xfc(,%eax,4)= *(0xfc+eax*4)
(Ea,Eb,s)
M(R[Ea]+R[Eb]*s)
伸缩化变址寻址
(%eax,%ebx,4) = *(eax+ebx*4)
Imm(Ea,Eb,s)
M(Imm+R[Ea]+R[Eb]*s)
伸缩化变址寻址
8(%eax,%ebx,4) = *(8+eax+ebx*4)

注:M[xx]表示在存储器中xx地址的值,R[xx]表示寄存器xx的值,这种表示方法将寄存器、内存都看出一个大数组的形式。


数据传送指令:
指令
效果
描述
movl S,D
D <-- S
传双字
movw S,D
D <-- S
传字
movb S,D
D <-- S
传字节
movsbl S,D
D <-- 符号扩展S
符号位填充(字节->双字)
movzbl S,D
D <-- 零扩展S
零填充(字节->双字)
pushl S
R[%esp] <-- R[%esp] – 4;
M[R[%esp]] <-- S
压栈
popl D
D <-- M[R[%esp]];
R[%esp] <-- R[%esp] + 4;
出栈

注:均假设栈往低地址扩展。


算数和逻辑操作地址:
指令
效果
描述
leal S,D
D = &S
movl地版,S地址入D,D仅能是寄存器
incl D
D++
加1
decl D
D--
减1
negl D
D = -D
取负
notl D
D = ~D
取反
addl S,D
D = D + S
subl S,D
D = D – S
imull S,D
D = D*S
xorl S,D
D = D ^ S
异或
orl S,D
D = D | S
andl S,D
D = D & S
sall k,D
D = D << k
左移
shll k,D
D = D << k
左移(同sall)
sarl k,D
D = D >> k
算数右移
shrl k,D
D = D >> k
逻辑右移



特殊算术操作:
指令
效果
描述
imull S
R[%edx]:R[%eax] = S * R[%eax]
无符号64位乘
mull S
R[%edx]:R[%eax] = S * R[%eax]
有符号64位乘
cltd S
R[%edx]:R[%eax] = 符号位扩展R[%eax]
转换为4字节
idivl S
R[%edx] = R[%edx]:R[%eax] % S;
R[%eax] = R[%edx]:R[%eax] / S;
有符号除法,保存余数和商
divl S
R[%edx] = R[%edx]:R[%eax] % S;
R[%eax] = R[%edx]:R[%eax] / S;
无符号除法,保存余数和商

注:64位数通常存储为,高32位放在edx,低32位放在eax。


条件码:
条件码寄存器描述了最近的算数或逻辑操作的属性。
CF:进位标志,最高位产生了进位,可用于检查无符号数溢出。
OF:溢出标志,二进制补码溢出——正溢出或负溢出。
ZF:零标志,结果为0。
SF:符号标志,操作结果为负。


比较指令:
指令
基于
描述
cmpb S2,S1
S1 – S2
比较字节,差关系
testb S2,S1
S1 & S2
测试字节,与关系
cmpw S2,S1
S1 – S2
比较字,差关系
testw S2,S1
S1 & S2
测试字,与关系
cmpl S2,S1
S1 – S2
比较双字,差关系
testl S2,S1
S1 & S2
测试双字,与关系



访问条件码指令:
指令
同义名
效果
设置条件
sete D
setz
D = ZF
相等/零
setne D
setnz
D = ~ZF
不等/非零
sets D

D = SF
负数
setns D

D = ~SF
非负数
setg D
setnle
D = ~(SF ^OF) & ZF
大于(有符号>)
setge D
setnl
D = ~(SF ^OF)
小于等于(有符号>=)
setl D
setnge
D = SF ^ OF
小于(有符号<)
setle D
setng
D = (SF ^ OF) | ZF
小于等于(有符号<=)
seta D
setnbe
D = ~CF & ~ZF
超过(无符号>)
setae D
setnb
D = ~CF
超过或等于(无符号>=)
setb D
setnae
D = CF
低于(无符号<)
setbe D
setna
D = CF | ZF
低于或等于(无符号<=)



跳转指令:
指令
同义名
跳转条件
描述
jmp   Label

1
直接跳转
jmp   *Operand

1
间接跳转
je     Label
jz
ZF
等于/零
jne    Label
jnz
~ZF
不等/非零
js     Label

SF
负数
jnz    Label

~SF
非负数
jg     Label
jnle
~(SF^OF) & ~ZF
大于(有符号>)
jge    Label
jnl
~(SF ^ OF)
大于等于(有符号>=)
jl     Label
jnge
SF ^ OF
小于(有符号<)
jle     Label
jng
(SF ^ OF) | ZF
小于等于(有符号<=)
ja     Label
jnbe
~CF & ~ZF
超过(无符号>)
jae    Label
jnb
~CF
超过或等于(无符号>=)
jb     Label
jnae
CF
低于(无符号<)
jbe    Label
jna
CF | ZF
低于或等于(无符号<=)



转移控制指令:(函数调用):
指令
描述
call    Label
过程调用,返回地址入栈,跳转到调用过程起始处,返回地址是call后面那条指令的地址
call    *Operand
leave
为返回准备好栈,为ret准备好栈,主要是弹出函数内的栈使用及%ebp


评分


每日系统赠送“免费评分”
评分不仅是免费的,还能提升你自己账号的活跃度。既感谢了楼主,又提升了自己。可谓一箭双雕!何乐而不为?评分安排上!

参与人数 1HB +2 收起 理由
boot + 2 [快捷评语]--积极评分,从我做起。感谢分享!

查看评分详情

学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!

  离线 

签到天数: 2

该用户今日未签到




新手必须会的代码,好好记记!
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!

  离线 

签到天数: 10

该用户今日未签到




满满的感谢。
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!

  离线 

签到天数: 8

该用户今日未签到




收藏,以后再慢慢学!
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!

  离线 

签到天数: 9

今日第169个签到




我也收藏了
学破解论坛关注PC软件安全与移动软件安全领域。学习破解方法,使软件开发者能够更好的弥补软件缺陷,修复软件漏洞,提升软件安全,将损失降为最低。大量的软件加密解密教程,使软件开发者与代码逆向分析爱好者受益颇多,因此被连连称赞。保护开发者的利益与版权是我们持之以恒的动力!学破解论坛将竭尽全力为软件安全领域献出微薄之力!
您需要登录后才可以回帖 登录 | 立即注册

获得更多积分,阅读本版加分规则

关闭

站长推荐上一条 /1 下一条

免责声明

本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者其他任何非法用途!否则,一切后果请用户自负!如有侵权请使用邮件或微信联系站长处理。

站长邮箱:SharkHeng@iCloud.com


站长微信号:SharkHeng|站长邮箱:SharkHeng@iCloud.com|鲨鱼逆向|无图版|手机版|小黑屋|FAQ|VIP破解教程|学破解论坛 ( 京公网安备 11011502002737号 | 京ICP备20003498号-3 )

GMT+8, 2021-11-28 22:06

快速回复 返回顶部 返回列表