西北工业大学计算机系统基础实验报告第2次.docx

上传人:b****6 文档编号:2986753 上传时间:2022-11-16 格式:DOCX 页数:16 大小:545.82KB
下载 相关 举报
西北工业大学计算机系统基础实验报告第2次.docx_第1页
第1页 / 共16页
西北工业大学计算机系统基础实验报告第2次.docx_第2页
第2页 / 共16页
西北工业大学计算机系统基础实验报告第2次.docx_第3页
第3页 / 共16页
西北工业大学计算机系统基础实验报告第2次.docx_第4页
第4页 / 共16页
西北工业大学计算机系统基础实验报告第2次.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

西北工业大学计算机系统基础实验报告第2次.docx

《西北工业大学计算机系统基础实验报告第2次.docx》由会员分享,可在线阅读,更多相关《西北工业大学计算机系统基础实验报告第2次.docx(16页珍藏版)》请在冰豆网上搜索。

西北工业大学计算机系统基础实验报告第2次.docx

西北工业大学计算机系统基础实验报告第2次

计算机系统基础实验课第二次实验报告

对二进制炸弹求解过程的详细描述

首先使用objdump命令对bomb程序进行反汇编,并将汇编代码输出到asm.txt中。

阶段一、字符串比较

打开asm.txt文件,搜索到phase_1函数,可以看到以下代码。

08048b33:

8048b33:

83ec14sub$0x14,%esp

8048b36:

687ca00408push$0x804a07c

8048b3b:

ff74241cpushl0x1c(%esp)

8048b3f:

e83e050000call8049082

8048b44:

83c410add$0x10,%esp

8048b47:

85c0test%eax,%eax

8048b49:

7405je8048b50

8048b4b:

e829060000call8049179

8048b50:

83c40cadd$0xc,%esp

8048b53:

c3ret

可以看出,用户输入字串指针保存在0x1c(%esp),然后调用,待返回后,测试返回值,若equal则进入下一phase,否则,从可知该函数用于比较两函数的值,因此需要两个字串作为输入,上面代码中,pushl0x1c(%esp)用于传递用户字串指针,则push$0x804a07c自然是传递比较字串的指针了。

打开gdb,x/s0x80497c0,可以直接查看到该指针指向的子符串:

所以第一个炸弹的拆弹指令为:

IturnedthemoonintosomethingIcallaDeathStar.

阶段二、循环

在asm.txt文件中可以找到phase_2函数代码如下:

08048b54:

8048b54:

56push%esi

8048b55:

53push%ebx

8048b56:

83ec2csub$0x2c,%esp

8048b59:

65a114000000mov%gs:

0x14,%eax

8048b5f:

89442424mov%eax,0x24(%esp)

8048b63:

31c0xor%eax,%eax

8048b65:

8d44240clea0xc(%esp),%eax

8048b69:

50push%eax

8048b6a:

ff74243cpushl0x3c(%esp)

8048b6e:

e82b060000call804919e

8048b73:

83c410add$0x10,%esp

8048b76:

837c240401cmpl$0x1,0x4(%esp)

8048b7b:

7405je8048b82

8048b7d:

e8f7050000call8049179

8048b82:

8d5c2404lea0x4(%esp),%ebx

8048b86:

8d742418lea0x18(%esp),%esi

8048b8a:

8b03mov(%ebx),%eax

8048b8c:

01c0add%eax,%eax

8048b8e:

394304cmp%eax,0x4(%ebx)

8048b91:

7405je8048b98

8048b93:

e8e1050000call8049179

8048b98:

83c304add$0x4,%ebx

8048b9b:

39f3cmp%esi,%ebx

8048b9d:

75ebjne8048b8a

8048b9f:

8b44241cmov0x1c(%esp),%eax

8048ba3:

65330514000000xor%gs:

0x14,%eax

8048baa:

7405je8048bb1

8048bac:

e8dffbffffcall8048790<__stack_chk_fail@plt>

8048bb1:

83c424add$0x24,%esp

8048bb4:

5bpop%ebx

8048bb5:

5epop%esi

8048bb6:

c3ret

根据call804919e可以推测题目要求是输入六个数字。

又根据cmpl$0x1,0x4(%esp)可以推断,输入的第一个数字是1;jne8048b8a可以知道程序是一个循环。

add%eax,%eax和cmp%eax,0x4(%ebx)可以明白,每次循环的答案是上一个答案的2倍,所以可以推测答案序列为:

12481632

测试发现结果正确。

阶段三、条件/分支

Phase_3代码如下:

08048bb7:

8048bb7:

83ec28sub$0x28,%esp

8048bba:

65a114000000mov%gs:

0x14,%eax

8048bc0:

89442418mov%eax,0x18(%esp)

8048bc4:

31c0xor%eax,%eax

8048bc6:

8d442414lea0x14(%esp),%eax

8048bca:

50push%eax

8048bcb:

8d442413lea0x13(%esp),%eax

8048bcf:

50push%eax

8048bd0:

8d442418lea0x18(%esp),%eax

8048bd4:

50push%eax

8048bd5:

68daa00408push$0x804a0da

8048bda:

ff74243cpushl0x3c(%esp)

8048bde:

e82dfcffffcall8048810<__isoc99_sscanf@plt>

8048be3:

83c420add$0x20,%esp

8048be6:

83f802cmp$0x2,%eax

8048be9:

7f05jg8048bf0

8048beb:

e889050000call8049179

8048bf0:

837c240407cmpl$0x7,0x4(%esp)

8048bf5:

0f87fc000000ja8048cf7

8048bfb:

8b442404mov0x4(%esp),%eax

8048bff:

ff2485eca00408jmp*0x804a0ec(,%eax,4)

8048c06:

b871000000mov$0x71,%eax

8048c0b:

817c2408e90000cmpl$0xe9,0x8(%esp)

8048c12:

00

8048c13:

0f84e8000000je8048d01

8048c19:

e85b050000call8049179

8048c1e:

b871000000mov$0x71,%eax

8048c23:

e9d9000000jmp8048d01

8048c28:

b86f000000mov$0x6f,%eax

8048c2d:

817c2408b90200cmpl$0x2b9,0x8(%esp)

8048c34:

00

8048c35:

0f84c6000000je8048d01

8048c3b:

e839050000call8049179

8048c40:

b86f000000mov$0x6f,%eax

8048c45:

e9b7000000jmp8048d01

8048c4a:

b870000000mov$0x70,%eax

8048c4f:

817c24088e0100cmpl$0x18e,0x8(%esp)

8048c56:

00

8048c57:

0f84a4000000je8048d01

8048c5d:

e817050000call8049179

8048c62:

b870000000mov$0x70,%eax

8048c67:

e995000000jmp8048d01

8048c6c:

b868000000mov$0x68,%eax

8048c71:

817c24088d0300cmpl$0x38d,0x8(%esp)

8048c78:

00

8048c79:

0f8482000000je8048d01

8048c7f:

e8f5040000call8049179

8048c84:

b868000000mov$0x68,%eax

8048c89:

eb76jmp8048d01

8048c8b:

b864000000mov$0x64,%eax

8048c90:

817c2408eb0000cmpl$0xeb,0x8(%esp)

8048c97:

00

8048c98:

7467je8048d01

8048c9a:

e8da040000call8049179

8048c9f:

b864000000mov$0x64,%eax

8048ca4:

eb5bjmp8048d01

8048ca6:

b86a000000mo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1