Bomb Lab Phase 1-5
This commit is contained in:
parent
f1034e9a82
commit
05f33d22bc
|
@ -0,0 +1,8 @@
|
|||
break phase_2
|
||||
disable $bpnum
|
||||
break *0x8048c02
|
||||
disable $bpnum
|
||||
break explode_bomb
|
||||
break *0x8048bcd
|
||||
disable $bpnum
|
||||
break *0x8048c52
|
|
@ -493,39 +493,39 @@ Disassembly of section .text:
|
|||
8048d5b: c3 ret
|
||||
|
||||
08048d5c <func4>:
|
||||
8048d5c: 56 push %esi
|
||||
8048d5c: 56 push %esi ;save registers
|
||||
8048d5d: 53 push %ebx
|
||||
8048d5e: 83 ec 14 sub $0x14,%esp
|
||||
8048d61: 8b 54 24 20 mov 0x20(%esp),%edx
|
||||
8048d65: 8b 44 24 24 mov 0x24(%esp),%eax
|
||||
8048d69: 8b 5c 24 28 mov 0x28(%esp),%ebx
|
||||
8048d6d: 89 d9 mov %ebx,%ecx
|
||||
8048d6f: 29 c1 sub %eax,%ecx
|
||||
8048d71: 89 ce mov %ecx,%esi
|
||||
8048d73: c1 ee 1f shr $0x1f,%esi
|
||||
8048d76: 01 f1 add %esi,%ecx
|
||||
8048d78: d1 f9 sar %ecx
|
||||
8048d7a: 01 c1 add %eax,%ecx
|
||||
8048d7c: 39 d1 cmp %edx,%ecx
|
||||
8048d7e: 7e 17 jle 8048d97 <func4+0x3b>
|
||||
8048d80: 83 e9 01 sub $0x1,%ecx
|
||||
8048d83: 89 4c 24 08 mov %ecx,0x8(%esp)
|
||||
8048d87: 89 44 24 04 mov %eax,0x4(%esp)
|
||||
8048d8b: 89 14 24 mov %edx,(%esp)
|
||||
8048d8e: e8 c9 ff ff ff call 8048d5c <func4>
|
||||
8048d93: 01 c0 add %eax,%eax
|
||||
8048d95: eb 20 jmp 8048db7 <func4+0x5b>
|
||||
8048d97: b8 00 00 00 00 mov $0x0,%eax
|
||||
8048d9c: 39 d1 cmp %edx,%ecx
|
||||
8048d9e: 7d 17 jge 8048db7 <func4+0x5b>
|
||||
8048da0: 89 5c 24 08 mov %ebx,0x8(%esp)
|
||||
8048da4: 83 c1 01 add $0x1,%ecx
|
||||
8048da7: 89 4c 24 04 mov %ecx,0x4(%esp)
|
||||
8048dab: 89 14 24 mov %edx,(%esp)
|
||||
8048dae: e8 a9 ff ff ff call 8048d5c <func4>
|
||||
8048db3: 8d 44 00 01 lea 0x1(%eax,%eax,1),%eax
|
||||
8048db7: 83 c4 14 add $0x14,%esp
|
||||
8048dba: 5b pop %ebx
|
||||
8048d5e: 83 ec 14 sub $0x14,%esp ;allocate stack
|
||||
8048d61: 8b 54 24 20 mov 0x20(%esp),%edx ;edx=x
|
||||
8048d65: 8b 44 24 24 mov 0x24(%esp),%eax ;eax=y
|
||||
8048d69: 8b 5c 24 28 mov 0x28(%esp),%ebx ;ebx=z
|
||||
8048d6d: 89 d9 mov %ebx,%ecx ;ecx=z
|
||||
8048d6f: 29 c1 sub %eax,%ecx ;ecx=z-y
|
||||
8048d71: 89 ce mov %ecx,%esi ;esi=z-y
|
||||
8048d73: c1 ee 1f shr $0x1f,%esi ;esi is sign bit of z-y, biased bit
|
||||
8048d76: 01 f1 add %esi,%ecx ;ecx=z-y+sign(z-y)
|
||||
8048d78: d1 f9 sar %ecx ;ecx=(z-y)/2
|
||||
8048d7a: 01 c1 add %eax,%ecx ;ecx=y+(z-y)/2=(y+z)/2?
|
||||
8048d7c: 39 d1 cmp %edx,%ecx ;(z+y)/2<=x?
|
||||
8048d7e: 7e 17 jle 8048d97 <func4+0x3b> ;if so, goto 0x8048d97
|
||||
8048d80: 83 e9 01 sub $0x1,%ecx ;ecx--
|
||||
8048d83: 89 4c 24 08 mov %ecx,0x8(%esp) ;z(func4)=ecx
|
||||
8048d87: 89 44 24 04 mov %eax,0x4(%esp) ;y(func4)=eax
|
||||
8048d8b: 89 14 24 mov %edx,(%esp) ;x(func4)=edx=x
|
||||
8048d8e: e8 c9 ff ff ff call 8048d5c <func4> ;recursive call
|
||||
8048d93: 01 c0 add %eax,%eax ;eax=eax+eax (return value)
|
||||
8048d95: eb 20 jmp 8048db7 <func4+0x5b> ;return eax
|
||||
8048d97: b8 00 00 00 00 mov $0x0,%eax ;eax=0
|
||||
8048d9c: 39 d1 cmp %edx,%ecx ;ecx<=x?
|
||||
8048d9e: 7d 17 jge 8048db7 <func4+0x5b> ;if so, return 0
|
||||
8048da0: 89 5c 24 08 mov %ebx,0x8(%esp) ;z(func4)=ebx
|
||||
8048da4: 83 c1 01 add $0x1,%ecx ;ecx++
|
||||
8048da7: 89 4c 24 04 mov %ecx,0x4(%esp) ;y(func4)=ecx
|
||||
8048dab: 89 14 24 mov %edx,(%esp) ;x(func4)=edx=x
|
||||
8048dae: e8 a9 ff ff ff call 8048d5c <func4> ;recursive call
|
||||
8048db3: 8d 44 00 01 lea 0x1(%eax,%eax,1),%eax ;eax=2*eax+1, return value
|
||||
8048db7: 83 c4 14 add $0x14,%esp ;restore stack pointer
|
||||
8048dba: 5b pop %ebx ;restore registers
|
||||
8048dbb: 5e pop %esi
|
||||
8048dbc: c3 ret
|
||||
|
||||
|
@ -608,42 +608,44 @@ Disassembly of section .text:
|
|||
8048eb1: 56 push %esi
|
||||
8048eb2: 53 push %ebx
|
||||
8048eb3: 83 ec 44 sub $0x44,%esp
|
||||
8048eb6: 8d 44 24 10 lea 0x10(%esp),%eax
|
||||
8048eb6: 8d 44 24 10 lea 0x10(%esp),%eax ;read 6 numbers to esp+0x10, set as a
|
||||
8048eba: 89 44 24 04 mov %eax,0x4(%esp)
|
||||
8048ebe: 8b 44 24 50 mov 0x50(%esp),%eax
|
||||
8048ec2: 89 04 24 mov %eax,(%esp)
|
||||
8048ec5: e8 52 03 00 00 call 804921c <read_six_numbers>
|
||||
8048eca: be 00 00 00 00 mov $0x0,%esi
|
||||
8048ecf: 8b 44 b4 10 mov 0x10(%esp,%esi,4),%eax
|
||||
8048ed3: 83 e8 01 sub $0x1,%eax
|
||||
8048ed6: 83 f8 05 cmp $0x5,%eax
|
||||
8048ed9: 76 05 jbe 8048ee0 <phase_6+0x2f>
|
||||
8048eca: be 00 00 00 00 mov $0x0,%esi ;set esi as i, i=0
|
||||
8048ecf: 8b 44 b4 10 mov 0x10(%esp,%esi,4),%eax ;eax = a[i]
|
||||
8048ed3: 83 e8 01 sub $0x1,%eax ;eax = a[i] - 1
|
||||
8048ed6: 83 f8 05 cmp $0x5,%eax ;compare eax with 5
|
||||
8048ed9: 76 05 jbe 8048ee0 <phase_6+0x2f> ;if a[i] < =5, dont explode
|
||||
8048edb: e8 15 03 00 00 call 80491f5 <explode_bomb>
|
||||
8048ee0: 83 c6 01 add $0x1,%esi
|
||||
8048ee3: 83 fe 06 cmp $0x6,%esi
|
||||
8048ee0: 83 c6 01 add $0x1,%esi ;i++
|
||||
8048ee3: 83 fe 06 cmp $0x6,%esi ;if i < 6, jump to 8048eef
|
||||
8048ee6: 75 07 jne 8048eef <phase_6+0x3e>
|
||||
8048ee8: bb 00 00 00 00 mov $0x0,%ebx
|
||||
8048ee8: bb 00 00 00 00 mov $0x0,%ebx ;ebx=k=0
|
||||
8048eed: eb 38 jmp 8048f27 <phase_6+0x76>
|
||||
8048eef: 89 f3 mov %esi,%ebx
|
||||
8048ef1: 8b 44 9c 10 mov 0x10(%esp,%ebx,4),%eax
|
||||
8048ef5: 39 44 b4 0c cmp %eax,0xc(%esp,%esi,4)
|
||||
8048ef9: 75 05 jne 8048f00 <phase_6+0x4f>
|
||||
8048eef: 89 f3 mov %esi,%ebx ;ebx=j=i
|
||||
8048ef1: 8b 44 9c 10 mov 0x10(%esp,%ebx,4),%eax ;eax = a[j]
|
||||
8048ef5: 39 44 b4 0c cmp %eax,0xc(%esp,%esi,4) ;compare a[i-1] and a[j]
|
||||
8048ef9: 75 05 jne 8048f00 <phase_6+0x4f> ;if a[i-1] == a[j], explode
|
||||
8048efb: e8 f5 02 00 00 call 80491f5 <explode_bomb>
|
||||
8048f00: 83 c3 01 add $0x1,%ebx
|
||||
8048f03: 83 fb 05 cmp $0x5,%ebx
|
||||
8048f00: 83 c3 01 add $0x1,%ebx ;j++
|
||||
8048f03: 83 fb 05 cmp $0x5,%ebx ;if j<=5, jump to 8048ef1
|
||||
8048f06: 7e e9 jle 8048ef1 <phase_6+0x40>
|
||||
8048f08: eb c5 jmp 8048ecf <phase_6+0x1e>
|
||||
8048f08: eb c5 jmp 8048ecf <phase_6+0x1e> ;jump to next i of outer loop
|
||||
8048f0a: 8b 52 08 mov 0x8(%edx),%edx
|
||||
8048f0d: 83 c0 01 add $0x1,%eax
|
||||
8048f10: 39 c8 cmp %ecx,%eax
|
||||
8048f12: 75 f6 jne 8048f0a <phase_6+0x59>
|
||||
8048f14: eb 05 jmp 8048f1b <phase_6+0x6a>
|
||||
|
||||
8048f16: ba 3c c1 04 08 mov $0x804c13c,%edx
|
||||
8048f1b: 89 54 b4 28 mov %edx,0x28(%esp,%esi,4)
|
||||
8048f1f: 83 c3 01 add $0x1,%ebx
|
||||
8048f22: 83 fb 06 cmp $0x6,%ebx
|
||||
8048f25: 74 17 je 8048f3e <phase_6+0x8d>
|
||||
8048f27: 89 de mov %ebx,%esi
|
||||
|
||||
8048f27: 89 de mov %ebx,%esi ;esi=k
|
||||
8048f29: 8b 4c 9c 10 mov 0x10(%esp,%ebx,4),%ecx
|
||||
8048f2d: 83 f9 01 cmp $0x1,%ecx
|
||||
8048f30: 7e e4 jle 8048f16 <phase_6+0x65>
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
int func4(int x, int y, int z)
|
||||
{
|
||||
int a = (y + z) / 2, ret;
|
||||
if (a > x)
|
||||
{
|
||||
a--;
|
||||
ret = func4(x, y, a);
|
||||
return 2 * ret;
|
||||
}
|
||||
if (a <= x)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
a++;
|
||||
ret = func4(x, a, z);
|
||||
return ret * 2 + 1;
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
You can Russia from land here in Alaska.
|
||||
0 1 1 2 3 5
|
||||
0 h 395
|
||||
0 0
|
||||
-&#$('
|
Loading…
Reference in New Issue