PADOCON 2010 hand-ray 리버싱 풀이 1st

이번 파도콘 때 컨퍼런스 발표 외에도 섹션 밖에서 재미있는 이벤트들이 있었습니다. 그 중에서 순천향대학교 Security First 에서 핸드레이 리버싱 문제를 출제했었지요. 문제들이 재미있어서 소개합니다.

문제


다음 프로그램은 어떤 함수호출 규약을 사용하는가??

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

Similar Posts

  • DEFCON 2009 :: Binary L33tness 100, EDB로 풀어보자.

    지난 6~8일에 있었던 데프콘 CTF 예선 문제입니다. 위 그림처럼 실행하면 암호를 묻고 틀린다면, 욕을 하는 기분 나쁜 녀석입니다. 기분도 나빠졌으니 까짓꺼 한 번 깨줘야겠죠? 준비 사항 리눅스 계열의 OS. libnet1 패키지 Evans Debugger 이 파일은 ELF 포맷으로 되어 있습니다. ELF란 유닉스, 리눅스 등의 실행 파일의 구조인데 ,이에 대해 설명하려면 끝이 없으니 자세한 내용을 알고 싶으시면…

  • Windows Kernelmode, Keyboard Independent Keylogger

    Articles에 문서를 업데이트 했습니다. 곧 입대할 CERT-IS의 에잇(?)스, REDBIT(@RED_BIT) 군의 번역문서입니다. “후킹을 통한 키로거 제작방법. 기존의 필터드라이버나 혹은 그와 유사한 버스드라이버 등을 이용했을 경우에 발생하는 키보드 레이아웃 차이에 따른 호환성 문제를 해결한 키로거 제작방법이다. 하지만 이러한 방식은 안티키로거와 같은 프로그램의 특이성 때문에 실생활에서 인터넷뱅킹의 키 입력을 가로챌 수는 없겠지만, 추가적인 방법으로 충분히 데이터를 훔쳐낼 수…

  • CVE-2010-3970. Windows Thumbnail 취약점 데모영상

    작년 11월 Moti, Xu Hao의 POC 발표 이후로도 꽤 잠잠했던 Windows의 Thumbnail 취약점이 최근 이슈[^1]가 되었습니다. 그런데 발표가 있은 지 두 달이 다 되어가는데도 MS에서는 아직 패치를 안 내놓고 있네요. 아래 영상은 가상의 시나리오를 정한 후, Metasploit을 이용하여 원격제어 해킹을 하는 것을 녹화한 것입니다. HAURI의 분석자료[^2]가 상세하기 때문에 취약점에 대한 설명은 생략하겠습니다. Thumbnail 취약점이 Windows의…

  • Ring 0, 커널 레벨에서의 루트킷

    오랜만에 찾아 뵙습니다. 그동안 두 개의 프로젝트를 수행하면서 중간고사도 치르고 하느라 한 달이 훌쩍 지나가버렸네요. 그러는동안 블로그에도 소원해졌구요. 친구가 블로그가 너무 조용하다고 핀잔을 줄 정도였습니다. 하하하 ^^; 제가 그동안 참여한 프로젝트 중의 하나가 루트킷 탐지 프로그램을 만드는 것이었습니다. 세 개의 팀을 나누어서 각각 유저 레벨, 커널 레벨, MBR의 루트킷을 공부했지요. 제가 맡은 부분은 커널 레벨에서의…

  • OllyDbg로 쉽게 디버깅하기 – Back to User 모드

    OllyDbg는 Back to User 모드라는 기능을 지원하고 있습니다. 소스가 만 줄짜리인 프로그램을 처음부터 끝까지 맨땅에 헤딩하듯이 분석하기란 너무나 고달프기에, 이 Back to User 모드를 사용합니다. 이 기능을 사용하면 처음부터 분석할 필요 없이 디버깅을 하고 싶은 부분만 쉽게 찾아갈 수 있습니다. Back to User 모드 예를 들여서 설명하죠. Lenas Reversing for Newbies 강좌의 4번 째 문제…

  • IsDebuggerPresent 그리고 패치

    Anti-Reversing 기법 중에서 가장 기초적인 방법은 IsDebuggerPresent[^1] 함수를 사용하는 것입니다. IsDebuggerPresent 함수는 호출된 프로세스가 유저 모드 디버거에 의해 호출되었는지를 확인하는 Windows API입니다. windows.h 헤더파일을 인클루드하면 바로 호출할 수 있고, Windows 2000부터 지원된다고 MSDN에 설명되어 있습니다. 함수 원형은 아래와 같습니다. 파라미터는 필요 없고, 현재 프로세스가 유저 모드 디버거에 의해 호출된 것이면 0이 아닌 값을 반환합니다. 그런데…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다