Why make trillions when we could make... billions?
0 1 1 2 3 5
정수 문자 한 개 정수 입력받기
과제
He is evil and fits easily into most overhead storage bins.
1 2 4 7 11 16
scanf("%d %d",a,b)
func4(a, 0 , 14);
int func4(int edi, int esi, int edx){
Dump of assembler code for function func4:
0x0000000000001406 <+0>: push rbx
0x0000000000001407 <+1>: mov eax,edx
0x0000000000001409 <+3>: sub eax,esi
0x000000000000140b <+5>: mov ebx,eax
0x000000000000140d <+7>: shr ebx,0x1f
0x0000000000001410 <+10>: add ebx,eax
0x0000000000001412 <+12>: sar ebx,1
0x0000000000001414 <+14>: add ebx,esi
0x0000000000001416 <+16>: cmp ebx,edi
0x0000000000001418 <+18>: jg 0x1422 <func4+28>
if ( (edx-esi)/2 + esi < edi )
{
}
if ((edx-esi)/2 + esi > edi)
{
0x000000000000142e <+40>: lea esi,[rbx+0x1]
0x0000000000001431 <+43>: call 0x1406
0x0000000000001436 <+48>: add ebx,eax
}
0x000000000000141e <+24>: mov eax,ebx
0x0000000000001420 <+26>: pop rbx
0x0000000000001421 <+27>: ret
}
He is evil and fits easily into most overhead storage bins.
1 2 4 7 11 16
1 322
11 18
5 115
4 1 6 2 5 3
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) c
Continuing.
Breakpoint 1, 0x0000555555555a9f in explode_bomb ()
(gdb) disas
Dump of assembler code for function explode_bomb:
=> 0x0000555555555a9f <+0>: sub $0x8,%rsp
0x0000555555555aa3 <+4>: lea 0x1317(%rip),%rdi # 0x555555556dc1
0x0000555555555aaa <+11>: callq 0x555555554ee0 <puts@plt>
0x0000555555555aaf <+16>: lea 0x1314(%rip),%rdi # 0x555555556dca
0x0000555555555ab6 <+23>: callq 0x555555554ee0 <puts@plt>
0x0000555555555abb <+28>: mov $0x0,%edi
0x0000555555555ac0 <+33>: callq 0x55555555597b <send_msg>
0x0000555555555ac5 <+38>: lea 0x11a4(%rip),%rdi # 0x555555556c70
0x0000555555555acc <+45>: callq 0x555555554ee0 <puts@plt>
0x0000555555555ad1 <+50>: mov $0x8,%edi
0x0000555555555ad6 <+55>: callq 0x555555554fe0 <exit@plt>
End of assembler dump.
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/sys00/a201902737/bomb36/bomb asdf
Welcome to my fiendish little bomb. You have 6 phases with
which to blow yourself up. Have a nice day!
Phase 1 defused. How about the next one?
That's number 2. Keep going!
Halfway there!
So you got that one. Try this one.
15 115
Breakpoint 2, 0x00005555555554af in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
=> 0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) info b
Num Type Disp Enb Address What
1 breakpoint keep y 0x0000555555555a9f <explode_bomb>
2 breakpoint keep y 0x00005555555554af <phase_5>
breakpoint already hit 1 time
3 breakpoint keep y 0x0000555555555a9f <explode_bomb>
4 breakpoint keep y 0x00005555555554fb <phase_5+76>
5 breakpoint keep y 0x00005555555554bc <phase_5+13>
6 breakpoint keep y 0x00005555555554fb <phase_5+76>
(gdb) c
Continuing.
Breakpoint 5, 0x00005555555554bc in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
=> 0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) ni
0x00005555555554c1 in phase_5 ()
(gdb) ni
0x00005555555554c3 in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
=> 0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) ni
0x00005555555554c8 in phase_5 ()
(gdb) ni
0x00005555555554cb in phase_5 ()
(gdb) ni
0x00005555555554d2 in phase_5 ()
(gdb) ni
0x00005555555554d7 in phase_5 ()
(gdb)
0x00005555555554da in phase_5 ()
(gdb)
0x00005555555554dc in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
=> 0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) ni
0x00005555555554df in phase_5 ()
(gdb)
0x00005555555554e2 in phase_5 ()
(gdb)
0x00005555555554e5 in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
=> 0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) ni
0x00005555555554e8 in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
=> 0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) ni
0x000055555555551c in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
=> 0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) x/16d 0x555555556b60
0x555555556b60 <array.3417>: 10 2 14 7
0x555555556b70 <array.3417+16>: 8 12 15 11
0x555555556b80 <array.3417+32>: 0 4 1 13
0x555555556b90 <array.3417+48>: 3 9 6 5
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/sys00/a201902737/bomb36/bomb asdf
Welcome to my fiendish little bomb. You have 6 phases with
which to blow yourself up. Have a nice day!
Phase 1 defused. How about the next one?
That's number 2. Keep going!
Halfway there!
So you got that one. Try this one.
8 48
Breakpoint 2, 0x00005555555554af in phase_5 ()
(gdb) c
Continuing.
Breakpoint 5, 0x00005555555554bc in phase_5 ()
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb)
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) c
Continuing.
Breakpoint 1, 0x0000555555555a9f in explode_bomb ()
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /home/sys00/a201902737/bomb36/bomb asdf
Welcome to my fiendish little bomb. You have 6 phases with
which to blow yourself up. Have a nice day!
Phase 1 defused. How about the next one?
That's number 2. Keep going!
Halfway there!
So you got that one. Try this one.
8 33
Breakpoint 2, 0x00005555555554af in phase_5 ()
(gdb) c
Continuing.
Breakpoint 5, 0x00005555555554bc in phase_5 ()
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
=> 0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) info reg
rax 0x1 1
rbx 0x7fffffffe348 140737488347976
rcx 0xb 11
rdx 0x3 3
rsi 0x555555556b60 93824992242528
rdi 0x7fffffffdbd0 140737488346064
rbp 0x555555556900 0x555555556900 <__libc_csu_init>
rsp 0x7fffffffe240 0x7fffffffe240
r8 0x0 0
r9 0x0 0
r10 0x7ffff7b80bc0 140737349422016
r11 0x555555556df2 93824992243186
r12 0x555555555060 93824992235616
r13 0x7fffffffe340 140737488347968
r14 0x0 0
r15 0x0 0
rip 0x5555555554fb 0x5555555554fb <phase_5+76>
eflags 0x293 [ CF AF SF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) info reg
rax 0x2 2
rbx 0x7fffffffe348 140737488347976
rcx 0xd 13
rdx 0x4 4
rsi 0x555555556b60 93824992242528
rdi 0x7fffffffdbd0 140737488346064
rbp 0x555555556900 0x555555556900 <__libc_csu_init>
rsp 0x7fffffffe240 0x7fffffffe240
r8 0x0 0
r9 0x0 0
r10 0x7ffff7b80bc0 140737349422016
r11 0x555555556df2 93824992243186
r12 0x555555555060 93824992235616
r13 0x7fffffffe340 140737488347968
r14 0x0 0
r15 0x0 0
rip 0x5555555554fb 0x5555555554fb <phase_5+76>
eflags 0x297 [ CF PF AF SF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) info reg
rax 0xe 14
rbx 0x7fffffffe348 140737488347976
rcx 0x1b 27
rdx 0x5 5
rsi 0x555555556b60 93824992242528
rdi 0x7fffffffdbd0 140737488346064
rbp 0x555555556900 0x555555556900 <__libc_csu_init>
rsp 0x7fffffffe240 0x7fffffffe240
r8 0x0 0
r9 0x0 0
r10 0x7ffff7b80bc0 140737349422016
r11 0x555555556df2 93824992243186
r12 0x555555555060 93824992235616
r13 0x7fffffffe340 140737488347968
r14 0x0 0
r15 0x0 0
rip 0x5555555554fb 0x5555555554fb <phase_5+76>
eflags 0x297 [ CF PF AF SF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb) c
Continuing.
Breakpoint 4, 0x00005555555554fb in phase_5 ()
(gdb) info reg
rax 0x6 6
rbx 0x7fffffffe348 140737488347976
rcx 0x21 33
rdx 0x6 6
rsi 0x555555556b60 93824992242528
rdi 0x7fffffffdbd0 140737488346064
rbp 0x555555556900 0x555555556900 <__libc_csu_init>
rsp 0x7fffffffe240 0x7fffffffe240
r8 0x0 0
r9 0x0 0
r10 0x7ffff7b80bc0 140737349422016
r11 0x555555556df2 93824992243186
r12 0x555555555060 93824992235616
r13 0x7fffffffe340 140737488347968
r14 0x0 0
r15 0x0 0
rip 0x5555555554fb 0x5555555554fb <phase_5+76>
eflags 0x293 [ CF AF SF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
=> 0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) ni
0x00005555555554fe in phase_5 ()
(gdb) ni
0x0000555555555500 in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
=> 0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) ni
0x0000555555555503 in phase_5 ()
(gdb) ni
0x0000555555555505 in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
=> 0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) info reg
rax 0xf 15
rbx 0x7fffffffe348 140737488347976
rcx 0x30 48
rdx 0x7 7
rsi 0x555555556b60 93824992242528
rdi 0x7fffffffdbd0 140737488346064
rbp 0x555555556900 0x555555556900 <__libc_csu_init>
rsp 0x7fffffffe240 0x7fffffffe240
r8 0x0 0
r9 0x0 0
r10 0x7ffff7b80bc0 140737349422016
r11 0x555555556df2 93824992243186
r12 0x555555555060 93824992235616
r13 0x7fffffffe340 140737488347968
r14 0x0 0
r15 0x0 0
rip 0x555555555505 0x555555555505 <phase_5+86>
eflags 0x216 [ PF AF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
=> 0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) ni
0x0000555555555508 in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
=> 0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) ni
0x000055555555550a in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
=> 0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) ni
0x0000555555555511 in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
=> 0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) ni
0x0000555555555514 in phase_5 ()
(gdb) info reg
rax 0xf 15
rbx 0x7fffffffe348 140737488347976
rcx 0x30 48
rdx 0x7 7
rsi 0x555555556b60 93824992242528
rdi 0x7fffffffdbd0 140737488346064
rbp 0x555555556900 0x555555556900 <__libc_csu_init>
rsp 0x7fffffffe240 0x7fffffffe240
r8 0x0 0
r9 0x0 0
r10 0x7ffff7b80bc0 140737349422016
r11 0x555555556df2 93824992243186
r12 0x555555555060 93824992235616
r13 0x7fffffffe340 140737488347968
r14 0x0 0
r15 0x0 0
rip 0x555555555514 0x555555555514 <phase_5+101>
eflags 0x293 [ CF AF SF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb) ni
0x000055555555551c in phase_5 ()
(gdb) disas
Dump of assembler code for function phase_5:
0x00005555555554af <+0>: sub $0x18,%rsp
0x00005555555554b3 <+4>: mov %fs:0x28,%rax
0x00005555555554bc <+13>: mov %rax,0x8(%rsp)
0x00005555555554c1 <+18>: xor %eax,%eax
0x00005555555554c3 <+20>: lea 0x4(%rsp),%rcx
0x00005555555554c8 <+25>: mov %rsp,%rdx
0x00005555555554cb <+28>: lea 0x191b(%rip),%rsi # 0x555555556ded
0x00005555555554d2 <+35>: callq 0x555555554fa0 <__isoc99_sscanf@plt>
0x00005555555554d7 <+40>: cmp $0x1,%eax
0x00005555555554da <+43>: jle 0x555555555536 <phase_5+135>
0x00005555555554dc <+45>: mov (%rsp),%eax
0x00005555555554df <+48>: and $0xf,%eax
0x00005555555554e2 <+51>: mov %eax,(%rsp)
0x00005555555554e5 <+54>: cmp $0xf,%eax
0x00005555555554e8 <+57>: je 0x55555555551c <phase_5+109>
0x00005555555554ea <+59>: mov $0x0,%ecx
0x00005555555554ef <+64>: mov $0x0,%edx
0x00005555555554f4 <+69>: lea 0x1665(%rip),%rsi # 0x555555556b60 <array.3417>
0x00005555555554fb <+76>: add $0x1,%edx
0x00005555555554fe <+79>: cltq
0x0000555555555500 <+81>: mov (%rsi,%rax,4),%eax
0x0000555555555503 <+84>: add %eax,%ecx
0x0000555555555505 <+86>: cmp $0xf,%eax
0x0000555555555508 <+89>: jne 0x5555555554fb <phase_5+76>
0x000055555555550a <+91>: movl $0xf,(%rsp)
0x0000555555555511 <+98>: cmp $0xf,%edx
0x0000555555555514 <+101>: jne 0x55555555551c <phase_5+109>
0x0000555555555516 <+103>: cmp %ecx,0x4(%rsp)
0x000055555555551a <+107>: je 0x555555555521 <phase_5+114>
=> 0x000055555555551c <+109>: callq 0x555555555a9f <explode_bomb>
0x0000555555555521 <+114>: mov 0x8(%rsp),%rax
0x0000555555555526 <+119>: xor %fs:0x28,%rax
0x000055555555552f <+128>: jne 0x55555555553d <phase_5+142>
0x0000555555555531 <+130>: add $0x18,%rsp
0x0000555555555535 <+134>: retq
0x0000555555555536 <+135>: callq 0x555555555a9f <explode_bomb>
0x000055555555553b <+140>: jmp 0x5555555554dc <phase_5+45>
0x000055555555553d <+142>: callq 0x555555554f00 <__stack_chk_fail@plt>
End of assembler dump.
(gdb) info reg
rax 0xf 15
rbx 0x7fffffffe348 140737488347976
rcx 0x30 48
rdx 0x7 7
rsi 0x555555556b60 93824992242528
rdi 0x7fffffffdbd0 140737488346064
rbp 0x555555556900 0x555555556900 <__libc_csu_init>
rsp 0x7fffffffe240 0x7fffffffe240
r8 0x0 0
r9 0x0 0
r10 0x7ffff7b80bc0 140737349422016
r11 0x555555556df2 93824992243186
r12 0x555555555060 93824992235616
r13 0x7fffffffe340 140737488347968
r14 0x0 0
r15 0x0 0
rip 0x55555555551c 0x55555555551c <phase_5+109>
eflags 0x293 [ CF AF SF IF ]
cs 0x33 51
ss 0x2b 43
ds 0x0 0
es 0x0 0
fs 0x0 0
gs 0x0 0
(gdb) x/16d 0x555555556b60
0x555555556b60 <array.3417>: 10 2 14 7
0x555555556b70 <array.3417+16>: 8 12 15 11
0x555555556b80 <array.3417+32>: 0 4 1 13
0x555555556b90 <array.3417+48>: 3 9 6 5
'Computer Science > System Programing' 카테고리의 다른 글
[시스템 프로그래밍] 실수의 표현 및 처리 (0) | 2022.09.26 |
---|---|
[시스템 프로그래밍] 정수의 표현 방법 (0) | 2022.09.24 |
[시스템 프로그래밍] 정수의 표현 (0) | 2022.09.24 |
[시스템 프로그래밍] 컴퓨터 시스템(컴퓨터 구조) (0) | 2022.09.20 |
[시스템 프로그래밍] 컴퓨터 시스템(컴파일 시스템) (0) | 2022.09.20 |