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

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
- . z. LAB1实验报告 实验目的: 使用课程知识撤除一个Binary Bombs〞来增强对程序的机器级表示、汇编语言、调试器和逆向工程等理解。 实验简介: 一个Binary Bombs〞〔二进制炸弹,简称炸弹〕是一个Linu*可执行C程序,包含phase1~phase6共6个阶段。炸弹运行各阶段要求输入一个字符串,假设输入符合程序预期,该阶段炸弹被撤除〞,否则爆炸〞。实验目标是你需要撤除尽可能多的炸弹。 运行结果: 通关密码储存在0014301-151420211.t*t文件中。 成功运行结果截图: 实验中的六组密码: PHASE1:字符串比拟 本关比拟简单,根据课件中的提示用GDB将最先压栈的那个字符串常量打印出来,然后将其作为密码输入,比拟成功后即通关。 08048ab2 phase_1: 8048ab2: 83 ec 14 sub $0*14,%esp 8048ab5: 68 04 9f 04 08 push $0*8049f04 8048aba: ff 74 24 1c pushl 0*1c(%esp) 8048abe: e8 4d 04 00 00 call 8048f10 strings_not_equal 将地址0*8049f04中的值打印出来: 即The future will be better tomorrow.〞 PHASE2:循环 在查看汇编语言的时候,会看到有调用一个read_si*_number函数,猜想此题是让输入六个数字。 08048ad3 phase_2: 8048ad3: 56 push %esi 8048ad4: 53 push %eb* 8048ad5: 83 ec 2c sub $0*2c,%esp 8048ad8: 8d 44 24 10 lea 0*10(%esp),%ea* 8048adc: 50 push %ea* 8048add: ff 74 24 3c pushl 0*3c(%esp) 8048ae1: e8 46 05 00 00 call 804902c read_si*_numbers 8048ae6: 83 c4 10 add $0*10,%esp 8048ae9: 83 7c 24 08 01 cmpl $0*1,0*8(%esp)------?判定是否为1 8048aee: 74 1e je 8048b0e phase_2+0*3b 8048af0: e8 12 05 00 00 call 8049007 e*plode_bomb 8048af5: eb 17 jmp 8048b0e phase_2+0*3b 8048af7: 8b 03 mov (%eb*),%ea* 8048af9: 01 c0 add %ea*,%ea*----?进展自加,扩大两倍 8048afb: 39 43 04 cmp %ea*,0*4(%eb*) 8048afe: 74 05 je 8048b05 phase_2+0*32 8048b00: e8 02 05 00 00 call 8049007 e*plode_bomb 8048b05: 83 c3 04 add $0*4,%eb* 8048b08: 39 f3 cmp %esi,%eb* 8048b0a: 75 eb jne 8048af7 phase_2+0*24 8048b0c: eb 0a jmp 8048b18 phase_2+0*45 8048b0e: 8d 5c 24 08 lea 0*8(%esp),%eb* 8048b12: 8d 74 24 1c lea 0*1c(%esp),%esi 8048

文档评论(0)

dqxhm88 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档