X86汇编-指令综合作业

1. 调试器中编程,用循环计算斐波那契数列的前12个值,并将结果存放到EAX中。

思路就是将首先将斐波那契数列的前两个数分别存到ebx、eax中,同时在内存单元不断存储eax得到的数列值,新的数列值存到eax中,ebx的值不断的由存入内存单元的上一轮eax更新,这样实现了ebx、eax交替并列出现,将整个过程循环进行

代码如下:

img

将eax记录的数值逐一写入一段内存中,方便老师检查结果

img

但这里有个小bug,我们看出最后存的结果不止12个,原来是给ecx赋值的时候忘记了十六进制,如果赋值为0x9就可以了

2. 找到两块可写的连续内存,大小均为128字节,记为串 A 和串 B ,其中串 A 中有随机数据。调试器编程,将串 A 中的数据逆序存放到串 B 中。

找到两块可写的连续内存:

A:

img

img

B:

img

img

首先将A串压栈,设置ecx=127,执行下列代码

img

可见压栈成功

img

下面出栈到B串,设置ecx=127,执行以下代码

img

实现逆序

img

3. XOR 指令有如下特点: A XOR B = C , B XOR C = A 。找到三块可写的连续内存,大小均为128字节,记为串 A 、串 B 和串 C ,其中串 A 中有随机数据。请用 XOR 指令设计一个简单加密解密算法,采用4字节随机数作为密钥,将串 A 进行加密,密文存放到串 B 中,然后再将串 B 解密,存放到串 C 中,请调试编程并展示密文和解密。

依然选择第二问的串A与串B,选择串C如下

img

img

串A原文如下:

img

设置ecx=128,密钥设置为11111111存于eax中,加密代码如下,以ebx为暂存寄存器,运算结果通过间址寻址写入串B

img

密文如下

img

解密代码与加密代码具有相同思路

img

查看解密结果

img

与明文相同,加密解密成功

posted @ 2022-03-19 14:42  Xiaohanahahah  阅读(75)  评论(0编辑  收藏  举报