PE(Portable Excutable) 파일
- 윈도우 운영체제에서 사용되는 실행 파일 형식
- 32bit
- exe, scr, sys, dll, ocx
- Process: EXE+DLL
- 실행 과정: 파일 실행 - 헤더 정보를 메모리에 매핑 - 실제 프로그램 코드로 분기
PE 헤더: DOS header ~ Section header
Body: section
NULL padding: PE 헤더의 끝부분과 각 섹션의 끝
→ 컴퓨터에서 파일, 메모리, 네트워크 패킷 등을 처리할 때 효율을 높이기 위해 최소 기본 단위 개념을 사용
PE 헤더
DOS Header | 구조체 크기 40 e_magic: DOS signature (4D5A => ASCII 값 "MZ") e_lfanew: NT header의 옵셋을 표시(파일에 따라 가변적인 값을 가짐), IMAGE_NT_HEADER 시작 주소 |
DOS stub | 존재 여부는 옵션, 크기 일정 x, 코드와 데이터의 혼합 |
NT Header | IMAGE_NT_HEADERS 제일 첫 멤버는 signature로 504500h ("PE"00)값을 가짐 |
NT Header - File Header |
Machine(CPU) 섹션의 개수 Time data Pointer To Sumbol Table, Number of Symbols Size of Optional Header Characteristics |
NT Header - Optional Header |
![]() |
섹션 헤더 | .text / .data / .rdata / .bss / .edata / .idata / .rsrc Virtual Size, Virtual Address, Size Of Raw Data, Pointer To Raw Data, Characteristics ![]() |
VA: 가상 메모리 주소
RVA: 가상 메모리 상대 주소
RVA + ImageBase = VA
crackme: 크랙 연습 목적으로 작성되어 공개된 프로그램
crackme1
GetDriveType() API로 C 드라이브의 타입을 얻어오는데(대부분 HDD 타입이 리턴) 이걸 조작해서 CD-ROM타입으로 인식하도록 만들어서 OK 메시지 박스가 출력되도록 하면 됨
단순 패치: JE SHORT 0040103D → JMP 0040103D
crackme3
→ abex.l2c 파일 생성필요
→ 파일안의 문자열의 길이(0x12) 확인
crackme4
crackme5
'보안 > 악성코드' 카테고리의 다른 글
악성코드 동적 분석 (0) | 2023.04.17 |
---|---|
6주) 기초 정적 분석 (0) | 2023.04.14 |
안티바이러스 스캐닝, MD5, 패킹/난독화 해제 (0) | 2023.04.08 |
리버싱 기초 (0) | 2023.03.24 |
문자열 패치, 리틀 엔디안 (0) | 2023.03.24 |