마지막쯤에 롸업 봤지만 확실히 이해했다.


Analysis

main을 두개로 쪼개서 살펴보자.

main 윗부분

main 윗부분

maxlen을 128로 해주고,

maxlen = maxlen - readline(name, 128) 을 한다.

readline에서 문자열을 입력 받는데, 난 'AAAAAAAA엔터'를 입력했다. (길이 9)

미리 스포하자면 readline의 반환값은 8이고, maxlen은 120(0x78)이 된다.

이제 desc에다가 malloc(0x20)을 하고 readline으로 desc에 32만큼 임력받는다.

desc 에는 함수 포인터가 저장된다. (주석에는 0x603260이지만 디버깅 사진은 0xfb4260이다. 걍 두번 돌려서 주소 다른겨 ㅠ)