X86汇编-指令综合作业
1. 调试器中编程,用循环计算斐波那契数列的前12个值,并将结果存放到EAX中。
代码如下:
将eax记录的数值逐一写入一段内存中,方便老师检查结果
但这里有个小bug,我们看出最后存的结果不止12个,原来是给ecx赋值的时候忘记了十六进制,如果赋值为0x9就可以了
2. 找到两块可写的连续内存,大小均为128字节,记为串 A 和串 B ,其中串 A 中有随机数据。调试器编程,将串 A 中的数据逆序存放到串 B 中。
找到两块可写的连续内存:
A:
B:
首先将A串压栈,设置ecx=127
,执行下列代码
可见压栈成功
下面出栈到B串,设置ecx=127
,执行以下代码
实现逆序
3. XOR 指令有如下特点: A XOR B = C , B XOR C = A 。找到三块可写的连续内存,大小均为128字节,记为串 A 、串 B 和串 C ,其中串 A 中有随机数据。请用 XOR 指令设计一个简单加密解密算法,采用4字节随机数作为密钥,将串 A 进行加密,密文存放到串 B 中,然后再将串 B 解密,存放到串 C 中,请调试编程并展示密文和解密。
依然选择第二问的串A与串B,选择串C如下
串A原文如下:
设置ecx=128
,密钥设置为11111111
存于eax中,加密代码如下,以ebx为暂存寄存器,运算结果通过间址寻址写入串B
密文如下
解密代码与加密代码具有相同思路
查看解密结果
与明文相同,加密解密成功