반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오늘의 보안
- Defcon DFIR CTF 2019
- 멀웨어
- Volatility
- 코드업
- 보안동향
- SQLD
- 보안
- c언어
- sql
- defcon.mem
- C 프로그래밍
- codeup
- 다운로드
- 악성코드
- Memory Forensics
- C language
- C
- 리버싱
- cmd
- 정보보안기사
- 오늘의 보안동향
- 리버싱 핵심원리
- 오늘의 영어
- 랜섬웨어
- Code Up
- 설치
- DEFCON
- 코딩
- ctf
Archives
- Today
- Total
오브의 빛나는 별
1부 2장 Hello World! 리버싱(1) 본문
반응형
안녕하세요, 오브입니다.
오늘은 HelloWorld.exe 실행 파일을 디버깅하여 어셈블리 언어로 변환된 main() 함수를 찾아보겠습니다.
Hello World! 리버싱
2.2.1. 디버깅 목표
- main() 함수 찾기
2.2.2. 디버깅 시작
- OllyDbg 관리자 모드로 실행 후 [File]-[Open]-’HelloWorld.exe’ 파일 열기
- 메인 화면 구성
- Code Window: 기본적으로 disassembly code를 하여 각종 comment, abel 을 보여주며, 코드를 분석하여 loop, jump 위치 등의 정보 표시
- Register Window: CPU register 값을 실시간으로 표시하며 특정 register들 수정 가능
- DumpWindow: 프로세스에서 원하는 memory 주소 위치를 Hex와 ASCII 유니코드 값으로 표시하고 수정 가능
- Stack Window: ESP register가 가리키는 프로세스 stack memory를 실시간 표시 및 수정 가능
2.2.3. EP
- EP: 실행 파일(exe, dll, sys 등)의 코드 시작점. CPU에 의해 가장 먼저 실행되는 코드 시작 위치
2.2.4. 40270C 함수 따라가기
명령어 단축키 설명
명령어 | 단축키 | 설명 |
Restart | [Ctrl+F2] | 다시 처음부터 디버깅 시작(디버깅을 당하는 프로세스를 종료하고 재실행) |
Step Into | [F7] | 하나의 OP code 실행(CALL 명령을 만나면, 그 함수 코드 내부로 따라 들어감) |
Step Over | [F8] | 하나의 OPcode 실행(CALL 명령을 만나면, 따라 들어가지 않고 그냥 함수 자체를실행) |
Execute till Return | [Ctrl+F9] | 함수 코드 내에서 RETN 명령어까지 실행(함수 틸출 목적) |
- 주석: 가장 오른쪽 빨간색 글씨로 코드에서 호출되는 API 함수 이름
- RETN: 함수의 끝에서 사용되며 이 함수가 호출된 원래 주소로 되돌아감
<실습 순서>
- 4011A0 주소에서 [F7]하여 call 함수 내부로 들어가기
- RETN 명령어까지 [F8] or [Ctrl+F9]
- [F7/F8]하여 call 함수에서 나오기
- 4011A5 주소에서 [F7]하여 40104F 주소로 가기
- 401056 주소에서 [F7]하여 call 함수 내부로 들어가기
- CALL 함수 호출 명령어가 보이면 [F7]하여 call 함수 내부로 들어가 보기
- MessageBox() API 호출 코드가 있는지 확인 후 없으면 [F8] or [Ctrl+F9]하여 RETN 명령어로 가기
- [F7/F8]하여 call 함수에서 나오기
- 이런 식으로 call 함수 내부로 들어가서 MessageBox() API 호출 코드가 있는지 확인
- 4010E4 주소의 CALL Kernel32. GetCommandLineW 명령어는 들어갈 필요x [F8]
- 함수 내부에 반복문이 존재해서 함수 탈출할 때 오래걸림
- 401144 주소에서 [F7]
- MessageBoxW() API 파라미터에 문자열 있음. 따라서 401000 함수가 main() 함수
반응형
'리버싱' 카테고리의 다른 글
1부 3장 리틀 엔디언 표기법 (0) | 2022.04.23 |
---|---|
1부 2장 Hello World! 리버싱(3) (0) | 2022.04.23 |
1부 2장 Hello World! 리버싱(3) (0) | 2022.04.23 |
1부 2장 Hello World! 리버싱(2) (0) | 2022.04.22 |
1부 1장 리버싱 스토리 (0) | 2022.03.28 |