编程语言
首页 > 编程语言> > 【逆向】第三章 寄存器及汇编基础

【逆向】第三章 寄存器及汇编基础

作者:互联网

文章目录


前言

在这里插入图片描述

“把字母和编号记住,主要用途可以不计,杯子推荐用来装水并不意味着不能装酒”
这是8个32位寄存器

一、用OD打开一个exe

紫色高亮的那一条就是cpu执行的那个位置,按下F8以后,便会往下执行一行。
右键一条代码,assemble键入如下汇编指令

mov eax,0x1

在汇编中mov是移动的意思,后面eax是前言里32位寄存器的名字,在汇编里数字前加一个0x表示16进制,执行后如下图

在这里插入图片描述
1叫源操作数,eax叫目标操作数,mov把后面那个值放入eax这个寄存器里面

mov ecx,0x123456

可以执行

mov edx,0x123456789

写了九个,但是是32位寄存器,所以这时候从9开始往前面存,1就舍弃掉了

mov eax,0x1
mov ecx,0x123456
mov edx,0x123456789

这三个指令,设此时eax前面是高亮段,按F8,右边eax值为1,再按一次exc为123456,再按一次edx为98765432

二、通用寄存器及mov指令

寄存器都是CPU里面的

1.通用寄存器表

在这里插入图片描述
16位跟32位的名字差一个E,8位寄存器,16位和32位结构:

2.通用寄存器结构

在这里插入图片描述
AX就是EAX中间砍一刀,也就是说AX就是EAX里面,EAX后,一半就是AX
16位寄存器再从中间砍一半就是8位寄存器,如AX,前面高位8 ~ 15就是AH,后面0 ~ 7就是AL

3.代码演示

汇编语言不停移动数据,在内存与寄存器,在寄存器与寄存器之间不停移动数据,数据移动越复杂,程序就越复杂

代码移动示例

mov eax,0xAAAAAAAA
mov ax,0xBBBB
mov ah,0xDD
mov al,0xEE

键入代码后如下图
在这里插入图片描述
第一次按下F8,闪到ax,结果如图
在这里插入图片描述
第二次按下F8,闪到Ah结果如图
在这里插入图片描述
第三次按下F8,闪到AL,结果如图

在这里插入图片描述
第四次按下F8,结果如图
在这里插入图片描述
再次键入如下代码,把eax的值放入ecx

mov ecx,eax

按下F8
在这里插入图片描述

4.mov语句语法

mov的语法如下:
在这里插入图片描述
r/m8:r表示通用寄存器,m表示内存/8,表示8位寄存器或8位内存
如mov ch,al,把al移到ch都是8位寄存器,可行
其他的同理
mov cx,1=mov cx,0001
mov指令是第一条汇编指令,但是其他汇编指令和它差不多
下图位海哥对mov的总结
在这里插入图片描述

三、其他汇编指令

在这里插入图片描述

1.add指令

在这里插入图片描述
键入如下代码:
在这里插入图片描述
执行结果:
在这里插入图片描述
按下F8在这里插入图片描述

2.sub指令

在这里插入图片描述
键入sub eax,0x2后并执行的情况
在这里插入图片描述

3.and指令

与运算:and(汇编) &(C)

mov eax,0x2
and eax,0x3

结果为2,运算原理是将2和3转化为二进制,然后一位一位地进行与

4.or指令

mov eax,0x2
and eax,0x3
or eax,0x3

结果为3,原理同and指令

5.xor指令

原理同上,进行xor运算

6.not指令

原理同上,进行not运算
在这里插入图片描述

总结

提示:这里对文章进行总结:
以上就是今天讲的内容,注意CPU里的寄存器,及寄存器的关系,指令的语法格式

标签:逆向,通用寄存器,第三章,F8,mov,eax,指令,寄存器
来源: https://blog.csdn.net/qq_46441427/article/details/112491708