二元炸弹阶段5

时间:2015-11-18 21:30:41

标签: assembly x86

我目前正在研究二元炸弹实验室,我很困惑。我试着问我的朋友并在网上搜索,但似乎我的炸弹是不同的。



Dump of assembler code for function phase_5:
   0x08048d7e <+0>:	push   %ebp
   0x08048d7f <+1>:	mov    %esp,%ebp
   0x08048d81 <+3>:	push   %edi
   0x08048d82 <+4>:	push   %esi
   0x08048d83 <+5>:	push   %ebx
=> 0x08048d84 <+6>:	sub    $0x1c,%esp
   0x08048d87 <+9>:	mov    0x8(%ebp),%ebx
   0x08048d8a <+12>:	mov    %ebx,(%esp)
   0x08048d8d <+15>:	call   0x8048f10 <string_length>
   0x08048d92 <+20>:	cmp    $0x6,%eax
   0x08048d95 <+23>:	je     0x8048d9c <phase_5+30>
   0x08048d97 <+25>:	call   0x8049016 <explode_bomb>
   0x08048d9c <+30>:	mov    $0x0,%edx
   0x08048da1 <+35>:	mov    $0x0,%eax
   0x08048da6 <+40>:	mov    $0x8049f80,%ecx
   0x08048dab <+45>:	movsbl (%ebx,%eax,1),%esi
   0x08048daf <+49>:	and    $0xf,%esi
   0x08048db2 <+52>:	add    (%ecx,%esi,4),%edx
   0x08048db5 <+55>:	add    $0x1,%eax
   0x08048db8 <+58>:	cmp    $0x6,%eax
   0x08048dbb <+61>:	jne    0x8048dab <phase_5+45>
   0x08048dbd <+63>:	cmp    $0x37,%edx
   0x08048dc0 <+66>:	je     0x8048dc7 <phase_5+73>
   0x08048dc2 <+68>:	call   0x8049016 <explode_bomb>
   0x08048dc7 <+73>:	add    $0x1c,%esp
   0x08048dca <+76>:	pop    %ebx
   0x08048dcb <+77>:	pop    %esi
   0x08048dcc <+78>:	pop    %edi
   0x08048dcd <+79>:	pop    %ebp
   0x08048dce <+80>:	ret    
&#13;
&#13;
&#13; 我相信我的结果应该是六个数字,总计是37.这是我从gdb得到的

&#13;
&#13;
(gdb) x/15wx 0x8049f80
0x8049f80 <array.2963>:	0x00000002	0x0000000a	0x00000006	0x00000001
0x8049f90 <array.2963+16>:	0x0000000c	0x00000010	0x00000009	0x00000003
0x8049fa0 <array.2963+32>:	0x00000004	0x00000007	0x0000000e	0x00000005
0x8049fb0 <array.2963+48>:	0x0000000b	0x00000008	0x0000000f
&#13;
&#13;
&#13;

有人可以向我解释一下吗?我真的很感激。

0 个答案:

没有答案