본문 바로가기
보안/악성코드

PE파일 분석, crackme

by ByteGuard 2023. 3. 30.

PE(Portable Excutable) 파일

  • 윈도우 운영체제에서 사용되는 실행 파일 형식
  • 32bit
  • exe, scr, sys, dll, ocx
  • Process: EXE+DLL
  • 실행 과정: 파일 실행 - 헤더 정보를 메모리에 매핑 - 실제 프로그램 코드로 분기

 

 

 

PE File 목록

 

 

 

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