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

  • IsDebuggerPresent 그리고 패치

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

  • Reveal API Redirect on Themida

    일주일 전에 쿠시스 영남권 세미나에서 “API Redirect on Themida”라는 주제로 발표를 했었습니다. 아래는 그때 발표자료랑 시연에서 잠시 소개했던 스크립트입니다. Immunity Debugger 용으로 python으로 작성하였습니다. PyCommand 디렉토리 아래에 스크립트 파일을 저장한 후, eip가 call 문에 있을 때 커맨드라인에서 다음과 같이 입력하면 실행이 됩니다. !revealapi 이 스크립트는 call 문을 직접 실행하지 않고 Themida에서 리다이렉트된 API를 찾아서 comment로…

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

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

  • Windows Kernelmode, Keyboard Independent Keylogger

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

답글 남기기

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