UEFI Tool실습
uefi 열어보기
uefi tool 공식 git을 통해서 uefi tool을 내려받고, 실습을 시작하였다.
https://github.com/vuquangtrong/Dell-PFS-BIOS-Assembler/tree/master
실습을 위한 uefi는 Dell XPS 15 9560 시스템 BIOS를 사용하였다.
https://www.dell.com/support/product-details/ko-kr/product/xps-15-9560-laptop/drivers
Dell_PFS_Extract.py를 통해 언팩한 xps의 시스템의 모습


그중 System BIOS with BIOS Guard v1.24.0.bin(in ‘entries’folder)을 개봉한 모습

dxe영역이 없는 것으로 추정되고, 대신
- Microcode
- NVRAM store (Setup, StdDefaults 등 NVAR entry)
- AMIBoardInfo, Defaults, SignOn 같은 Freeform 파일
- PEI 모듈들(AprioriPei, PeiCore, RomLayoutPei 등)
등의 내용이 포함되어있다.
즉, System BIOS with BIOS Guard v1.24.0.bin(in entries폴더)는
초기 부트(PEI)와 설정/NMRAM/microcode만 따로 떼어놓은 파티션으로 추정할 수 있고,
entries폴더에 들어있는것은 PFS entry를 넣어놓은 폴더로 메타데이터 등이 들어있음을 알 수 있었다.
System BIOS with BIOS Guard v1.24.0.bin

