포스트

[250731] 개발 일지 - MSI 분석 2

[250731] 개발 일지 - MSI 분석 2

이번 포스트는 Click BIOS X 버전에 해당하는 이야기다.
이전 버전인 Click BIOS 5는 해당하지 않는다.

1. 개요

이번 글은 MSI의 UI를 구성하는 임베디드 이미지들이 포함되어 있는 .bin 파일의 구조를 분석해볼 것이다.

2. 준비물

  1. B850M Mortar 보드의 .bin 파일
  2. 1 에서 추출한 이미지 파일
  3. B850 Tomahawk 보드의 .bin 파일
  4. 3 에서 추출한 이미지 파일

3. 분석

우선 이 웹사이트를 참고하면 기본적인 구성은 다음과 같다. 1

3.1. 상세 구조 설명

기본 분석을 토대로 다음과 같이 정리하였다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
┌─────────────────────────────────────────────────────────┐
│                    File Header                          │
├─────────────────────────────────────────────────────────┤
│                  Image Entry #1                         │
│  ┌─────────────────┬─────────────────────────────────┐  │
│  │   MSI Header    │        Image Data               │  │
│  │    (12 bytes)   │     (Variable Size)             │  │
│  └─────────────────┴─────────────────────────────────┘  │
├─────────────────────────────────────────────────────────┤
│                  Image Entry #2                         │
│  ┌─────────────────┬─────────────────────────────────┐  │
│  │   Image Header  │        Image Data               │  │
│  │    (12 bytes)   │     (Variable Size)             │  │
│  └─────────────────┴─────────────────────────────────┘  │
├─────────────────────────────────────────────────────────┤
│                      ...                                │
├─────────────────────────────────────────────────────────┤
│                  Image Entry #N                         │
└─────────────────────────────────────────────────────────┘

이를 바이트 단위로 분석하면 아래와 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
MSI Header Byte Layout (12 bytes):
┌────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┬────┐
│ 24 │ 4D │ 73 │ 49 │ XX │ YY │ ZZ │ 00 │ LL │ LL │ LL │ LL │
└────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┴────┘
  00   01   02   03   04   05   06   07   08   09   0A   0B

Where:
- 0x00-0x03: '$MsI$' signature (0x24, 0x4D, 0x73, 0x49)
- 0x04 (XX): Sector/Layer field
- 0x05 (YY): Position field  
- 0x06 (ZZ): Image number (0-based index)
- 0x07: Reserved (usually 0x00)
- 0x08-0x0B (LLLLLLLL): Image size (little-endian 32-bit)
이 포스트는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

인기 태그