CSAPP bomb lab2
1.phase_2主函数:
//arg1=input (phase_2有一个参数input,是传入的字符串)
0000000000400efc <phase_2>:
400efc: 55 push %rbp
400efd: 53 push %rbx
400efe: 48 83 ec 28 sub $0x28,%rsp
400f02: 48 89 e6 mov %rsp,%rsi
// 参数1=input,参数2=rsp地址,调用函数read_six_number。
400f05: e8 52 05 00 00 callq 40145c <read_six_numbers>
将外部传入的input字符串
作为第一参数
,(input是什么先不用管,后面就知道了) phase_1
中分配一段内存空间后,将该内存空间的首地址
作为第二参数
传给read_six_numbers
函数中(猜测这段内存空间是一个数组)
接下来先进入read_six_numbers函数观察里面发生甚摸事了–>
2.read_six_numbers函数:
// arg1=input,arg2=a (a是已经分配好空间的数组)
000000000040145c <read_six_numbers>:
40145c: 48 83 ec 18 sub $0x18,%rsp #24栈帧
401460: 48 89 f2 mov %rsi,%rdx # rdx=rsi=y
401463: 48 8d 4e 04 lea 0x4(%rsi),%rcx # rcx=y+4
401467: 48 8d 46 14 lea 0x14(%rsi),%rax # rax=y+20
40146b: 48 89 44 24 08 mov %rax,0x8(%rsp) # (rsp+8)=y+20
401470: 48 8d 46 10 lea 0x10