深入理解计算机系统LAB2.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

深入理解计算机系统LAB2

LAB1实验报告

实验目的:

使用课程知识拆除一个“BinaryBombs”来增强对程序的机器级表示、汇编语言、调试器和逆向工程等理解。

实验简介:

一个“BinaryBombs”(二进制炸弹,简称炸弹)是一个Linux可执行C程序,包含phase1~phase6共6个阶段。炸弹运行各阶段要求输入一个字符串,若输入符合程序预期,该阶段炸弹被“拆除”,否则“爆炸”。实验目标是你需要拆除尽可能多的炸弹。

运行结果:

通关密码储存在0014301-151420131.txt文件中。

成功运行结果截图:

实验中的六组密码:

PHASE1:字符串比较

本关比较简单,根据课件中的提示用GDB将最先压栈的那个字符串常量打印出来,然后将其作为密码输入,比较成功后即通关。

08048ab2phase_1:

8048ab2: 83ec14 sub$0x14,%esp

8048ab5: 68049f0408 push$0x8049f04

8048aba: ff74241c pushl0x1c(%esp)

8048abe: e84d040000 call8048f10strings_not_equal

将地址0x8049f04中的值打印出来:

即“Thefuturewillbebettertomorrow.”

PHASE2:循环

在查看汇编语言的时候,会看到有调用一个read_six_number函数,猜测此题是让输入六个数字。

08048ad3phase_2:

8048ad3: 56 push%esi

8048ad4: 53 push%ebx

8048ad5: 83ec2c sub$0x2c,%esp

8048ad8: 8d442410 lea0x10(%esp),%eax

8048adc: 50 push%eax

8048add: ff74243c pushl0x3c(%esp)

8048ae1: e846050000 call804902cread_six_numbers

8048ae6: 83c410 add$0x10,%esp

8048ae9: 837c240801 cmpl$0x1,0x8(%esp)------?判定是否为1

8048aee: 741e je8048b0ephase_2+0x3b

8048af0: e812050000 call8049007explode_bomb

8048af5: eb17 jmp8048b0ephase_2+0x3b

8048af7: 8b03 mov(%ebx),%eax

8048af9: 01c0 add%eax,%eax----?进行自加,扩大两倍

8048afb: 394304 cmp%eax,0x4(%ebx)

8048afe: 7405 je8048b05phase_2+0x32

8048b00: e802050000 call8049007explode_bomb

8048b05: 83c304 add$0x4,%ebx

8048b08: 39f3 cmp%esi,%ebx

8048b0a: 75eb jne8048af7phase_2+0x24

8048b0c: eb0a jmp8048b18phase_2+0x45

8048c83: 83ec1c sub$0x1c,%esp

8048c86: 8d442408 lea0x8(%esp),%eax

8048c8a: 50

您可能关注的文档

文档评论(0)

138****2866 + 关注
实名认证
内容提供者

施工员持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年06月09日上传了施工员

1亿VIP精品文档

相关文档