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

文档介绍:

西北工业大学_计算机系统基础_实验报告_第2次计算机系统基础实验课第二次实验报告对二进***求解过程的详细描述首先使用objdump命令对bomb程序进行反汇编,并将汇编代码输出到asm.txt中。阶段一、字符串比较打开asm.txt文件,搜索到phase_1函数,可以看到以下代码。08048b33:8048b33: 83ec14 sub$0x14,%esp8048b36: 687ca00408 push$0x804a07c8048b3b: ff74241c pushl0x1c(%esp)8048b3f: e83e050000 call8048b44: 83c410 add$0x10,%esp8048b47: 85c0 test%eax,%eax8048b49: 7405 je8048b508048b4b: e829060000 call8048b50: 83c40c add$0xc,%esp8048b53: c3 ret可以看出,用户输入字串指针保存在0x1c(%esp),然后调用,待返回后,测试返回值,若equal则进入下一phase,否则,从可知该函数用于比较两函数的值,因此需要两个字串作为输入,上面代码中,pushl0x1c(%esp)用于传递用户字串指针,则push$0x804a07c自然是传递比较字串的指针了。打开gdb,x/s0x80497c0,可以直接查看到该指针指向的子符串:所以第一个炸弹的拆弹指令为:IturnedthemoonintosomethingIcallaDeathStar.阶段二、循环在asm.txt文件中可以找到phase_2函数代码如下:08048b54:8048b54: 56 push%esi8048b55: 53 push%ebx8048b56: 83ec2c sub$0x2c,%esp8048b59: 65a114000000 mov%gs:0x14,%eax8048b5f: 89442424 mov%eax,0x24(%esp)8048b63: 31c0 xor%eax,%eax8048b65: 8d44240c lea0xc(%esp),%eax8048b69: 50 push%eax8048b6a: ff74243c pushl0x3c(%esp)8048b6e: e82b060000 calle8048b73: 83c410 add$0x10,%esp8048b76: 837c240401 cmpl$0x1,0x4(%esp)8048b7b: 7405 je8048b828048b7d: e8f7050000 call8048b82: 8d5c2404 lea0x4(%esp),%ebx8048b86: 8d742418 lea0x18(%esp),%esi8048b8a: 8b03 mov(%ebx),%eax8048b8c: 01c0 add%eax,%eax8048b8e: 394304 cmp%eax,0x4(%ebx)8048b91: 7405 je8048b988048b93: e8e1050000 call8048b98: 83c304 add$0x4,%ebx8048b9b: 39f3 cmp%esi,%ebx8048b9d: 75eb jne8048b8a8048b9f: 8b44241c mov0x1c(%esp),%eax8048ba3: 65330514000000 xor%gs:0x14,%eax8048baa: 7405 je8048bb18048bac: e8dffbffff call<__stack_chk_>8048bb1: 83c424 add$0x24,%esp8048bb4: 5b pop%ebx8048bb5: 5e pop%esi8048bb6: c3 ret根据calle可以推测题目要求是输入六个数字。又根据cmpl$0x1,0x4(%esp)可以推断,输入的第一个数字是1;jne8048b8a可以知道程序是一个循环。add%eax,%eax和cmp%eax,0x4(%ebx)可以明白,

内容来自淘豆网www.taodocs.com转载请标明出处.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值