윈도우 실행파일(계산기) 분석해보기
calc.exe(ver. Win10)
1.1 IMAGE_DOS_HEADER
대부분의 내용이 0으로 패딩된 것을 볼 수 있다.
winnt.h [IMAGE_DOS_HEADER]
e_magic(5A4D)
- Window System에서는 리틀 엔디안이 사용되기 때문에 역순으로 적혀 있다.
- Signature 정보는 MZ(4D 5A)이며 PE 파일 구조를 나타낸다.
e_lfanew: (000000F8)IMAGE_NT_HEADER 시작주소
1.2 DOS Stud Code
This program cannot be run in DOS mode
실행하지 않아도 정적 분석을 통해서 윈도우에서 실행되는 파일임을 알 수 있다.
1.3 IMAGE_NT_HEADERS
1.3.1 첫번째 signature
4byte 공간공간 PE구조 파일 명시
1.3.2 두번째 File_Header
1) Machine(CPU): 0x014 c-Intel CPU 호환
2) 섹션의 개수: 0x0005
3) Time Data: 0x8CDA9260→2363134560
-> 계산하는 방법(예): /60=39,385,576분, /60=656,426시간 16분, /24=27,351일 20시, /365=74년 339일
-> (컴퓨터 기준) 1970년월 1월 0시 + 74년 339일 20시 16분 0초 = 2044년 11월 19일 02시 16분 00초
4) Pointer To Symbol Table, Number of Symbols: 0으로 패딩
5) Size Of Optional Header: 0xE0(32bit)
6) Characteristics: 파일형식 정보, OR 연산
winnt.h [Characteristics]
1.3.3 세번째 Optional_Header
주요 설명
값 |
이름 |
의미 |
0x10B |
Magic |
Optional Header 32 |
0x1000 |
Size Of Code |
코드 영역(. text)의 크기 |
0x1B60 |
Address Of Entry Point |
프로그램 시작되는 코드의 주소 |
0x1000 |
Base Of Code |
코드 영역이 시작되는 상대 주소(RVA) |
0x400000 |
Image Base |
PE 파일이 |
0x1000 |
Section Alignment |
메모리에서 섹션의 최소 단위 |
0x200 |
File Alignment |
파일에서 섹션의 최소 단위 |
0xA000 |
Size Of Image |
PE 파일이 메모리에 로딩될 때 전체 크기 |
0x400 |
Size Of Header |
모든 헤더의 크기 |
0x0002 |
Sub System |
2(GUI) |
0xC140 |
Number of RvaAndSizes |
Data Directory의 구조체 멤버 개수 |
1.4 Section_Header
Section Header의 종류
값 |
멤버 |
의미 |
0x747865742E |
NAME |
섹션이름 .text |
0xF44 |
Virtual Size |
메모리 섹션 크기 정보 |
0x1000 |
Virtual Address |
메모리 섹션의 시작 주소, RVA Image Base가 0x1이므로 실제주소는 0x1001이 된다. Optional Header의 Base of Code 값과 동일 |
0x1000 |
Size Of Raw Data |
파일에서의 섹션 크기 (File Alignment의 배수) |
0x400 |
Pointer To Raw Data |
파일에서의 섹션의 시작 위치 |
0x60000020 |
Characteristics |
읽고 쓰기가 가능한 코드 섹션 정보 표시 OR 연산으로 표시 20000000(실행), 40000000(읽기), 20(코드) |
'Security > Reversing' 카테고리의 다른 글
[악성코드분석] 기초정적분석01 - 설명 및 도구 (0) | 2020.04.17 |
---|---|
[PE 파일] 분석 - PEtest.exe (with PEview) (1) | 2020.04.10 |
[PE 파일] 구조(4) - PE 파일 섹션(Section_Header .text) (2) | 2020.04.09 |
[PE 파일] 구조(3) - PE 파일 헤더(NT_Header) (2) | 2020.04.09 |
[PE 파일] 구조(2) - PE 파일 헤더(DOS_HEADER, DOS Stud Code) (2) | 2020.04.09 |