선릉역 1번 출구
Nag Screen(2) 본문
저번에 push EBP를 보았습니다.
PUSH EBP는 새로운 함수가 호출됐을 때 EBP를 옮겨주는 과정입니다. 그래서 전 스택의 EBP를 PUSH해줍니다. 그 전에 호출하기 전 상태로 되돌아오기 위해서 CALL을 하면 return address를 stack에 push하는데, 이 때 Return address의 값은 7401E5A9입니다. 그럼 이 주소로 한 번 가보겠습니다.
해당 주소의 명령어위에는 CALL EAX를 호출하고 있습니다. 여기를 기점으로 stack값을 비교해서 RETN을 할 때 함수의 매개변수로 넘겨진 것도 같이 정리를 해줘야합니다.
일단 7401E5A9에 BP를 걸어서 실행해보겠습니다.
EAX 값을 보면 결국 00402C17로 향하라고 돼있습니다.(CALL이 00402C17을 부르고 새로운 스택이 생기고 다시 return하면 7401E5A9로 오는 것입니다. 그럼 7401E5A9일 때랑 CALL의 stack값을 비교 한 다음에 그 만큼 RETN해주면 됩니다.
아까는 0012FB08이었던 값이 0012FB0C로 바뀌었습니다. (4차이)
이렇게 함수의 매개변수 값을 알아내는 법과 왜 저번 게시글에서 RETN 4을 해준 것인지 이유를 알아보았습니다.
'Hacking & Security > Malicious code and Reversing' 카테고리의 다른 글
clop - binary analysis(복호화 진행하기) (0) | 2022.07.21 |
---|---|
실행 압축 (0) | 2022.04.07 |
Stack Frame (0) | 2022.03.22 |
Nag Screen (0) | 2022.03.20 |
abex' crackme #2 분석(1) (0) | 2022.03.20 |
Comments