본문 바로가기
분석 TIP/정적분석

IDA에서 Structures PE 구조체 적용하기

by 두유노우컴퓨터 2025. 4. 20.

동적 API에 뿐만 아니라 알려진 구조체일 경우에도 구조체 활용이 가능하다.

PE 체크 구조

 

분석을 조금이라도 해본 사람이라면 바로 알 것이다. 바로 PE파일을 체크하는 것이다. 맨 처음 MZ부터 말이다. 그렇다면 word_18000BED0 자체가 PE구조체일 확률이 높다. 그럼 PE 구조체를 복사해서 구조체를 IDA에 만든다면 훨씬 편하게 코드를 읽을 수 있을 것이다.

 

https://learn.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-image_file_header

 

IMAGE_FILE_HEADER (winnt.h) - Win32 apps

Represents the COFF header format.

learn.microsoft.com

https://www.nirsoft.net/kernel_struct/vista/IMAGE_DOS_HEADER.html

 

struct IMAGE_DOS_HEADER

typedef struct _IMAGE_DOS_HEADER { WORD e_magic; WORD e_cblp; WORD e_cp; WORD e_crlc; WORD e_cparhdr; WORD e_minalloc; WORD e_maxalloc; WORD e_ss; WORD e_sp; WORD e_csum; WORD e_ip; WORD e_cs; WORD e_lfarlc; WORD e_ovno; WORD e_res[4]; WORD e_oemid; WORD e

www.nirsoft.net

 

MSDN을 보면 쉽게 구조체 형태로 써져 있는 걸 볼 수 있다. 이걸 약간만 바꿔주면 아래와 같이 구조체 형태로 바꾼다.

struct _IMAGE_DOS_HEADER
{
     WORD e_magic;
     WORD e_cblp;
     WORD e_cp;
     WORD e_crlc;
     WORD e_cparhdr;
     WORD e_minalloc;
     WORD e_maxalloc;
     WORD e_ss;
     WORD e_sp;
     WORD e_csum;
     WORD e_ip;
     WORD e_cs;
     WORD e_lfarlc;
     WORD e_ovno;
     WORD e_res[4];
     WORD e_oemid;
     WORD e_oeminfo;
     WORD e_res2[10];
     LONG e_lfanew;
};

 

오리지널 형태를 위와 같은 IDA 구조체로 적용하기 위해 일부 수정한다.

 

Shife + F1으로 로컬 타입탭을 열어 준 후,
Insert로 구조체를 넣어보자.

 

그럴듯하게 들어갔는데 'Structures' 탭에는 보이지 않는다.
더블 클릭해서 적용시켜 보자.

구조체 등록

 

구조체 탭에서 확인가능하다.

구조체 확인

 

이제 이걸 그대로 적용해 주면 된다.
아까 확인했던 word_18000BED0에서 Y를 눌러 구조체를 적용시켜 보자.

__int16 word_18000BED0[30]  //  오리지날
_IMAGE_DOS_HEADER  word_18000BED0  //  변경 후

 

변경된 형태를 확인할 수 있다.

구조체 적용


밑에 다른 PE 헤더들도 적용시켜 보자.

https://learn.microsoft.com/ko-kr/windows/win32/api/winnt/ns-winnt-image_nt_headers32

 

IMAGE_NT_HEADERS32(winnt.h) - Win32 apps

PE 헤더 형식을 나타냅니다. (32비트)

learn.microsoft.com

 

DOS헤더 다음 NT 헤더 구조체도 만들자.

char *v5  //  오리지날
_IMAGE_NT_HEADERS *v5  //  변경 후

 

이렇게 적용하면 엄청나게 다양한 정보를 한눈에 볼 수가 있다.

구조체 적용

 

구조체를 적용한 후 PE파일을 빠르게 분석하는데 많은 도움을 준다.

 

'분석 TIP > 정적분석' 카테고리의 다른 글

JavaScript 난독화 분석  (0) 2025.04.23
Autoit 샘플 분석  (0) 2025.04.21
동적API 구조체로 IDA 함수명 매핑하기  (0) 2025.04.19
Visual Basic 6.0 샘플 분석  (0) 2025.04.18
PDF Deflate JavaScript 분석  (0) 2025.04.17