PADOCON 2010 hand-ray 리버싱 풀이 1st
문제
다음 프로그램은 어떤 함수호출 규약을 사용하는가??
00401078 |. 6A 05 PUSH 5
0040107A |. 6A 04 PUSH 4
0040107C |. 6A 03 PUSH 3
0040107E |. 6A 02 PUSH 2
00401080 |. 6A 01 PUSH 1
00401082 |. E8 7EFFFFFF CALL Q1.00401005
------------------------in the Function -----------------------
00401020 /> \55 PUSH EBP
00401021 |. 8BEC MOV EBP,ESP
00401023 |. 83EC 40 SUB ESP,40
00401026 |. 53 PUSH EBX
00401027 |. 56 PUSH ESI
00401028 |. 57 PUSH EDI
00401029 |. 8D7D C0 LEA EDI,DWORD PTR SS:[EBP-40]
0040102C |. B9 10000000 MOV ECX,10
00401031 |. B8 CCCCCCCC MOV EAX,CCCCCCCC
00401036 |. F3:AB REP STOS DWORD PTR ES:[EDI]
00401038 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
0040103B |. 0345 0C ADD EAX,DWORD PTR SS:[EBP+C]
0040103E |. 0345 10 ADD EAX,DWORD PTR SS:[EBP+10]
00401041 |. 0345 14 ADD EAX,DWORD PTR SS:[EBP+14]
00401044 |. 0345 18 ADD EAX,DWORD PTR SS:[EBP+18]
00401047 |. 5F POP EDI
00401048 |. 5E POP ESI
00401049 |. 5B POP EBX
0040104A |. 8BE5 MOV ESP,EBP
0040104C |. 5D POP EBP
0040104D \. C2 1400 RETN 14
0x00401082 에서 401005 함수를 호출합니다. 그리고 0x00404005 에서 실행 흐름이 0x00401020 으로 넘어갑니다. 이 상태에서 어떤 함수 호출 규약이 적용되었는지를 묻는 문제입니다. 따로 풀이를 할 것 없이 아래 참고 문헌을 읽어보면 쉽게 풀리는 문제입니다. 참 쉽죠잉?
참고 문헌
Calling Convention – 함수 호출 규약 :: http://www.reversecore.com/13