방망이
[프로젝트]UEFI DXE 바이너리 취약점 분석기 13주차 - P-code Phase1 본문
01 어셈블리 기초
RAX
64-bit accumulator
함수 반환값, 산술 연산
RBP
base pointer
스택 프레임 기준점
RSP
stack pointer
현재 스택 탑 위치
RIP
instruction pointer
다음 실행할 명령어 주소
RDI/RSI
1st / 2nd argument
함수 인자 (Linux x64)
RDX/RCX
3rd / 4th argument
함수 인자 (Linux x64)
0x1129 push rbp ; 호출자 RBP 저장
0x112a mov rbp, rsp ; 새 스택 프레임 설정
0x112d mov [rbp-0x4], edi ; 인자 a 저장
0x1130 mov [rbp-0x8], esi ; 인자 b 저장
0x1133 mov eax, [rbp-0x4] ; a → EAX
0x1136 add eax, [rbp-0x8] ; EAX = a + b
0x1139 pop rbp ; 프레임 해제
0x113a ret ; EAX에 결과 담아 반환

02 Ghidra 도구
핵심 뷰 & 도구
- CodeBrowser
- 메인 분석 뷰. 어셈블리 ↔ P-code 전환, 심볼 레이블링, 참조 추적. 오른쪽 클릭 → "Show Pcode"로 Raw P-code 확인 가능.
- Decompiler
- 어셈블리 → C 유사 코드로 변환. 내부적으로 High P-code를 사용. 변수 이름 재지정, 타입 선언 적용 가능.
- Script Manager
- Java / Python(Jython) 스크립트 실행 환경. P-code 자동 분석기 개발의 시작점. GhidraScript API 전체 사용 가능.
- Function Graph
- 제어 흐름 그래프(CFG) 시각화. 기본 블록 단위로 구조 파악. P-code 분석의 CFG 개념을 시각적으로 확인.
- Symbol Tree
- 함수, 심볼, 레이블 전체 목록. 분석 대상 함수를 빠르게 찾고 Import/Export 구조 파악.
- Auto Analysis
- 바이너리 최초 임포트 시 실행. Disassembly, Function Discovery, Reference Analysis 등 파이프라인 자동 수행.
P-code 보는 방법 — 12.0 이 버전 기준
1. 함수 열기
Symbol Tree에서 함수 더블클릭 → CodeBrowser에 어셈블리 표시
⇩
2. Low P-code
- 1단계 — Tool Options에서 먼저 활성화:
- Edit → Tool Options → Listing Fields → Pcode Field → "Display Raw Pcode" 체크 ON
- 2단계 — Listing 뷰 우상단 "Edit the Listing Fields" 아이콘 클릭:
- Listing 뷰 오른쪽 상단에 있는 ≡ 같은 아이콘 클릭 → PCode 항목 찾아서 우클릭 → "Enable Field" 클릭하여 활성
- 활성화가 완료되면 각 어셈블리 명령어 아래에 매핑된 Low P-code가 실시간으로 표시

⇩
3. High P-code
- Ghidra 12.0은 GUI가 없어서 따로 설정이 필요하다는데, 다양한 방법 공유 부탁드립니다.
03 컴파일러 & IR
왜 IR이 필요한가?

IR(중간 표현, Intermediate Representation) 을 사용하면 분석 알고리즘을 한 번만 구현해도 수십 개의 아키텍처에 적용할 수 있음. P-code가 바로 Ghidra의 IR이며, x86 명령어든 ARM 명령어든 모두 P-code로 변환된 뒤 분석.


'2026_졸업프로젝트' 카테고리의 다른 글
| [프로젝트]UEFI DXE 바이너리 취약점 분석기 15주차 - P-code Phase3 (0) | 2026.07.02 |
|---|---|
| [프로젝트]UEFI DXE 바이너리 취약점 분석기 14주차 - P-code Phase2 (0) | 2026.05.31 |
| [프로젝트]UEFI DXE 바이너리 취약점 분석기 12주차 - P-code 이론 (0) | 2026.05.04 |
| [프로젝트]UEFI DXE 바이너리 취약점 분석기 11주차 - Ghidra Script 수정 및 검증 (0) | 2026.04.02 |
| Edk2 빌드 (smm 드라이버 포함) (0) | 2026.04.02 |