관련 용어들
FFSv2
- 플래시 안의 파일(PEI, DXE, NVRAM 등)을 저장하는 전용 파일시스템(이전 주차에 정의해놓음)
- FFS의 ver2(구조적으로 변화는 크지 않다고함,https://uefi.org/specs/PI/1.8/V3_Design_Discussion.html)
NVRAM
- 비휘발성 랜덤 액세스 메모리
- 충전이 필요없는 SRAM의 일종(집적도가 낮아서 전력소모량이 많음, 대신 빠름)
- https://blog.naver.com/steelcyk/40194109984
SMM
- https://ludence8.github.io/졸업프로젝트/2026-01-02-UEFI_2.html(서웅이 블로그 참조)
- 작동모드, 저수준 시스템 관리 작업 수행에 사용
Freeform
- DXE드라이버, PEIM 등으로 분류되지 않고, GUID로만 식별되는 임의 UEFI파일·색션
- EFI_FV_FILETYPE_FREEFORM 파일은 임의 조합의 섹션을 담을 수 있는 확장용 파일 타입
- EFI_SECTION_FREEFORM_SUBTYPE_GUID 는 헤더에 Subtype GUID 하나만 있고, 그 뒤에는 벤더가 정의한 포맷의 데이터가 그대로 옴
- 위 이미지에서 DXE apriori file로 보아 우선 로드해야하는 드라이버를 담은 파일로 추정된다
- 용진 조원님의 https://studysmart.tistory.com/184에서 언급된 선결처리가 해당 부분으로 추정
DXE apriori file을 통해 확인해본 파일 실행 우선 순위

상태 코드/로깅 계열
StatusCodeDxe
- EFI Status Code Report(펌웨어 로그 등을 내보낼 때 사용)프로토콜 구현
StatusCodeSmm
- 위와 같은 기능을 SMM에서 함
플랫폼/칩셋 초기화
DellDptfChipsetDxe
- dell의 intelDPTF관련 DXE
- 스로틀링, 열관리 정책 등을 세팅
PcdDxe
- 플랫폼 설정 값(PCD)을 런타임에서 읽고 쓰게 해주는 dxe
CpuIo2Dxe
- CPU I/O 프로토콜 구현 DXE
플래시·NVRAM
FlashDriver
- SPI 플래시 칩 접근용 드라이버
- Capsule 업데이트나 BIOS 플래싱, NVRAM 영역 쓰기 등에 사용
NvramDxe
- UEFI 변수 저장소(NV storage)를 관리하는 드라이버
부트/보안 관련 · 보드 설정
CrbDxe
- PCI root bridge · 버스 트리 구성을 초기화
FastBootRuntime
- fast boot 모드에 필요한 런타임 데이터 변수 세팅 관련 서비스
DellTcg2EarlyDxe
- TCG(Trusted Computing Group 기반 하드웨어 데이터 암호화 보안 기술) 관련 초기화 DXE
- Trusted Computing 스택을 이른 타이밍에 세팅
DxeBoardConfigInit
- 보드 설정
- 보드 전용 설정 초기화 dxe
- 전원 시퀀스, 장치 enable/disable 등
WdtDxe
- Watchdog Timer DXE
- OS 부팅 실패 리부트를 트리거하는 하드웨어/소프트웨어 워치독 설정
CMOS·플랫폼 기타
CmosDxe
- RTC/CMOS NVRAM 접근을 제공하는 DXE
- 날짜/시간 및 CMOS 기반 설정값
TpvDxe
- Trusted Platform Verification로 추정
- https://i.dell.com/sites/csdocuments/Merchandizing_Docs/en/dell-trusted-device-below-the-os-whitepaper.pdf
- 위 자료의 TPM과 관련이 있는 것으로 추정됨
PE view 실습
지난번 미비점 보충

지난 번 조사하였던 PE header 구조와 거의 유사한 모습을 직접 확인할 수 있었다.
다만 더 추가적인 확장자들을 확인할 수 있는데,
- .text
- 실행 코드(기계어 인스트럭션)가 들어가는 섹션
- https://wb-security.tistory.com/224
- .rdata
- 읽기 전용 초기화 데이터. 상수 문자열, vtable, 상수 테이블 등이 저장
- .data
- 읽기/쓰기 가능한 초기화 데이터. 전역 변수, static 변수 중 초기값이 있는 것들이 들어감
- .pdata
- 64비트 PE에서 주로 쓰이는 예외 처리 정보(예외 테이블) 섹션. 함수별 unwind 정보가 저장된다.
- https://dev.to/syrull/static-analysis-research-windows-pe-f6b
- .qtmimed
- C++기반의 크로스 플랫폼 프레임 워크인 QT 프레임워크를 의미하는 것으로 추정
- 실제로 qt를 활용하여 개발 되기도 하였고,
- 다른 파일에는 해당 확장자가 없는 것으로 보아 위와 같이 해석해도 무방할 듯함
- 사용된 프레임 워크를 역추적할 때 유용할 것으로 보임
- C++기반의 크로스 플랫폼 프레임 워크인 QT 프레임워크를 의미하는 것으로 추정
- .rsrc
- 아이콘, 다이얼로그, 문자열 테이블, 버전 정보 같은 윈도우 리소스가 저장되는 섹션.
- .reloc
- 재배치 정보 섹션. 이미지가 기본 베이스 주소가 아닌 다른 주소에 로드될 때, 어느 위치를 어떻게 수정해야 하는지 기록한다.
StatusCodeDxe를 PE view로 열어보기
이미지에서 볼 수 있다시피 더 복잡해진 형태이다.
앞서 DXE 실행 우선 순위에 있던 StatusCodeDxe를 PE view 로 열어 보기로 하였다.

우선 해당하는 우선 순위가 있는 부분을 .bin파일로 추출한 후,

이를 pe view(이 경우에는 그냥 hex파일을 열 수 있는 프로그램이기만 하면 될 듯 하다)로 개봉한다.
uefi의 guid의 구조는
4byte(little-endian)+2byte(little-endian)+2byte(little-endian)+2byte(big-endian)+6byte(big-endian)
이므로

위의 16바이트 데이터는 61422D26-81EC-47FF-B6CF-939EAEE73FBA로 변경할 수 있다.

이를 검색하여 실제 StatusCodeDxe로 접근할 수 있었고, 이 중 이미지를 추출하면

위와 같이 PE view로 열 수 있게 된다.
- xdata
- 스택 언와인드와 예외 처리를 위한 데이터
- 실행상태가 아니기 때문인지 현재는 아무것도 없는 상태인 듯 하다
- https://learn.microsoft.com/en-us/cpp/build/exception-handling-x64?view=msvc-170
x64 exception handling
Overview of Microsoft C++ exception handling conventions on x64.
learn.microsoft.com
'졸업프로젝트' 카테고리의 다른 글
| ghidra headless 사용 (0) | 2026.02.13 |
|---|---|
| 사전공부 6 (0) | 2026.02.06 |
| 사전공부 5 (0) | 2026.01.30 |
| 사전공부 4 (0) | 2026.01.23 |
| 사전 공부 1 & 2 (0) | 2026.01.02 |