CSAPP 二进制炸弹 binary bomb lab 1 第一关 ——深入理解计算机系统

CSAPP bomb lab1

1.phase_1主函数:

0000000000400ee0 <phase_1>:
  400ee0:	48 83 ec 08          	sub    $0x8,%rsp
  400ee4:	be 00 24 40 00       	mov    $0x402400,%esi
  400ee9:	e8 4a 04 00 00       	callq  401338 <strings_not_equal> 
// call一个比较字符串的函数,两字符串不相等则返回1,相等则返回0
  400eee:	85 c0                	test   %eax,%eax
  400ef0:	74 05                	je     400ef7 <phase_1+0x17> 
// 若等于0,则正常返回,不然爆炸
  400ef2:	e8 43 05 00 00       	callq  40143a <explode_bomb>
  400ef7:	48 83 c4 08          	add    $0x8,%rsp
  400efb:	c3                   	retq  

phase_1逻辑很清楚,调用strings_not_equal函数,若返回0则成功,返回1则bomb(),所以先分析后面的函数部分。`

2.strings_not_equal 函数:

0000000000401338 <strings_not_equal>:	
  401338:	41 54                	push   %r12
  40133a:	55                   	push   %rbp
  40133b:	53                   	push   %rbx
  40133c:	48 89 fb             	mov    %rdi,%rbx	#rbx=x
  40133f:	48 89 f5             	mov    %rsi,%rbp	#rbp=y	
  401342:	e8 d4 ff ff ff       	callq  40131b <string_length>		
  401347:	41 89 c4             	mov    %eax,%r12d	# r12d=length(x) 
  40134a:	48 89 ef             	mov    %rbp,%rdi	# rdi=y
  40134d:	e8 c9 ff ff ff       	callq  40131b <string_length>		
  401352:	ba 01 00 00 00       	mov    $0x1,%edx	# edx=1
  401357:	41 39 c4             	cmp    %eax,%r12d			
  40135a:	75 3f                	jne    40139b <strings_not_equal+0x63> 
// if(length(y)!=length(x))-->return 1
  40135c:	0f b6 03             	movzbl (%rbx),%eax			#rax=*x
  40135f:	84 c0                	test   %al,%al				
  401361
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值