졸업프로젝트

사전공부 3

img1244 2026. 1. 16. 16:00

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의 시스템의 모습

entries폴더 내부

그중 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

NVRAM

SMM

Freeform

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

 

PE view 실습

지난번 미비점 보충

지난 번 조사하였던 PE header 구조와 거의 유사한 모습을 직접 확인할 수 있었다.

다만 더 추가적인 확장자들을 확인할 수 있는데,

  • .text
  • .rdata
    • 읽기 전용 초기화 데이터. 상수 문자열, vtable, 상수 테이블 등이 저장
  • .data
    • 읽기/쓰기 가능한 초기화 데이터. 전역 변수, static 변수 중 초기값이 있는 것들이 들어감
  • .pdata
  • .qtmimed
    • C++기반의 크로스 플랫폼 프레임 워크인 QT 프레임워크를 의미하는 것으로 추정
      • 실제로 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로 열 수 있게 된다.

 

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