티스토리 뷰

이전의 네이버 블로그에서 썻던 글입니다.

캡쳐 화면이 어디있는지 알 수가 없네요 그래서 사진을 전부 가져왔습니다.

혹시나 사진이 깨진다면 이쪽 링크를 타고 가셔서 자세히 확인 가능하십니다.

 

 

 

 

 

 

악성코드 분석, 리버싱에 관하여 공부를 하게 되면서 처음 보게 되는 실행파일이자
각종 언어에서 가장 처음 소스코드를 작업해보는 Helloworld.exe로 디버깅을 실습해볼텐데요

우선 기본적인 무료툴인 ollydbg에 대하여 설명드릴께요

 

 

ollydbg기본 화면

위 사진과 같이 왼쪽 상단이 Code Window창인데요 이곳에서 디셈블리 코드를 표시하여 각종 comment, label을 보여주며 코드를 분석하여 loop,jump 위치 등의 정보를 표시합니다
오른쪽 상단에 Register Window창은 CPU register 값을 실시간으로 표시하며 특정 레지스터들은 수정도 가능합니다
왼쪽아래에는 Dump Window라고 하여 프로세스에서 원하는 메모리 주소 위치를 Hex와 ASCII/유니코드 값으로 표시합니다
오른쪽 아래 Stack Window는 ESP 레지스터가 가르키는 프로세스 스택 메모리를 실시간으로 표시합니다.

ollydbg를 실행하여 Helloworld를 열게되면 Code Window에서 자동으로 실행 시작 주소 에서 멈춰져 있는걸 확인 하실텐데요
이 실행시작부분을 EP(Entry Point)라고 합니다.

**EP(Entry Point)
Window 실행 파일(EXE,DLL,SYS 등)의 코드 시작점을 의미합니다. 프로그램이 실행될 때 CPU에 의해 가장 먼저 실행되는 코드 시작 위치라고 생각하시면 됩니다.

 

 

보시면 맨위에 004011A0 주소에서 디셈블리 코드를 확인하시면 CALL과 바로아래 JMP 명령어를 확인 하실수 있으신데요
이는 40270C 주소의 함수를 CALL(호출)한 후 40104F 주소로 점프 하라는 뜻으로 해석이 가능합니다.


CALL 명령어가 있는 곳에서 F7(Step into)로 함수를 따라 들어가보겠습니다

 

 

 

다음과 같이 보이실텐데요 주석에 보시면 빨간색 글씨로 된 부분이 보이실텐데 코드에서 호출되는 API 함수 이름입니다.
처음엔 이 부분을 따라가지 마시고 이름들만 살펴보시기 바랍니다.
4027A1주소의 RETN 명령어 까지 가보겠습니다. RETN은 함수의 끝에서 사용되고 함수가 호출된 원래 주소로 되돌아갑니다.
RETN 명령어까지 오셨다면 F7/F8로 실행 시켜보겠습니다.

 

 

 

따라 들어오시면 이 화면이 보이실텐데 저희는 main()함수를 찾기위해 계속 F7/F8을 이용하여 부딪히겠습니다.
계속 진행하시면서 오른쪽에 빨간 글씨 (Stub code 라고 하여 개발 도구에 따라 달라지는 사용자코드가 아닌 C++에서 추가시킨 코드를 의미합니다)를 눈에 익히고 이런 저런 코드가 있는지 확인해보시기 바랍니다. 계속하여서 main()함수를 찾아보겠습니다.

 

 

 

보시게 되면 401000 호출 함수를 발견하게 됩니다. F7으로 진입해보면 

 

 

드디어 MessageBoxW() API를 호출 하는 코드가 나타납니다.
이 파라미터가 "Hello World" 문자열입니다. 이는 소스코드에 있는 내용과 일치합니다.
401000 함수가 main()함수라는것을 알게 되었습니다.

더 좋은 방법으로 빠르게 찾는 방법이 있지만 입문하는 사람에게는 이렇게 디버거에서 계속 찾아보는 훈련을 통해 API를 눈에 익히고 숙련도를 높이는 방법이였습니다.

'Analysis > Reversing' 카테고리의 다른 글

PE Header 구조 정리글 두번째  (0) 2018.05.08
PE Header 구조 정리글 첫번째  (0) 2018.05.08
Lena's tutorial 1 (Key File ReverseMe)  (0) 2018.05.03
olly dbg 단축키  (0) 2018.05.03
정적 분석과 동적 분석이란?  (0) 2018.05.01
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함