diff --git "a/docs/SystemInformer_\352\270\260\354\210\240\353\254\270\354\204\234_\354\240\204\354\236\220\354\261\205.md" "b/docs/SystemInformer_\352\270\260\354\210\240\353\254\270\354\204\234_\354\240\204\354\236\220\354\261\205.md"
new file mode 100644
index 000000000000..be4fbccbda55
--- /dev/null
+++ "b/docs/SystemInformer_\352\270\260\354\210\240\353\254\270\354\204\234_\354\240\204\354\236\220\354\261\205.md"
@@ -0,0 +1,503 @@
+# System Informer 기술 가이드북
+
+---
+
+# 전자책 (E-Book)
+
+**Windows 시스템 모니터링 도구의 설계와 구현**
+
+---
+
+## 저자 정보
+- **프로젝트**: System Informer (구 Process Hacker)
+- **라이선스**: MIT License
+- **발행일**: 2026년 1월
+
+---
+
+# 목차
+
+1. [서론](#1-서론)
+2. [프로젝트 구조](#2-프로젝트-구조)
+3. [핵심 기능](#3-핵심-기능)
+4. [기술 스택](#4-기술-스택)
+5. [빌드 환경](#5-빌드-환경)
+6. [핵심 기술 구현](#6-핵심-기술-구현)
+7. [플러그인 개발](#7-플러그인-개발)
+8. [보안 메커니즘](#8-보안-메커니즘)
+9. [부록](#9-부록)
+
+---
+
+# 1. 서론
+
+## 1.1 System Informer란?
+
+System Informer는 Windows 운영체제를 위한 고급 시스템 모니터링 및 분석 도구입니다. 기존 Windows 작업 관리자의 한계를 넘어 프로세스, 스레드, 핸들, 메모리, 네트워크 연결 등 시스템의 모든 측면을 심층적으로 분석할 수 있습니다.
+
+## 1.2 주요 특징
+
+```
+┌─────────────────────────────────────────────────────────────┐
+│ System Informer 특징 │
+├─────────────────────────────────────────────────────────────┤
+│ ✓ 상세한 프로세스/스레드/핸들 정보 │
+│ ✓ 실시간 CPU/메모리/디스크/네트워크 모니터링 │
+│ ✓ 커널 드라이버를 통한 심층 시스템 접근 │
+│ ✓ 악성코드 분석을 위한 고급 기능 │
+│ ✓ 확장 가능한 플러그인 시스템 │
+│ ✓ 100% 오픈소스 (MIT 라이선스) │
+└─────────────────────────────────────────────────────────────┘
+```
+
+## 1.3 역사
+
+- **2008**: Process Hacker로 시작
+- **2022**: System Informer로 리브랜딩
+- **현재**: 940,000+ 라인의 코드베이스
+
+---
+
+# 2. 프로젝트 구조
+
+## 2.1 아키텍처 개요
+
+System Informer는 3계층 아키텍처를 따릅니다:
+
+```
+┌─────────────────────────────────────────┐
+│ 사용자 인터페이스 계층 │
+│ SystemInformer.exe + Plugins │
+├─────────────────────────────────────────┤
+│ 핵심 라이브러리 계층 │
+│ phlib.dll + kphlib.dll │
+├─────────────────────────────────────────┤
+│ 커널 드라이버 계층 │
+│ KSystemInformer.sys │
+└─────────────────────────────────────────┘
+```
+
+## 2.2 디렉토리 구조
+
+| 디렉토리 | 설명 | 주요 파일 |
+|----------|------|-----------|
+| `SystemInformer/` | GUI 애플리케이션 | mainwnd.c, proctree.c |
+| `phlib/` | 핵심 라이브러리 | native.c, treenew.c |
+| `phnt/` | NT API 헤더 | ntpsapi.h, ntmmapi.h |
+| `KSystemInformer/` | 커널 드라이버 | driver.c, comms.c |
+| `kphlib/` | KPH 통신 라이브러리 | kphcomms.c |
+| `plugins/` | 플러그인 (11개) | 각 플러그인 폴더 |
+
+## 2.3 컴포넌트 통신
+
+```
+User Mode Kernel Mode
+┌────────────┐ ┌─────────────────┐
+│SystemInform│ DeviceIO │ KSystemInformer │
+│ er.exe │◄────────────►│ .sys │
+└─────┬──────┘ └────────┬────────┘
+ │ │
+ ▼ ▼
+┌────────────┐ ┌─────────────────┐
+│ phlib.dll │ │ Windows Kernel │
+└────────────┘ └─────────────────┘
+```
+
+---
+
+# 3. 핵심 기능
+
+## 3.1 프로세스 관리
+
+### 프로세스 목록
+- 실시간 프로세스 정보 표시
+- 트리/플랫 뷰 전환
+- 상세 속성 (토큰, 모듈, 핸들 등)
+
+### 프로세스 작업
+| 작업 | 설명 |
+|------|------|
+| Terminate | 프로세스 종료 |
+| Suspend/Resume | 일시 중지/재개 |
+| Create Dump | 메모리 덤프 생성 |
+| Inject DLL | DLL 주입 |
+
+## 3.2 시스템 모니터링
+
+### 실시간 그래프
+- CPU 사용률 (코어별)
+- 메모리 사용량
+- 디스크 I/O
+- 네트워크 트래픽
+- GPU 사용률 (플러그인)
+
+### 정보 수집 주기
+```c
+// 기본 업데이트 간격: 1초
+#define PH_PROVIDER_UPDATE_INTERVAL 1000
+```
+
+## 3.3 네트워크 분석
+
+- TCP/UDP 연결 목록
+- 로컬/원격 주소 및 포트
+- 연결 상태 (Established, Listening 등)
+- 프로세스별 네트워크 사용량
+
+## 3.4 서비스 관리
+
+- 서비스 시작/중지/재시작
+- 서비스 속성 편집
+- 의존성 분석 (플러그인)
+- 복구 옵션 설정 (플러그인)
+
+---
+
+# 4. 기술 스택
+
+## 4.1 프로그래밍 언어
+
+```
+C 언어 ████████████████████████████░░ 95%
+C++ ██░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 4%
+기타 █░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 1%
+```
+
+## 4.2 Windows API 계층
+
+| API | 용도 | 예시 |
+|-----|------|------|
+| Win32 | GUI, 일반 작업 | CreateWindow, ReadFile |
+| Native NT | 저수준 시스템 | NtQuerySystemInformation |
+| WDM | 커널 드라이버 | IoCreateDevice |
+| ETW | 이벤트 추적 | StartTrace |
+| WMI | 시스템 관리 | Win32_Process |
+| COM/DirectX | GPU 정보 | D3DKMTQueryStatistics |
+
+## 4.3 써드파티 라이브러리
+
+| 라이브러리 | 용도 |
+|------------|------|
+| JSON-C | JSON 파싱 |
+| PCRE | 정규 표현식 |
+| Zydis | 디스어셈블러 |
+| MaxMindDB | GeoIP |
+| Detours | 함수 후킹 |
+| MinIZ | ZIP 압축 |
+
+---
+
+# 5. 빌드 환경
+
+## 5.1 필수 요구사항
+
+```
+☑ Visual Studio 2022
+☑ Windows 10/11 SDK (10.0.22621.0)
+☑ C++ ATL/MFC 구성 요소
+☑ Git
+```
+
+## 5.2 드라이버 빌드 시 추가 요구사항
+
+```
+☑ Windows Driver Kit (WDK)
+☑ 테스트 서명 모드 또는 EV 인증서
+```
+
+## 5.3 빌드 명령
+
+```cmd
+:: 릴리스 빌드
+msbuild SystemInformer.sln /p:Configuration=Release /p:Platform=x64
+
+:: 플러그인 빌드
+msbuild Plugins.sln /p:Configuration=Release /p:Platform=x64
+```
+
+## 5.4 CMake 빌드
+
+```bash
+mkdir build && cd build
+cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release
+cmake --build .
+```
+
+---
+
+# 6. 핵심 기술 구현
+
+## 6.1 Native NT API 활용
+
+System Informer는 비공개 NT API를 광범위하게 사용합니다:
+
+```c
+// 프로세스 열거
+NTSTATUS PhEnumProcesses(_Out_ PVOID *Processes)
+{
+ return NtQuerySystemInformation(
+ SystemProcessInformation,
+ buffer,
+ bufferSize,
+ &returnLength
+ );
+}
+```
+
+### 주요 NT API 함수
+
+| 함수 | 용도 |
+|------|------|
+| NtQuerySystemInformation | 시스템 정보 조회 |
+| NtQueryInformationProcess | 프로세스 정보 |
+| NtReadVirtualMemory | 메모리 읽기 |
+| NtQueryObject | 객체 정보 |
+
+## 6.2 참조 카운팅 메모리 관리
+
+```c
+// 객체 생성
+PPH_STRING string = PhCreateString(L"Hello");
+
+// 참조 증가
+PhReferenceObject(string);
+
+// 참조 감소 (0이면 자동 해제)
+PhDereferenceObject(string);
+```
+
+## 6.3 커널 드라이버 통신
+
+```c
+// 드라이버 연결
+NTSTATUS KphConnect(_Out_ PKPH_COMMS_HANDLE Handle)
+{
+ return NtOpenFile(
+ &Handle->DeviceHandle,
+ FILE_READ_DATA | FILE_WRITE_DATA,
+ &objectAttributes,
+ &ioStatusBlock,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ 0
+ );
+}
+```
+
+## 6.4 TreeNew 고성능 컨트롤
+
+가상화된 트리/리스트 컨트롤로 수천 개 항목을 효율적으로 표시:
+
+```c
+// 노드 콜백 (필요할 때만 데이터 요청)
+BOOLEAN TreeNewCallback(
+ _In_ PH_TREENEW_MESSAGE Message,
+ _In_ PVOID Parameter1,
+ _In_ PVOID Parameter2
+)
+{
+ switch (Message) {
+ case TreeNewGetCellText:
+ // 셀 텍스트 반환
+ break;
+ case TreeNewGetChildren:
+ // 자식 노드 반환
+ break;
+ }
+}
+```
+
+## 6.5 ETW 이벤트 추적
+
+```c
+// ETW 세션 시작
+StartTrace(&sessionHandle, SessionName, &properties);
+
+// 공급자 활성화
+EnableTraceEx2(
+ sessionHandle,
+ &DiskIoGuid,
+ EVENT_CONTROL_CODE_ENABLE_PROVIDER,
+ TRACE_LEVEL_INFORMATION,
+ 0, 0, 0, NULL
+);
+```
+
+## 6.6 동적 데이터 시스템
+
+Windows 버전별 커널 구조체 오프셋 관리:
+
+```xml
+
+
+
+ 0x440
+ 0x4b8
+
+
+```
+
+---
+
+# 7. 플러그인 개발
+
+## 7.1 플러그인 구조
+
+```c
+// 필수 내보내기 함수
+BOOLEAN PhPluginLoad(
+ _In_ PPH_PLUGIN Plugin,
+ _In_ ULONG SystemServiceNumber
+)
+{
+ // 플러그인 초기화
+ PH_PLUGIN_INFORMATION info;
+ info.Name = L"MyPlugin";
+ info.Author = L"Author";
+ info.Description = L"Description";
+
+ PhRegisterPlugin(&info);
+
+ // 콜백 등록
+ PhRegisterCallback(
+ &PhProcessAddedEvent,
+ OnProcessAdded,
+ NULL,
+ &CallbackRegistration
+ );
+
+ return TRUE;
+}
+```
+
+## 7.2 내장 플러그인
+
+| 플러그인 | 기능 |
+|----------|------|
+| DotNetTools | .NET 런타임 분석 |
+| ExtendedTools | ETW, GPU, NPU 모니터링 |
+| HardwareDevices | 디스크, 네트워크 모니터링 |
+| NetworkTools | Ping, Traceroute, GeoIP |
+| OnlineChecks | VirusTotal 검사 |
+| Updater | 자동 업데이트 |
+
+## 7.3 확장 가능한 지점
+
+- 메인 메뉴 항목 추가
+- 컨텍스트 메뉴 확장
+- 프로세스 속성 페이지 추가
+- 컬럼 추가
+- 정보 제공자 등록
+
+---
+
+# 8. 보안 메커니즘
+
+## 8.1 서명 검증
+
+```c
+// Authenticode 서명 검증
+VERIFY_RESULT PhVerifyFile(_In_ PWSTR FileName)
+{
+ WINTRUST_DATA trustData;
+ // WinVerifyTrust API 사용
+ return WinVerifyTrust(NULL, &actionGuid, &trustData);
+}
+```
+
+## 8.2 드라이버 클라이언트 검증
+
+```c
+// 클라이언트 프로세스 검증
+NTSTATUS KphVerifyClient(_In_ PEPROCESS Process)
+{
+ // 이미지 해시 계산 후 신뢰할 수 있는 해시와 비교
+ if (RtlEqualMemory(hash, KphTrustedHash, sizeof(hash))) {
+ return STATUS_SUCCESS;
+ }
+ return STATUS_ACCESS_DENIED;
+}
+```
+
+## 8.3 보안 기능 활성화
+
+빌드 시 SDL (Security Development Lifecycle) 검사 활성화:
+
+```xml
+
+ true
+ true
+
+```
+
+---
+
+# 9. 부록
+
+## 9.1 프로젝트 통계
+
+| 항목 | 수치 |
+|------|------|
+| 총 소스 파일 | 864개 |
+| 코드 라인 | 940,000+ |
+| C 파일 | 504개 |
+| 헤더 파일 | 335개 |
+| 플러그인 수 | 11개 |
+
+## 9.2 주요 소스 파일
+
+| 파일 | 위치 | 기능 |
+|------|------|------|
+| proctree.c | SystemInformer/ | 프로세스 트리 |
+| procprv.c | SystemInformer/ | 프로세스 공급자 |
+| native.c | phlib/ | Native API 래퍼 |
+| treenew.c | phlib/ | TreeNew 컨트롤 |
+| comms.c | KSystemInformer/ | 드라이버 통신 |
+
+## 9.3 참고 자료
+
+### 공식 리소스
+- GitHub: github.com/winsiderss/si
+- 문서: docs.systeminformer.com
+
+### Windows 내부 구조
+- Windows Internals (7th Edition)
+- ReactOS 소스 코드
+
+### Native API
+- phnt 헤더 컬렉션
+- ntinternals.net
+
+## 9.4 용어 사전
+
+| 용어 | 설명 |
+|------|------|
+| EPROCESS | 커널의 프로세스 구조체 |
+| ETHREAD | 커널의 스레드 구조체 |
+| PEB | Process Environment Block |
+| TEB | Thread Environment Block |
+| NT API | Native NT API |
+| WDM | Windows Driver Model |
+| ETW | Event Tracing for Windows |
+| PPL | Protected Process Light |
+
+---
+
+# 라이선스
+
+```
+MIT License
+
+Copyright (c) System Informer Authors
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software.
+```
+
+---
+
+**문서 끝**
+
+*이 전자책은 System Informer 프로젝트의 기술 문서를 종합하여 제작되었습니다.*
diff --git "a/docs/technical/01_\355\224\204\353\241\234\354\240\235\355\212\270_\352\265\254\354\241\260\354\204\244\352\263\204\354\204\234.md" "b/docs/technical/01_\355\224\204\353\241\234\354\240\235\355\212\270_\352\265\254\354\241\260\354\204\244\352\263\204\354\204\234.md"
new file mode 100644
index 000000000000..40827a06a02a
--- /dev/null
+++ "b/docs/technical/01_\355\224\204\353\241\234\354\240\235\355\212\270_\352\265\254\354\241\260\354\204\244\352\263\204\354\204\234.md"
@@ -0,0 +1,573 @@
+# System Informer 프로젝트 구조설계서
+
+## 문서 정보
+- **프로젝트명**: System Informer (구 Process Hacker)
+- **버전**: 3.x
+- **라이선스**: MIT License
+- **문서 작성일**: 2026-01-25
+
+---
+
+## 1. 프로젝트 개요
+
+### 1.1 프로젝트 소개
+
+System Informer는 Windows 운영체제를 위한 고급 시스템 모니터링 및 분석 도구입니다. 프로세스, 스레드, 핸들, 메모리, 네트워크 연결 등 시스템의 모든 측면을 심층적으로 분석할 수 있는 기능을 제공합니다.
+
+### 1.2 주요 특징
+
+- **다층 아키텍처**: GUI 애플리케이션, 핵심 라이브러리, 커널 드라이버의 3계층 구조
+- **보안 중심 설계**: 드라이버 서명, 클라이언트 검증, 무결성 확인
+- **확장 가능한 플러그인 시스템**: 기능 확장을 위한 모듈화된 플러그인 아키텍처
+- **포괄적 시스템 모니터링**: 프로세스, 스레드, 핸들, 메모리, 네트워크, GPU 등
+- **저수준 시스템 접근**: Native NT API 및 커널 드라이버를 통한 심층 분석
+
+### 1.3 지원 플랫폼
+
+| 플랫폼 | 아키텍처 | 지원 |
+|--------|----------|------|
+| Windows XP | x86 | 제한적 |
+| Windows Vista/7 | x86, x64 | 완전 지원 |
+| Windows 8/8.1 | x86, x64 | 완전 지원 |
+| Windows 10 | x86, x64, ARM64 | 완전 지원 |
+| Windows 11 | x64, ARM64 | 완전 지원 |
+
+---
+
+## 2. 시스템 아키텍처
+
+### 2.1 계층 구조도
+
+```
+┌─────────────────────────────────────────────────────────────────┐
+│ 사용자 인터페이스 계층 │
+│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
+│ │ SystemInformer │ │ Plugins │ │ PEView │ │
+│ │ (GUI App) │ │ (Extensions) │ │ (PE Viewer) │ │
+│ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │
+└───────────┼────────────────────┼────────────────────┼───────────┘
+ │ │ │
+┌───────────┼────────────────────┼────────────────────┼───────────┐
+│ ▼ ▼ ▼ │
+│ 핵심 라이브러리 계층 │
+│ ┌─────────────────────────────────────────────────────────────┐│
+│ │ phlib ││
+│ │ (프로세스/시스템 라이브러리 - 130K+ LOC) ││
+│ └──────────────────────────┬──────────────────────────────────┘│
+│ │ │
+│ ┌─────────────────┐ ┌─────┴─────┐ ┌─────────────────┐ │
+│ │ phnt │ │ kphlib │ │ phsvc │ │
+│ │ (NT API 헤더) │ │(KPH 통신) │ │ (서비스) │ │
+│ └─────────────────┘ └─────┬─────┘ └─────────────────┘ │
+└─────────────────────────────┼───────────────────────────────────┘
+ │
+┌─────────────────────────────┼───────────────────────────────────┐
+│ ▼ │
+│ 커널 드라이버 계층 │
+│ ┌─────────────────────────────────────────────────────────────┐│
+│ │ KSystemInformer ││
+│ │ (WDM 커널 드라이버) ││
+│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ ││
+│ │ │ Informer │ │ Protection │ │ CID Tracking │ ││
+│ │ │ (모니터링) │ │ (보안) │ │ (추적) │ ││
+│ │ └─────────────┘ └─────────────┘ └─────────────────┘ ││
+│ └─────────────────────────────────────────────────────────────┘│
+└─────────────────────────────────────────────────────────────────┘
+ │
+┌─────────────────────────────┼───────────────────────────────────┐
+│ ▼ │
+│ Windows 커널 (NT Kernel) │
+└─────────────────────────────────────────────────────────────────┘
+```
+
+### 2.2 컴포넌트 간 통신
+
+```
+┌──────────────┐ IPC/RPC ┌──────────────┐
+│ SystemInformer│◄───────────────►│ phsvc │
+│ (Client) │ │ (Service) │
+└──────┬───────┘ └──────────────┘
+ │
+ │ Native API (ntdll.dll)
+ │
+ ▼
+┌──────────────┐ DeviceIoControl ┌──────────────┐
+│ phlib │◄─────────────────►│KSystemInformer│
+│ (Library) │ │ (Driver) │
+└──────────────┘ └──────────────┘
+```
+
+---
+
+## 3. 디렉토리 구조
+
+### 3.1 루트 디렉토리
+
+```
+systeminformer/
+├── SystemInformer/ # 메인 GUI 애플리케이션
+├── KSystemInformer/ # 커널 드라이버
+├── phlib/ # 핵심 라이브러리
+├── phnt/ # Native NT API 헤더
+├── kphlib/ # 커널 프로토콜 라이브러리
+├── plugins/ # 플러그인 모음
+├── tools/ # 빌드 도구 및 유틸리티
+├── build/ # 빌드 스크립트
+├── cmake/ # CMake 설정
+├── .github/ # GitHub Actions CI/CD
+├── .vscode/ # VS Code 설정
+├── SystemInformer.sln # 메인 솔루션
+├── KSystemInformer.sln # 드라이버 솔루션
+├── Plugins.sln # 플러그인 솔루션
+└── CMakeLists.txt # CMake 루트 설정
+```
+
+### 3.2 SystemInformer (GUI 애플리케이션)
+
+```
+SystemInformer/
+├── include/ # 헤더 파일
+│ ├── phapp.h # 메인 애플리케이션 헤더
+│ ├── phplug.h # 플러그인 인터페이스
+│ ├── mainwndp.h # 메인 윈도우 비공개 헤더
+│ └── ...
+├── phsvc/ # 서비스 컴포넌트
+│ ├── svcmain.c # 서비스 진입점
+│ ├── svcclient.c # 클라이언트
+│ └── svcapi.c # API 구현
+├── resources/ # 리소스 파일
+│ ├── etwguids.txt # ETW GUID 매핑
+│ ├── pooltag.txt # 커널 풀 태그
+│ └── *.png # 아이콘 이미지
+├── mainwnd.c # 메인 윈도우
+├── proctree.c # 프로세스 트리 뷰
+├── procprv.c # 프로세스 공급자
+├── actions.c # 프로세스 작업
+├── options.c # 설정 관리
+├── plugin.c # 플러그인 로더
+└── SystemInformer.vcxproj # VS 프로젝트
+```
+
+### 3.3 KSystemInformer (커널 드라이버)
+
+```
+KSystemInformer/
+├── include/ # 드라이버 헤더
+│ ├── kph.h # 메인 헤더
+│ ├── kphmsg.h # 메시지 정의
+│ └── informer*.h # Informer 헤더
+├── informer_process.c # 프로세스 모니터링
+├── informer_thread.c # 스레드 모니터링
+├── informer_file.c # 파일 모니터링
+├── informer_fileop.c # 파일 작업 감시
+├── informer_registry.c # 레지스트리 감시
+├── informer_image.c # 이미지 로드 감시
+├── comms.c # 통신 계층
+├── comms_handlers.c # 통신 핸들러
+├── protection.c # 보호 메커니즘
+├── cid_tracking.c # CID 추적
+├── verify.c # 검증
+├── driver.c # 드라이버 진입점
+└── KSystemInformer.vcxproj # VS 프로젝트
+```
+
+### 3.4 phlib (핵심 라이브러리)
+
+```
+phlib/
+├── include/ # 공개 헤더
+│ ├── ph.h # 메인 헤더
+│ ├── phbase.h # 기본 타입/매크로
+│ ├── phgui.h # GUI 헤더
+│ └── ...
+├── native.c # Native API 래퍼
+├── nativeprocess.c # 프로세스 관리
+├── nativethread.c # 스레드 관리
+├── nativetoken.c # 토큰/권한
+├── nativefile.c # 파일 작업
+├── guisup.c # GUI 지원
+├── treenew.c # 트리/리스트뷰
+├── symprv.c # 심볼 공급자
+├── util.c # 유틸리티
+├── settings.c # 설정 관리
+├── json.c # JSON 파싱
+├── http.c # HTTP 통신
+└── phlib.vcxproj # VS 프로젝트
+```
+
+### 3.5 Plugins (플러그인)
+
+```
+plugins/
+├── include/ # 플러그인 공유 헤더
+├── DotNetTools/ # .NET 분석 도구
+├── ExtendedTools/ # 확장 도구 (ETW, GPU)
+├── HardwareDevices/ # 하드웨어 모니터링
+├── NetworkTools/ # 네트워크 도구
+├── ExtendedServices/ # 서비스 확장
+├── ExtendedNotifications/ # 알림 확장
+├── ToolStatus/ # 도구 모음 상태
+├── OnlineChecks/ # 온라인 검사 (VirusTotal)
+├── Updater/ # 자동 업데이트
+├── UserNotes/ # 사용자 주석
+├── WindowExplorer/ # 윈도우 탐색기
+└── Plugins.sln # 플러그인 솔루션
+```
+
+---
+
+## 4. 주요 모듈 설계
+
+### 4.1 프로세스 관리 모듈
+
+```
+┌────────────────────────────────────────────────────────────┐
+│ 프로세스 관리 모듈 구조 │
+├────────────────────────────────────────────────────────────┤
+│ │
+│ ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │
+│ │ procprv.c │─────►│ proctree.c │─────►│ UI 렌더링 │ │
+│ │ (Provider) │ │ (Tree View) │ │ │ │
+│ └──────┬──────┘ └─────────────┘ └───────────┘ │
+│ │ │
+│ ▼ │
+│ ┌─────────────────────────────────────────────────┐ │
+│ │ Native API Layer │ │
+│ │ NtQuerySystemInformation / NtQueryProcess... │ │
+│ └──────────────────────┬──────────────────────────┘ │
+│ │ │
+│ ▼ │
+│ ┌─────────────────────────────────────────────────┐ │
+│ │ KSystemInformer Driver │ │
+│ │ (확장 정보: 보호 상태, 토큰, 메모리 등) │ │
+│ └─────────────────────────────────────────────────┘ │
+│ │
+└────────────────────────────────────────────────────────────┘
+```
+
+### 4.2 플러그인 시스템 아키텍처
+
+```
+┌─────────────────────────────────────────────────────────────┐
+│ Plugin Manager │
+│ ┌───────────────────────────────────────────────────────┐ │
+│ │ plugman.c / plugin.c │ │
+│ │ - 플러그인 검색 및 로드 │ │
+│ │ - 의존성 관리 │ │
+│ │ - 콜백 등록 │ │
+│ └───────────────────────────────────────────────────────┘ │
+└─────────────────────────────────────────────────────────────┘
+ │
+ ┌───────────────┼───────────────┐
+ ▼ ▼ ▼
+ ┌───────────┐ ┌───────────┐ ┌───────────┐
+ │ Plugin A │ │ Plugin B │ │ Plugin C │
+ │ (.dll) │ │ (.dll) │ │ (.dll) │
+ └───────────┘ └───────────┘ └───────────┘
+
+ 각 플러그인 필수 구현:
+ - PhPluginGetInformation() : 플러그인 정보 제공
+ - DllMain() : DLL 진입점
+```
+
+### 4.3 커널 드라이버 통신 아키텍처
+
+```
+┌──────────────────────────────────────────────────────────────┐
+│ User Mode (Ring 3) │
+│ │
+│ ┌────────────────┐ ┌────────────────┐ │
+│ │ SystemInformer │ │ kphlib │ │
+│ │ (Client) │────────►│ (통신 라이브러리)│ │
+│ └────────────────┘ └───────┬────────┘ │
+│ │ │
+│ CreateFile/DeviceIoControl │
+└─────────────────────────────────────┼────────────────────────┘
+ │
+══════════════════════════════════════╪════════════════════════
+ │
+┌─────────────────────────────────────┼────────────────────────┐
+│ Kernel Mode (Ring 0) │
+│ ▼ │
+│ ┌──────────────────────────────────────────────────────┐ │
+│ │ KSystemInformer Driver │ │
+│ │ ┌──────────────┐ ┌──────────────┐ ┌────────────┐ │ │
+│ │ │ comms.c │ │ handlers.c │ │ verify.c │ │ │
+│ │ │ (IRP 처리) │ │ (요청 처리) │ │ (검증) │ │ │
+│ │ └──────────────┘ └──────────────┘ └────────────┘ │ │
+│ │ │ │
+│ │ ┌──────────────────────────────────────────────┐ │ │
+│ │ │ Informer Modules │ │ │
+│ │ │ Process | Thread | File | Registry | Image │ │ │
+│ │ └──────────────────────────────────────────────┘ │ │
+│ └──────────────────────────────────────────────────────┘ │
+│ │
+└──────────────────────────────────────────────────────────────┘
+```
+
+---
+
+## 5. 데이터 흐름
+
+### 5.1 프로세스 정보 수집 흐름
+
+```
+1. 타이머 트리거 (1초 간격)
+ │
+ ▼
+2. PhEnumProcesses() 호출
+ │
+ ├──► NtQuerySystemInformation(SystemProcessInformation)
+ │ │
+ │ ▼
+ │ 프로세스 기본 정보 수집
+ │
+ ├──► KPH 드라이버 쿼리 (확장 정보)
+ │ │
+ │ ▼
+ │ 보호 상태, 서명 레벨 등
+ │
+ ▼
+3. 프로세스 노드 업데이트
+ │
+ ▼
+4. 델타 계산 (CPU, I/O, 메모리)
+ │
+ ▼
+5. UI 트리뷰 업데이트
+```
+
+### 5.2 이벤트 처리 흐름
+
+```
+┌─────────────────┐
+│ 시스템 이벤트 │ (프로세스 생성, 파일 접근 등)
+└────────┬────────┘
+ │
+ ▼
+┌─────────────────┐
+│ KSystemInformer │ (커널 콜백 수신)
+│ Informer │
+└────────┬────────┘
+ │
+ ▼
+┌─────────────────┐
+│ 이벤트 큐잉 │ (필터링, 버퍼링)
+└────────┬────────┘
+ │
+ ▼
+┌─────────────────┐
+│ 사용자 모드 │ (DeviceIoControl로 전달)
+│ 수신 │
+└────────┬────────┘
+ │
+ ▼
+┌─────────────────┐
+│ 콜백 실행 │ (등록된 콜백 호출)
+└────────┬────────┘
+ │
+ ▼
+┌─────────────────┐
+│ UI 업데이트 │
+└─────────────────┘
+```
+
+---
+
+## 6. 보안 아키텍처
+
+### 6.1 드라이버 보안 계층
+
+```
+┌─────────────────────────────────────────────────────────────┐
+│ 보안 검증 흐름 │
+├─────────────────────────────────────────────────────────────┤
+│ │
+│ 1. 클라이언트 검증 │
+│ ┌─────────────────────────────────────────────────┐ │
+│ │ - 프로세스 서명 검증 (Authenticode) │ │
+│ │ - 이미지 무결성 확인 │ │
+│ │ - 신뢰할 수 있는 게시자 확인 │ │
+│ └─────────────────────────────────────────────────┘ │
+│ │ │
+│ ▼ │
+│ 2. 동적 데이터 검증 │
+│ ┌─────────────────────────────────────────────────┐ │
+│ │ - kphdyn.xml 서명 확인 │ │
+│ │ - Windows 버전별 오프셋 검증 │ │
+│ │ - 구조체 크기 유효성 검사 │ │
+│ └─────────────────────────────────────────────────┘ │
+│ │ │
+│ ▼ │
+│ 3. 요청 권한 검사 │
+│ ┌─────────────────────────────────────────────────┐ │
+│ │ - 클라이언트 권한 레벨 확인 │ │
+│ │ - 대상 프로세스 보호 상태 확인 │ │
+│ │ - 작업 허용 여부 결정 │ │
+│ └─────────────────────────────────────────────────┘ │
+│ │
+└─────────────────────────────────────────────────────────────┘
+```
+
+### 6.2 프로세스 보호 메커니즘
+
+```
+보호 레벨:
+┌──────────────────────────────────────────────────────────┐
+│ Level 3 (Max) │ 완전 보호 - 종료, 수정 불가 │
+├──────────────────────────────────────────────────────────┤
+│ Level 2 │ 부분 보호 - 일부 작업 허용 │
+├──────────────────────────────────────────────────────────┤
+│ Level 1 │ 기본 보호 - 대부분 작업 허용 │
+├──────────────────────────────────────────────────────────┤
+│ Level 0 │ 보호 없음 │
+└──────────────────────────────────────────────────────────┘
+```
+
+---
+
+## 7. 메모리 관리
+
+### 7.1 참조 카운팅 시스템
+
+```c
+// phlib의 참조 카운팅 패턴
+typedef struct _PH_OBJECT {
+ PH_OBJECT_HEADER Header;
+ // 객체 데이터
+} PH_OBJECT;
+
+// 참조 카운트 관리
+PhReferenceObject(Object); // 참조 증가
+PhDereferenceObject(Object); // 참조 감소 (0이면 해제)
+```
+
+### 7.2 메모리 풀 관리
+
+```
+┌─────────────────────────────────────────────────────┐
+│ 메모리 풀 구조 │
+├─────────────────────────────────────────────────────┤
+│ │
+│ ┌─────────────┐ ┌─────────────┐ │
+│ │ Small Pool │ │ Large Pool │ │
+│ │ (< 256KB) │ │ (>= 256KB) │ │
+│ └──────┬──────┘ └──────┬──────┘ │
+│ │ │ │
+│ ▼ ▼ │
+│ ┌─────────────────────────────────────────┐ │
+│ │ Heap Manager (phlib) │ │
+│ │ - 캐시된 할당/해제 │ │
+│ │ - 디버그 모드 추적 │ │
+│ └─────────────────────────────────────────┘ │
+│ │
+└─────────────────────────────────────────────────────┘
+```
+
+---
+
+## 8. 스레드 및 동기화
+
+### 8.1 동기화 프리미티브
+
+| 프리미티브 | 용도 | 구현 |
+|-----------|------|------|
+| Queued Lock | 경량 잠금 | `PH_QUEUED_LOCK` |
+| Init Once | 일회성 초기화 | `PH_INITONCE` |
+| Rundown Protection | 안전한 해제 | `EX_RUNDOWN_REF` |
+| Push Lock | 커널 잠금 | `EX_PUSH_LOCK` |
+
+### 8.2 작업 스레드 모델
+
+```
+┌─────────────────────────────────────────────────────┐
+│ 작업 큐 시스템 │
+├─────────────────────────────────────────────────────┤
+│ │
+│ Main Thread Worker Threads │
+│ ┌─────────┐ ┌─────────────────┐ │
+│ │ UI Loop │────────►│ Thread Pool │ │
+│ └─────────┘ │ - I/O 작업 │ │
+│ │ - 네트워크 │ │
+│ │ - 파일 작업 │ │
+│ └─────────────────┘ │
+│ │
+│ Provider Threads │
+│ ┌─────────────────────────────────────────┐ │
+│ │ Process | Thread | Handle | Network │ │
+│ │ (주기적 갱신 스레드) │ │
+│ └─────────────────────────────────────────┘ │
+│ │
+└─────────────────────────────────────────────────────┘
+```
+
+---
+
+## 9. 확장성 설계
+
+### 9.1 플러그인 확장점
+
+```
+┌────────────────────────────────────────────────────────────┐
+│ 확장 가능한 지점 │
+├────────────────────────────────────────────────────────────┤
+│ │
+│ • 메인 메뉴 확장 │
+│ • 컨텍스트 메뉴 확장 │
+│ • 프로세스 속성 페이지 추가 │
+│ • 서비스 속성 페이지 추가 │
+│ • 컬럼 추가 (프로세스, 스레드, 핸들 등) │
+│ • 정보 제공자 등록 │
+│ • 이벤트 콜백 등록 │
+│ • 필터 추가 │
+│ • 도구 모음 버튼 추가 │
+│ │
+└────────────────────────────────────────────────────────────┘
+```
+
+### 9.2 콜백 시스템
+
+```c
+// 콜백 등록 예제
+typedef struct _PH_PLUGIN_CALLBACKS {
+ PPH_CALLBACK ProcessAdded;
+ PPH_CALLBACK ProcessDeleted;
+ PPH_CALLBACK ProcessHighlighting;
+ PPH_CALLBACK TreeNewMessage;
+ PPH_CALLBACK MenuItemExecute;
+ // ...
+} PH_PLUGIN_CALLBACKS;
+```
+
+---
+
+## 10. 프로젝트 통계
+
+| 항목 | 수치 |
+|------|------|
+| 총 소스 파일 수 | 864개 |
+| C 파일 | 504개 |
+| C++ 파일 | 25개 |
+| 헤더 파일 | 335개 |
+| 총 코드 라인 | 940,000+ 라인 |
+| 플러그인 수 | 11개 |
+| 지원 Windows 버전 | 40+ |
+
+---
+
+## 부록: 주요 파일 참조
+
+### 핵심 소스 파일 (코드 라인 기준)
+
+| 파일 | 위치 | 라인 수 | 설명 |
+|------|------|---------|------|
+| util.c | phlib/ | 308K | 범용 유틸리티 |
+| treenew.c | phlib/ | 279K | 트리/리스트뷰 |
+| proctree.c | SystemInformer/ | 244K | 프로세스 트리 |
+| native.c | phlib/ | 242K | Native API |
+| tokprp.c | SystemInformer/ | 244K | 토큰 속성 |
+| actions.c | SystemInformer/ | 199K | 프로세스 작업 |
+| mapimg.c | phlib/ | 181K | PE 이미지 매핑 |
+| mainwnd.c | SystemInformer/ | 175K | 메인 윈도우 |
+| devprv.c | SystemInformer/ | 173K | 디바이스 공급자 |
+| guisup.c | phlib/ | 170K | GUI 지원 |
diff --git "a/docs/technical/02_\352\270\260\353\212\245_\353\252\205\354\204\270\354\204\234.md" "b/docs/technical/02_\352\270\260\353\212\245_\353\252\205\354\204\270\354\204\234.md"
new file mode 100644
index 000000000000..d8808f054c2a
--- /dev/null
+++ "b/docs/technical/02_\352\270\260\353\212\245_\353\252\205\354\204\270\354\204\234.md"
@@ -0,0 +1,782 @@
+# System Informer 기능 명세서
+
+## 문서 정보
+- **프로젝트명**: System Informer
+- **문서 버전**: 1.0
+- **작성일**: 2026-01-25
+
+---
+
+## 1. 기능 개요
+
+System Informer는 Windows 시스템의 포괄적인 모니터링 및 관리 도구로, 다음과 같은 주요 기능 카테고리를 제공합니다.
+
+```
+┌─────────────────────────────────────────────────────────────────┐
+│ System Informer 기능 맵 │
+├─────────────────────────────────────────────────────────────────┤
+│ │
+│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
+│ │ 프로세스 관리 │ │ 스레드 관리 │ │ 핸들 관리 │ │
+│ └───────────────┘ └───────────────┘ └───────────────┘ │
+│ │
+│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
+│ │ 메모리 분석 │ │ 네트워크 모니터│ │ 모듈 분석 │ │
+│ └───────────────┘ └───────────────┘ └───────────────┘ │
+│ │
+│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
+│ │ 서비스 관리 │ │ 디스크 모니터 │ │ GPU 모니터 │ │
+│ └───────────────┘ └───────────────┘ └───────────────┘ │
+│ │
+│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
+│ │ 시스템 정보 │ │ 보안 분석 │ │ 플러그인 │ │
+│ └───────────────┘ └───────────────┘ └───────────────┘ │
+│ │
+└─────────────────────────────────────────────────────────────────┘
+```
+
+---
+
+## 2. 프로세스 관리 기능
+
+### 2.1 프로세스 목록 표시
+
+**기능 ID**: PROC-001
+**소스 파일**: `SystemInformer/proctree.c`, `SystemInformer/procprv.c`
+
+#### 기능 설명
+시스템에서 실행 중인 모든 프로세스를 트리 또는 목록 형태로 표시합니다.
+
+#### 표시 정보
+
+| 컬럼 | 설명 | 구현 위치 |
+|------|------|-----------|
+| Name | 프로세스 이름 | `procprv.c:PhpProcessQueryName` |
+| PID | 프로세스 ID | 시스템 정보 |
+| CPU | CPU 사용률 (%) | `procprv.c:PhpProcessCalculateCpu` |
+| I/O Total Rate | 초당 I/O 바이트 | 델타 계산 |
+| Private Bytes | 개인 메모리 사용량 | 시스템 정보 |
+| User Name | 실행 사용자 | 토큰 정보 |
+| Description | 파일 설명 | 버전 정보 |
+| Company Name | 제조사 | 버전 정보 |
+| Command Line | 명령줄 | PEB 정보 |
+| DEP | 데이터 실행 방지 상태 | 프로세스 정보 |
+| ASLR | 주소 공간 무작위화 | 이미지 정보 |
+| Integrity | 무결성 레벨 | 토큰 정보 |
+| Verified Signer | 디지털 서명자 | `verify.c` |
+
+#### 사용자 시나리오
+
+```
+사용자 → 메인 윈도우 열기
+ → 프로세스 목록 확인
+ → 특정 프로세스 선택
+ → 상세 정보 확인 또는 작업 수행
+```
+
+---
+
+### 2.2 프로세스 트리 뷰
+
+**기능 ID**: PROC-002
+**소스 파일**: `SystemInformer/proctree.c`
+
+#### 기능 설명
+부모-자식 관계를 트리 구조로 표시하여 프로세스 계층 구조를 시각화합니다.
+
+#### 트리 구조 예시
+
+```
+System (4)
+├── smss.exe (392)
+│ └── csrss.exe (508)
+├── services.exe (620)
+│ ├── svchost.exe (812)
+│ │ └── WmiPrvSE.exe (2340)
+│ ├── svchost.exe (844)
+│ └── spoolsv.exe (1280)
+├── lsass.exe (636)
+└── winlogon.exe (580)
+ └── explorer.exe (1856)
+ ├── notepad.exe (3456)
+ └── chrome.exe (4520)
+```
+
+#### 기능 옵션
+
+- **트리 모드 토글**: 트리/플랫 목록 전환
+- **자식 하이라이트**: 선택된 프로세스의 자식 강조
+- **부모 추적**: 선택된 프로세스의 부모로 이동
+
+---
+
+### 2.3 프로세스 작업
+
+**기능 ID**: PROC-003
+**소스 파일**: `SystemInformer/actions.c`
+
+#### 지원 작업 목록
+
+| 작업 | 설명 | 필요 권한 | 구현 함수 |
+|------|------|-----------|-----------|
+| Terminate | 프로세스 종료 | PROCESS_TERMINATE | `PhUiTerminateProcess` |
+| Terminate Tree | 프로세스 트리 종료 | PROCESS_TERMINATE | `PhUiTerminateProcesses` |
+| Suspend | 프로세스 일시 중지 | PROCESS_SUSPEND_RESUME | `PhUiSuspendProcess` |
+| Resume | 프로세스 재개 | PROCESS_SUSPEND_RESUME | `PhUiResumeProcess` |
+| Restart | 프로세스 재시작 | 다중 권한 | `PhUiRestartProcess` |
+| Reduce Working Set | 워킹셋 축소 | PROCESS_SET_QUOTA | `PhUiReduceWorkingSet` |
+| Virtualization | 가상화 토글 | TOKEN_WRITE | `PhUiSetVirtualization` |
+| Create Dump | 덤프 파일 생성 | PROCESS_ALL_ACCESS | `PhUiCreateDumpFile` |
+| Debug | 디버거 연결 | PROCESS_ALL_ACCESS | `PhUiDebugProcess` |
+| Inject DLL | DLL 주입 | PROCESS_ALL_ACCESS | `PhUiInjectDll` |
+| Set Priority | 우선순위 변경 | PROCESS_SET_INFORMATION | `PhUiSetPriority` |
+| Set I/O Priority | I/O 우선순위 변경 | PROCESS_SET_INFORMATION | `PhUiSetIoPriority` |
+| Set Affinity | CPU 친화도 설정 | PROCESS_SET_INFORMATION | `PhUiSetAffinity` |
+
+#### 강제 종료 메커니즘
+
+```
+일반 종료 실패 시:
+┌─────────────────────────────────────────┐
+│ 1. NtTerminateProcess 시도 │
+│ ↓ 실패 │
+│ 2. KSystemInformer 드라이버 사용 │
+│ ↓ 실패 │
+│ 3. 스레드 개별 종료 시도 │
+│ ↓ 실패 │
+│ 4. 사용자에게 실패 알림 │
+└─────────────────────────────────────────┘
+```
+
+---
+
+### 2.4 프로세스 속성
+
+**기능 ID**: PROC-004
+**소스 파일**: `SystemInformer/prpg*.c`
+
+#### 속성 페이지 목록
+
+| 페이지 | 소스 파일 | 표시 정보 |
+|--------|-----------|-----------|
+| General | `prpggen.c` | 기본 정보, 이미지 경로, 명령줄 |
+| Statistics | `prpgstat.c` | CPU, 메모리, I/O 통계 |
+| Performance | `prpgperf.c` | 성능 그래프 |
+| Threads | `prpgthrd.c` | 스레드 목록 |
+| Token | `tokprp.c` | 보안 토큰, 권한, 그룹 |
+| Modules | `prpgmod.c` | 로드된 모듈 |
+| Memory | `prpgmem.c` | 메모리 맵 |
+| Handles | `prpghndl.c` | 열린 핸들 |
+| Environment | `prpgenv.c` | 환경 변수 |
+| Job | `prpgjob.c` | 잡 객체 정보 |
+| Services | `prpgsrv.c` | 호스팅된 서비스 |
+| WMI Providers | `prpgwmi.c` | WMI 공급자 |
+| .NET | Plugin | .NET 어셈블리 (플러그인) |
+| GPU | Plugin | GPU 사용량 (플러그인) |
+
+---
+
+## 3. 스레드 관리 기능
+
+### 3.1 스레드 목록
+
+**기능 ID**: THRD-001
+**소스 파일**: `SystemInformer/thrdprv.c`, `SystemInformer/thrdlist.c`
+
+#### 표시 정보
+
+| 컬럼 | 설명 |
+|------|------|
+| TID | 스레드 ID |
+| CPU | CPU 사용률 |
+| Cycles Delta | 사이클 델타 |
+| Start Address | 시작 주소 (심볼 해석) |
+| Priority | 스레드 우선순위 |
+| State | 실행 상태 (Running, Waiting 등) |
+| Start Time | 시작 시간 |
+| Kernel Time | 커널 모드 시간 |
+| User Time | 사용자 모드 시간 |
+
+#### 스레드 작업
+
+```
+┌─────────────────────────────────────────────────────┐
+│ 스레드 컨텍스트 메뉴 │
+├─────────────────────────────────────────────────────┤
+│ • Terminate - 스레드 종료 │
+│ • Force Terminate - 강제 종료 │
+│ • Suspend - 일시 중지 │
+│ • Resume - 재개 │
+│ • Set Priority - 우선순위 변경 │
+│ • Set I/O Priority - I/O 우선순위 │
+│ • Set Affinity - CPU 친화도 │
+│ • Analyze Wait - 대기 분석 │
+│ • View Stack - 스택 보기 │
+│ • View Token - 토큰 보기 │
+└─────────────────────────────────────────────────────┘
+```
+
+### 3.2 스레드 스택 추적
+
+**기능 ID**: THRD-002
+**소스 파일**: `phlib/symprv.c`
+
+#### 기능 설명
+선택한 스레드의 호출 스택을 심볼과 함께 표시합니다.
+
+#### 스택 프레임 정보
+
+```
+Frame #0: ntdll.dll!NtWaitForSingleObject+0x14
+Frame #1: KERNELBASE.dll!WaitForSingleObjectEx+0x8e
+Frame #2: myapp.exe!WorkerThread+0x125
+Frame #3: myapp.exe!main+0x45
+Frame #4: KERNEL32.DLL!BaseThreadInitThunk+0x1d
+Frame #5: ntdll.dll!RtlUserThreadStart+0x28
+```
+
+---
+
+## 4. 핸들 관리 기능
+
+### 4.1 핸들 목록
+
+**기능 ID**: HNDL-001
+**소스 파일**: `SystemInformer/hndlprv.c`, `SystemInformer/hndllist.c`
+
+#### 표시 정보
+
+| 컬럼 | 설명 |
+|------|------|
+| Type | 객체 타입 (File, Key, Event 등) |
+| Name | 객체 이름 |
+| Handle | 핸들 값 |
+| Object Address | 커널 객체 주소 |
+| Access | 접근 권한 |
+| Attributes | 핸들 속성 |
+| Granted Access | 부여된 접근 권한 |
+| Original Name | 원본 이름 (해석 전) |
+
+#### 지원 객체 타입
+
+```
+┌─────────────────────────────────────────────────────────────┐
+│ 지원되는 핸들 타입 │
+├─────────────────────────────────────────────────────────────┤
+│ File 파일 및 디렉토리 │
+│ Key 레지스트리 키 │
+│ Event 이벤트 객체 │
+│ Mutant 뮤텍스 │
+│ Semaphore 세마포어 │
+│ Section 메모리 섹션 │
+│ Process 프로세스 핸들 │
+│ Thread 스레드 핸들 │
+│ Token 토큰 핸들 │
+│ Desktop 데스크톱 │
+│ WindowStation 윈도우 스테이션 │
+│ Timer 타이머 │
+│ Job 잡 객체 │
+│ Directory 객체 디렉토리 │
+│ SymbolicLink 심볼릭 링크 │
+│ ALPC Port ALPC 포트 │
+│ 기타 100+ 타입 │
+└─────────────────────────────────────────────────────────────┘
+```
+
+### 4.2 핸들 검색
+
+**기능 ID**: HNDL-002
+**소스 파일**: `SystemInformer/findobj.c`
+
+#### 기능 설명
+시스템 전체에서 특정 이름 또는 타입의 핸들을 검색합니다.
+
+#### 검색 옵션
+
+- **이름으로 검색**: 와일드카드 지원 (`*.dll`, `\Device\*`)
+- **타입으로 필터링**: 특정 객체 타입만 검색
+- **정규식 검색**: 정규 표현식 패턴 지원
+
+---
+
+## 5. 메모리 관리 기능
+
+### 5.1 메모리 맵 뷰어
+
+**기능 ID**: MEM-001
+**소스 파일**: `SystemInformer/memprv.c`, `SystemInformer/prpgmem.c`
+
+#### 표시 정보
+
+| 컬럼 | 설명 |
+|------|------|
+| Base Address | 시작 주소 |
+| Size | 영역 크기 |
+| Protection | 보호 속성 (RWX) |
+| State | 상태 (Commit, Reserve, Free) |
+| Type | 타입 (Image, Mapped, Private) |
+| Use | 용도 (Stack, Heap, PE 섹션) |
+| Mapped File | 매핑된 파일 경로 |
+
+#### 메모리 보호 속성
+
+```
+┌────────────────────────────────────────────────────┐
+│ 메모리 보호 속성 │
+├────────────────────────────────────────────────────┤
+│ PAGE_NOACCESS --- 접근 불가 │
+│ PAGE_READONLY R-- 읽기 전용 │
+│ PAGE_READWRITE RW- 읽기/쓰기 │
+│ PAGE_EXECUTE --X 실행 전용 │
+│ PAGE_EXECUTE_READ R-X 읽기/실행 │
+│ PAGE_EXECUTE_READWRITE RWX 전체 권한 │
+│ PAGE_GUARD +G 가드 페이지 │
+│ PAGE_NOCACHE +NC 캐시 비활성화 │
+│ PAGE_WRITECOMBINE +WC 쓰기 결합 │
+└────────────────────────────────────────────────────┘
+```
+
+### 5.2 메모리 편집기
+
+**기능 ID**: MEM-002
+**소스 파일**: `SystemInformer/memedit.c`, `phlib/hexedit.c`
+
+#### 기능 설명
+프로세스의 메모리를 16진수 편집기로 읽고 수정합니다.
+
+#### 기능 목록
+
+- **메모리 읽기**: 지정된 주소에서 메모리 읽기
+- **메모리 쓰기**: 메모리 내용 수정
+- **검색**: 패턴, 문자열, 바이트 검색
+- **바이너리 보기**: 16진수 + ASCII 병렬 표시
+
+### 5.3 메모리 검색
+
+**기능 ID**: MEM-003
+**소스 파일**: `SystemInformer/memsrch.c`
+
+#### 검색 옵션
+
+| 검색 타입 | 설명 |
+|-----------|------|
+| String (ASCII) | ASCII 문자열 검색 |
+| String (Unicode) | 유니코드 문자열 검색 |
+| Hex Pattern | 16진수 패턴 검색 |
+| Regex | 정규 표현식 검색 |
+| Struct | 구조체 패턴 검색 |
+
+---
+
+## 6. 네트워크 모니터링 기능
+
+### 6.1 네트워크 연결 목록
+
+**기능 ID**: NET-001
+**소스 파일**: `SystemInformer/netprv.c`, `SystemInformer/netlist.c`
+
+#### 표시 정보
+
+| 컬럼 | 설명 |
+|------|------|
+| Process | 프로세스 이름 |
+| Local Address | 로컬 주소 |
+| Local Port | 로컬 포트 |
+| Remote Address | 원격 주소 |
+| Remote Port | 원격 포트 |
+| Protocol | 프로토콜 (TCP/UDP) |
+| State | 연결 상태 |
+| Owner | 소유 프로세스 |
+| Time Stamp | 연결 시간 |
+
+#### 연결 상태
+
+```
+TCP 상태:
+┌──────────────┬─────────────────────────────────┐
+│ Listening │ 연결 대기 중 │
+│ Established │ 연결 수립됨 │
+│ SynSent │ SYN 패킷 전송됨 │
+│ SynReceived │ SYN 패킷 수신됨 │
+│ FinWait1/2 │ 종료 대기 │
+│ CloseWait │ 닫기 대기 │
+│ Closing │ 닫는 중 │
+│ TimeWait │ 시간 대기 │
+│ Closed │ 닫힘 │
+└──────────────┴─────────────────────────────────┘
+```
+
+### 6.2 네트워크 작업
+
+**기능 ID**: NET-002
+
+#### 지원 작업
+
+| 작업 | 설명 |
+|------|------|
+| Close Connection | TCP 연결 종료 |
+| Copy | 정보 복사 |
+| Go to Process | 소유 프로세스로 이동 |
+| Whois | WHOIS 조회 (플러그인) |
+| GeoIP | 지리적 위치 조회 (플러그인) |
+| Traceroute | 경로 추적 (플러그인) |
+
+---
+
+## 7. 서비스 관리 기능
+
+### 7.1 서비스 목록
+
+**기능 ID**: SVC-001
+**소스 파일**: `SystemInformer/srvprv.c`, `SystemInformer/srvlist.c`
+
+#### 표시 정보
+
+| 컬럼 | 설명 |
+|------|------|
+| Name | 서비스 이름 |
+| Display Name | 표시 이름 |
+| Type | 서비스 타입 |
+| Status | 현재 상태 |
+| Start Type | 시작 유형 |
+| PID | 프로세스 ID |
+| Description | 설명 |
+| Binary Path | 실행 파일 경로 |
+
+### 7.2 서비스 작업
+
+**기능 ID**: SVC-002
+**소스 파일**: `SystemInformer/srvctl.c`
+
+#### 지원 작업
+
+| 작업 | 설명 |
+|------|------|
+| Start | 서비스 시작 |
+| Stop | 서비스 중지 |
+| Pause | 서비스 일시 중지 |
+| Continue | 서비스 계속 |
+| Restart | 서비스 재시작 |
+| Delete | 서비스 삭제 |
+| Create | 새 서비스 생성 |
+| Properties | 서비스 속성 |
+
+### 7.3 서비스 속성
+
+**기능 ID**: SVC-003
+
+#### 속성 페이지
+
+| 페이지 | 설명 |
+|--------|------|
+| General | 기본 정보, 시작 유형 |
+| Log On | 로그온 계정 설정 |
+| Dependencies | 의존성 관계 (플러그인) |
+| Recovery | 복구 옵션 (플러그인) |
+| Triggers | 트리거 설정 (플러그인) |
+
+---
+
+## 8. 모듈 분석 기능
+
+### 8.1 모듈 목록
+
+**기능 ID**: MOD-001
+**소스 파일**: `SystemInformer/modprv.c`, `SystemInformer/modlist.c`
+
+#### 표시 정보
+
+| 컬럼 | 설명 |
+|------|------|
+| Name | 모듈 이름 |
+| Base Address | 기본 주소 |
+| Size | 모듈 크기 |
+| Description | 설명 |
+| Company Name | 제조사 |
+| Version | 파일 버전 |
+| Path | 전체 경로 |
+| Verified Signer | 서명 검증 |
+| ASLR | ASLR 적용 여부 |
+
+### 8.2 모듈 작업
+
+**기능 ID**: MOD-002
+
+#### 지원 작업
+
+| 작업 | 설명 |
+|------|------|
+| Unload | DLL 언로드 |
+| Open File Location | 파일 위치 열기 |
+| Copy | 정보 복사 |
+| Properties | PE 속성 |
+| Search Online | 온라인 검색 |
+| VirusTotal | VT 검사 (플러그인) |
+
+---
+
+## 9. 시스템 정보 기능
+
+### 9.1 시스템 정보 창
+
+**기능 ID**: SYS-001
+**소스 파일**: `SystemInformer/sysinfo.c`
+
+#### 정보 탭
+
+| 탭 | 표시 정보 |
+|----|-----------|
+| CPU | CPU 사용률 그래프, 코어별 사용률 |
+| Memory | 메모리 사용량, 커밋 차지 |
+| I/O | 디스크 I/O 그래프 |
+| GPU | GPU 사용률 (플러그인) |
+| Disk | 디스크 사용률 (플러그인) |
+| Network | 네트워크 사용률 (플러그인) |
+
+### 9.2 시스템 정보 상세
+
+**기능 ID**: SYS-002
+
+#### 표시 정보
+
+```
+┌─────────────────────────────────────────────────────────────┐
+│ 시스템 정보 │
+├─────────────────────────────────────────────────────────────┤
+│ OS 버전: Windows 11 Pro 23H2 (Build 22631) │
+│ 프로세서: AMD Ryzen 9 5900X (12 cores, 24 threads) │
+│ RAM: 32.0 GB │
+│ 시스템 시작: 2026-01-20 09:15:23 │
+│ 부팅 시간: 45초 │
+│ 프로세스 수: 287 │
+│ 스레드 수: 4,521 │
+│ 핸들 수: 152,847 │
+│ 커밋 차지: 8.2 / 48.0 GB │
+│ 커널 풀: Paged: 512 MB / Nonpaged: 256 MB │
+└─────────────────────────────────────────────────────────────┘
+```
+
+---
+
+## 10. 검색 및 필터링 기능
+
+### 10.1 전역 검색
+
+**기능 ID**: SRCH-001
+**소스 파일**: `SystemInformer/searchbox.c`
+
+#### 검색 대상
+
+- 프로세스 이름
+- 서비스 이름
+- 네트워크 연결
+- 핸들 이름
+- 모듈 이름
+
+### 10.2 고급 필터
+
+**기능 ID**: SRCH-002
+
+#### 필터 옵션
+
+```
+필터 연산자:
+┌────────────────────────────────────────────────────┐
+│ contains - 포함 │
+│ equals - 일치 │
+│ startswith - 시작 │
+│ endswith - 끝 │
+│ regex - 정규식 │
+│ > < >= <= - 비교 │
+└────────────────────────────────────────────────────┘
+
+예시:
+• name contains "chrome"
+• cpu > 5
+• private_bytes > 100MB
+• user equals "SYSTEM"
+```
+
+---
+
+## 11. 플러그인 기능
+
+### 11.1 내장 플러그인 목록
+
+| 플러그인 | 기능 ID | 설명 |
+|----------|---------|------|
+| DotNetTools | PLG-001 | .NET 런타임 분석 |
+| ExtendedTools | PLG-002 | ETW, GPU, NPU 모니터링 |
+| HardwareDevices | PLG-003 | 디스크, 네트워크, 배터리 모니터링 |
+| NetworkTools | PLG-004 | Ping, Traceroute, GeoIP |
+| ExtendedServices | PLG-005 | 서비스 의존성, 복구, 트리거 |
+| ExtendedNotifications | PLG-006 | 파일 로깅, 이벤트 알림 |
+| ToolStatus | PLG-007 | 도구 모음 커스터마이징 |
+| OnlineChecks | PLG-008 | VirusTotal, Hybrid Analysis |
+| Updater | PLG-009 | 자동 업데이트 |
+| UserNotes | PLG-010 | 프로세스 주석 |
+| WindowExplorer | PLG-011 | 윈도우 탐색 |
+
+### 11.2 DotNetTools 플러그인
+
+**기능 ID**: PLG-001
+**소스 파일**: `plugins/DotNetTools/`
+
+#### 기능
+
+- .NET 어셈블리 목록 표시
+- CLR 버전 정보
+- AppDomain 정보
+- 스택 추적 (관리 코드)
+- 성능 카운터 모니터링
+
+### 11.3 ExtendedTools 플러그인
+
+**기능 ID**: PLG-002
+**소스 파일**: `plugins/ExtendedTools/`
+
+#### 기능
+
+| 기능 | 설명 |
+|------|------|
+| ETW 모니터링 | 디스크, 네트워크 I/O 추적 |
+| GPU 모니터링 | GPU 사용률, 메모리 |
+| NPU 모니터링 | NPU 사용률 |
+| 프레임 모니터링 | FPS 추적 |
+| 펌웨어 편집기 | UEFI/EFI 변수 |
+| TPM 편집기 | TPM 정보 |
+
+### 11.4 HardwareDevices 플러그인
+
+**기능 ID**: PLG-003
+**소스 파일**: `plugins/HardwareDevices/`
+
+#### 기능
+
+- 디스크 사용률 및 온도
+- 네트워크 어댑터 통계
+- GPU 정보 및 온도
+- 배터리 상태
+- 디바이스 트리
+
+---
+
+## 12. 알림 및 로깅 기능
+
+### 12.1 시스템 트레이 알림
+
+**기능 ID**: NOTIF-001
+**소스 파일**: `SystemInformer/notifico.c`
+
+#### 알림 이벤트
+
+- 새 프로세스 생성
+- 프로세스 종료
+- 서비스 상태 변경
+- 높은 CPU 사용량 경고
+
+### 12.2 이벤트 로깅
+
+**기능 ID**: NOTIF-002
+**소스 파일**: `SystemInformer/logwnd.c`
+
+#### 로그 정보
+
+```
+[2026-01-25 10:15:23] Process created: chrome.exe (PID: 1234)
+[2026-01-25 10:15:45] Service started: Windows Update
+[2026-01-25 10:16:02] High CPU: System Idle Process (98.5%)
+[2026-01-25 10:16:30] Process terminated: notepad.exe (PID: 5678)
+```
+
+---
+
+## 13. 설정 기능
+
+### 13.1 일반 설정
+
+**기능 ID**: OPT-001
+**소스 파일**: `SystemInformer/options.c`
+
+#### 설정 카테고리
+
+| 카테고리 | 설정 항목 |
+|----------|-----------|
+| General | 시작 시 실행, 최소화 시작, 업데이트 확인 |
+| Highlighting | 프로세스 하이라이팅 색상 |
+| Graphs | 그래프 설정, 업데이트 간격 |
+| Advanced | 드라이버 로드, 심볼 서버 |
+| Plugins | 플러그인 활성화/비활성화 |
+
+### 13.2 하이라이팅 설정
+
+**기능 ID**: OPT-002
+
+#### 하이라이팅 규칙
+
+| 색상 | 의미 |
+|------|------|
+| 녹색 | 새로 생성된 프로세스 |
+| 빨강 | 종료된 프로세스 |
+| 분홍 | 서비스 프로세스 |
+| 파랑 | 시스템 프로세스 |
+| 보라 | 높은 권한 프로세스 |
+| 노랑 | 패킹/보호된 프로세스 |
+| 주황 | 일시 중지된 프로세스 |
+
+---
+
+## 14. 보안 기능
+
+### 14.1 서명 검증
+
+**기능 ID**: SEC-001
+**소스 파일**: `phlib/verify.c`
+
+#### 검증 상태
+
+| 상태 | 설명 |
+|------|------|
+| Valid | 유효한 서명 |
+| Invalid | 서명 손상 |
+| Unsigned | 서명 없음 |
+| Expired | 서명 만료 |
+| Revoked | 인증서 폐기 |
+| Untrusted | 신뢰할 수 없는 루트 |
+
+### 14.2 프로세스 보호
+
+**기능 ID**: SEC-002
+**소스 파일**: `KSystemInformer/protection.c`
+
+#### 보호 기능
+
+- PPL (Protected Process Light) 우회
+- 프로세스 숨기기 감지
+- 커널 모드 작업 수행
+
+---
+
+## 15. 기능 요구사항 매트릭스
+
+### 15.1 권한 요구사항
+
+| 기능 | 일반 사용자 | 관리자 | 드라이버 필요 |
+|------|-------------|--------|---------------|
+| 프로세스 목록 | O | O | - |
+| 프로세스 종료 | 일부 | 대부분 | 모든 프로세스 |
+| 메모리 읽기 | 일부 | 대부분 | 보호된 프로세스 |
+| 핸들 목록 | X | O | - |
+| 서비스 관리 | X | O | - |
+| 드라이버 로드 | X | X | 별도 서명 필요 |
+
+### 15.2 Windows 버전별 지원
+
+| 기능 | Win 7 | Win 8/8.1 | Win 10 | Win 11 |
+|------|-------|-----------|--------|--------|
+| 기본 기능 | O | O | O | O |
+| ETW 모니터링 | O | O | O | O |
+| GPU 모니터링 | 제한적 | O | O | O |
+| NPU 모니터링 | X | X | 일부 | O |
+| 프로세스 보호 | X | 일부 | O | O |
+| ARM64 지원 | X | X | O | O |
diff --git "a/docs/technical/03_\352\270\260\354\210\240\354\212\244\355\203\235.md" "b/docs/technical/03_\352\270\260\354\210\240\354\212\244\355\203\235.md"
new file mode 100644
index 000000000000..9959b0bb05fc
--- /dev/null
+++ "b/docs/technical/03_\352\270\260\354\210\240\354\212\244\355\203\235.md"
@@ -0,0 +1,737 @@
+# System Informer 기술스택
+
+## 문서 정보
+- **프로젝트명**: System Informer
+- **문서 버전**: 1.0
+- **작성일**: 2026-01-25
+
+---
+
+## 1. 기술스택 개요
+
+```
+┌─────────────────────────────────────────────────────────────────────┐
+│ System Informer 기술스택 │
+├─────────────────────────────────────────────────────────────────────┤
+│ │
+│ ┌─────────────────────────────────────────────────────────────┐ │
+│ │ 프로그래밍 언어 │ │
+│ │ C (95%) │ C++ (4%) │ PowerShell (1%) │ │
+│ └─────────────────────────────────────────────────────────────┘ │
+│ │
+│ ┌─────────────────────────────────────────────────────────────┐ │
+│ │ Windows API │ │
+│ │ Win32 API │ Native NT API │ WDM │ ETW │ WMI │ COM/DirectX │ │
+│ └─────────────────────────────────────────────────────────────┘ │
+│ │
+│ ┌─────────────────────────────────────────────────────────────┐ │
+│ │ 빌드 시스템 │ │
+│ │ Visual Studio 2022 │ MSBuild │ CMake │ WDK │ │
+│ └─────────────────────────────────────────────────────────────┘ │
+│ │
+│ ┌─────────────────────────────────────────────────────────────┐ │
+│ │ 써드파티 라이브러리 │ │
+│ │ JSON-C │ PCRE │ Zydis │ MaxMindDB │ MinIZ │ Detours │ │
+│ └─────────────────────────────────────────────────────────────┘ │
+│ │
+└─────────────────────────────────────────────────────────────────────┘
+```
+
+---
+
+## 2. 프로그래밍 언어
+
+### 2.1 C 언어 (주요 언어)
+
+**버전**: C11 / C17 (최신 표준)
+**컴파일러**: MSVC (Microsoft Visual C++)
+
+#### 사용 이유
+
+1. **저수준 시스템 접근**: Windows 커널 및 Native API와 직접 상호작용
+2. **성능 최적화**: 메모리 및 CPU 효율적 사용
+3. **드라이버 개발**: WDM 드라이버는 C로 작성
+4. **호환성**: Windows API와 자연스러운 통합
+
+#### 코드 통계
+
+| 구분 | 파일 수 | 코드 라인 |
+|------|---------|-----------|
+| 애플리케이션 (SystemInformer) | 89개 | ~400,000 |
+| 라이브러리 (phlib) | 75개 | ~300,000 |
+| 드라이버 (KSystemInformer) | 42개 | ~150,000 |
+| 플러그인 | 189개 | ~90,000 |
+| **총계** | 504개 | ~940,000 |
+
+#### 코딩 컨벤션
+
+```c
+// 함수 명명 규칙 (헝가리안 표기법 변형)
+NTSTATUS PhOpenProcess(
+ _Out_ PHANDLE ProcessHandle, // 출력 파라미터
+ _In_ ACCESS_MASK DesiredAccess, // 입력 파라미터
+ _In_ HANDLE ProcessId // 입력 파라미터
+ );
+
+// SAL 주석 사용
+_Success_(return != NULL)
+_Must_inspect_result_
+PPH_STRING PhCreateString(
+ _In_ PWSTR Buffer
+ );
+
+// 참조 카운팅 패턴
+PhReferenceObject(Object);
+PhDereferenceObject(Object);
+```
+
+### 2.2 C++ 언어 (보조 언어)
+
+**버전**: C++17 / C++20
+**사용 영역**: GUI 컴포넌트, COM 인터페이스
+
+#### 사용 파일
+
+| 파일 | 위치 | 용도 |
+|------|------|------|
+| notiftoast.cpp | SystemInformer/ | Windows Toast 알림 |
+| guisuplistview.cpp | phlib/ | ListView 확장 |
+| devicetree.cpp | plugins/HardwareDevices/ | 디바이스 트리 |
+
+### 2.3 PowerShell (스크립트)
+
+**용도**: 빌드 자동화, 코드 생성
+
+#### 주요 스크립트
+
+```
+build/
+├── build_zwntapi.ps1 # Native API 헤더 생성
+├── build_init.ps1 # 빌드 초기화
+└── build_release.ps1 # 릴리스 빌드
+```
+
+---
+
+## 3. Windows API 스택
+
+### 3.1 Win32 API
+
+**설명**: 표준 Windows 애플리케이션 개발 API
+
+#### 사용 영역
+
+| 카테고리 | API 함수 | 용도 |
+|----------|----------|------|
+| 윈도우 관리 | CreateWindowEx, SetWindowPos | GUI 생성/관리 |
+| 컨트롤 | ListView, TreeView, ComboBox | UI 컨트롤 |
+| 대화상자 | DialogBoxParam, MessageBox | 대화상자 |
+| 메뉴 | CreateMenu, AppendMenu | 메뉴 관리 |
+| GDI | GetDC, BitBlt, CreateFont | 그래픽 렌더링 |
+| 파일 | CreateFile, ReadFile | 파일 I/O |
+| 프로세스 | CreateProcess, OpenProcess | 프로세스 관리 |
+| 스레드 | CreateThread, WaitForSingleObject | 스레드 관리 |
+| 레지스트리 | RegOpenKeyEx, RegQueryValueEx | 레지스트리 접근 |
+| 서비스 | OpenSCManager, StartService | 서비스 관리 |
+
+### 3.2 Native NT API (NTAPI)
+
+**설명**: Windows 커널과 직접 통신하는 비공개 API
+**헤더 위치**: `phnt/` 디렉토리
+
+#### 핵심 함수
+
+```c
+// 프로세스 관련
+NTSTATUS NtQuerySystemInformation(
+ SYSTEM_INFORMATION_CLASS SystemInformationClass,
+ PVOID SystemInformation,
+ ULONG SystemInformationLength,
+ PULONG ReturnLength
+);
+
+NTSTATUS NtQueryInformationProcess(
+ HANDLE ProcessHandle,
+ PROCESSINFOCLASS ProcessInformationClass,
+ PVOID ProcessInformation,
+ ULONG ProcessInformationLength,
+ PULONG ReturnLength
+);
+
+// 메모리 관련
+NTSTATUS NtReadVirtualMemory(
+ HANDLE ProcessHandle,
+ PVOID BaseAddress,
+ PVOID Buffer,
+ SIZE_T BufferSize,
+ PSIZE_T NumberOfBytesRead
+);
+
+NTSTATUS NtWriteVirtualMemory(
+ HANDLE ProcessHandle,
+ PVOID BaseAddress,
+ PVOID Buffer,
+ SIZE_T BufferSize,
+ PSIZE_T NumberOfBytesWritten
+);
+
+// 핸들 관련
+NTSTATUS NtQueryObject(
+ HANDLE Handle,
+ OBJECT_INFORMATION_CLASS ObjectInformationClass,
+ PVOID ObjectInformation,
+ ULONG ObjectInformationLength,
+ PULONG ReturnLength
+);
+```
+
+#### phnt 헤더 구조
+
+```
+phnt/
+├── ntbcd.h # 부팅 구성 데이터
+├── ntd3dkmt.h # Direct3D 커널 모드
+├── ntdbg.h # 디버깅
+├── ntexapi.h # 확장 API
+├── ntgdi.h # GDI
+├── ntheap.h # 힙 관리
+├── ntioapi.h # I/O 관리
+├── ntkeapi.h # 커널 확장
+├── ntldr.h # 로더
+├── ntlpcapi.h # LPC (로컬 프로시저 호출)
+├── ntmisc.h # 기타
+├── ntmmapi.h # 메모리 관리
+├── ntnls.h # NLS (국가 언어 지원)
+├── ntobapi.h # 객체 관리
+├── ntpebteb.h # PEB/TEB 구조체
+├── ntpfapi.h # 페이지 파일
+├── ntpnpapi.h # 플러그 앤 플레이
+├── ntpoapi.h # 전원 관리
+├── ntpsapi.h # 프로세스/스레드
+├── ntregapi.h # 레지스트리
+├── ntrtl.h # 런타임 라이브러리
+├── ntsam.h # SAM (보안 계정 관리)
+├── ntseapi.h # 보안
+├── ntsmss.h # 세션 관리
+├── nttmapi.h # 트랜잭션 관리
+├── nttp.h # 스레드 풀
+├── ntwmi.h # WMI
+├── ntwow64.h # WOW64
+├── ntxcapi.h # 예외 처리
+├── ntzwapi.h # Zw 시스템 콜
+├── phnt.h # 메인 헤더
+├── phnt_ntdef.h # 기본 정의
+└── phnt_windows.h # Windows 호환 정의
+```
+
+### 3.3 WDM (Windows Driver Model)
+
+**설명**: 커널 모드 드라이버 개발 프레임워크
+**사용 위치**: `KSystemInformer/`
+
+#### 드라이버 구조
+
+```c
+// 드라이버 진입점
+NTSTATUS DriverEntry(
+ _In_ PDRIVER_OBJECT DriverObject,
+ _In_ PUNICODE_STRING RegistryPath
+)
+{
+ // 드라이버 초기화
+ DriverObject->MajorFunction[IRP_MJ_CREATE] = KphDispatchCreate;
+ DriverObject->MajorFunction[IRP_MJ_CLOSE] = KphDispatchClose;
+ DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = KphDispatchDeviceControl;
+ DriverObject->DriverUnload = KphDriverUnload;
+
+ return STATUS_SUCCESS;
+}
+```
+
+#### 사용 커널 API
+
+| API | 용도 |
+|-----|------|
+| PsSetCreateProcessNotifyRoutine | 프로세스 생성/종료 알림 |
+| PsSetCreateThreadNotifyRoutine | 스레드 생성/종료 알림 |
+| PsSetLoadImageNotifyRoutine | 이미지 로드 알림 |
+| CmRegisterCallback | 레지스트리 콜백 |
+| ObRegisterCallbacks | 객체 콜백 |
+| FltRegisterFilter | 미니필터 드라이버 |
+| ZwQuerySystemInformation | 시스템 정보 쿼리 |
+| ZwOpenProcess | 프로세스 열기 |
+| ZwQueryInformationProcess | 프로세스 정보 쿼리 |
+
+### 3.4 ETW (Event Tracing for Windows)
+
+**설명**: 고성능 이벤트 추적 시스템
+**사용 위치**: `plugins/ExtendedTools/`
+
+#### 추적 대상
+
+| 이벤트 타입 | 설명 |
+|-------------|------|
+| 디스크 I/O | 읽기/쓰기 작업 추적 |
+| 네트워크 I/O | 송수신 추적 |
+| 파일 시스템 | 파일 작업 추적 |
+| 프로세스 | 프로세스 이벤트 |
+| 스레드 | 스레드 이벤트 |
+| 이미지 로드 | DLL/EXE 로드 |
+
+#### ETW 사용 코드 패턴
+
+```c
+// ETW 세션 시작
+StartTrace(&SessionHandle, SessionName, &TraceProperties);
+
+// 공급자 활성화
+EnableTraceEx2(
+ SessionHandle,
+ &ProviderGuid,
+ EVENT_CONTROL_CODE_ENABLE_PROVIDER,
+ TRACE_LEVEL_INFORMATION,
+ 0, 0, 0, NULL
+);
+
+// 이벤트 처리
+ProcessTrace(&SessionHandle, 1, NULL, NULL);
+```
+
+### 3.5 WMI (Windows Management Instrumentation)
+
+**설명**: 시스템 관리 인터페이스
+**사용 위치**: `SystemInformer/prpgwmi.c`
+
+#### 쿼리 대상
+
+```
+Win32_Process 프로세스 정보
+Win32_Service 서비스 정보
+Win32_ComputerSystem 컴퓨터 시스템
+Win32_OperatingSystem OS 정보
+Win32_PhysicalMemory 물리 메모리
+Win32_Processor 프로세서 정보
+```
+
+### 3.6 COM/DirectX
+
+**설명**: GPU 정보 및 그래픽 관련 API
+**사용 위치**: `plugins/ExtendedTools/`, `plugins/HardwareDevices/`
+
+#### 사용 API
+
+| API | 용도 |
+|-----|------|
+| D3DKMTQueryStatistics | GPU 통계 쿼리 |
+| D3DKMTOpenAdapterFromLuid | 어댑터 열기 |
+| IDXGIFactory | DXGI 팩토리 |
+| IDXGIAdapter | 어댑터 정보 |
+
+---
+
+## 4. 빌드 시스템
+
+### 4.1 Visual Studio
+
+**버전**: Visual Studio 2022 (v17.x)
+**필수 구성 요소**:
+
+```
+워크로드:
+├── C++를 사용한 데스크톱 개발
+├── Windows 10/11 SDK
+└── C++ ATL for v143 build tools
+
+개별 구성 요소:
+├── MSVC v143 - VS 2022 C++ x64/x86 build tools
+├── MSVC v143 - VS 2022 C++ ARM64 build tools
+├── Windows 10 SDK (10.0.22621.0)
+├── C++ ATL for latest v143 build tools
+└── C++ MFC for latest v143 build tools
+```
+
+### 4.2 MSBuild
+
+**설명**: Microsoft 빌드 엔진
+**프로젝트 파일**: `.vcxproj`
+
+#### 솔루션 구조
+
+```
+SystemInformer.sln
+├── SystemInformer.vcxproj # 메인 애플리케이션
+├── phlib.vcxproj # 핵심 라이브러리
+├── peview.vcxproj # PE 뷰어
+└── kphlib.vcxproj # KPH 라이브러리
+
+KSystemInformer.sln
+├── KSystemInformer.vcxproj # 커널 드라이버
+└── ksidll.vcxproj # 드라이버 DLL
+
+Plugins.sln
+├── DotNetTools.vcxproj
+├── ExtendedTools.vcxproj
+├── HardwareDevices.vcxproj
+├── NetworkTools.vcxproj
+├── ExtendedServices.vcxproj
+├── ExtendedNotifications.vcxproj
+├── ToolStatus.vcxproj
+├── OnlineChecks.vcxproj
+├── Updater.vcxproj
+├── UserNotes.vcxproj
+└── WindowExplorer.vcxproj
+```
+
+### 4.3 CMake
+
+**버전**: 3.30.0 이상
+**설정 파일**: `CMakeLists.txt`
+
+#### CMake 옵션
+
+```cmake
+# 빌드 옵션
+option(SI_WITH_CORE "Build core components" ON)
+option(SI_WITH_PLUGINS "Build plugins" ON)
+option(SI_WITH_KERNEL "Build kernel driver" OFF)
+
+# 최소 요구사항
+cmake_minimum_required(VERSION 3.30.0)
+
+# 프로젝트 설정
+project(SystemInformer
+ VERSION 3.0.0
+ LANGUAGES C CXX
+)
+
+# 타겟 아키텍처
+set(CMAKE_SYSTEM_PROCESSOR "x64" CACHE STRING "Target architecture")
+```
+
+### 4.4 WDK (Windows Driver Kit)
+
+**버전**: Windows 11 WDK (10.0.22621)
+**용도**: 커널 드라이버 빌드
+
+#### 드라이버 빌드 설정
+
+```xml
+
+
+ Driver
+ WDM
+ Windows10
+
+```
+
+---
+
+## 5. 써드파티 라이브러리
+
+### 5.1 라이브러리 개요
+
+```
+tools/thirdparty/
+├── detours/ # Microsoft Detours (함수 후킹)
+├── jsonc/ # JSON-C (JSON 파싱)
+├── maxminddb/ # MaxMind GeoIP 데이터베이스
+├── md5/ # MD5 해싱
+├── miniz/ # MinIZ (ZIP 압축)
+├── mxml/ # Mini-XML (XML 파싱)
+├── pcre/ # PCRE (정규 표현식)
+├── sha/ # SHA-1 해싱
+├── sha256/ # SHA-256 해싱
+├── ssdeep/ # ssdeep (퍼지 해싱)
+├── tlsh/ # TLSH (유사도 해싱)
+├── xxhash/ # xxHash (고속 해싱)
+├── zydis/ # Zydis (x86/x64 디스어셈블러)
+└── winsdk/ # Windows SDK 래퍼
+```
+
+### 5.2 JSON-C
+
+**용도**: JSON 파싱 및 생성
+**사용 위치**: `phlib/json.c`
+
+```c
+// JSON 파싱 예제
+json_object *root = json_tokener_parse(jsonString);
+json_object *value;
+if (json_object_object_get_ex(root, "key", &value)) {
+ const char *str = json_object_get_string(value);
+}
+json_object_put(root);
+```
+
+### 5.3 PCRE (Perl Compatible Regular Expressions)
+
+**용도**: 정규 표현식 검색
+**사용 위치**: `phlib/regex.c`
+
+```c
+// 정규식 컴파일
+pcre2_code *regex = pcre2_compile(
+ pattern, PCRE2_ZERO_TERMINATED,
+ 0, &errorcode, &erroroffset, NULL
+);
+
+// 매칭 수행
+pcre2_match_data *match_data = pcre2_match_data_create_from_pattern(regex, NULL);
+int rc = pcre2_match(regex, subject, length, 0, 0, match_data, NULL);
+```
+
+### 5.4 Zydis
+
+**용도**: x86/x64 명령어 디스어셈블
+**사용 위치**: 디버거 기능
+
+```c
+// 디스어셈블 예제
+ZydisDecoder decoder;
+ZydisDecoderInit(&decoder, ZYDIS_MACHINE_MODE_LONG_64, ZYDIS_STACK_WIDTH_64);
+
+ZydisDecodedInstruction instruction;
+ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT];
+
+if (ZYAN_SUCCESS(ZydisDecoderDecodeFull(
+ &decoder, data, length,
+ &instruction, operands))) {
+ // 명령어 분석
+}
+```
+
+### 5.5 Microsoft Detours
+
+**용도**: 함수 후킹
+**사용 위치**: `SystemInformer/delayhook.c`
+
+```c
+// 함수 후킹 예제
+DetourTransactionBegin();
+DetourUpdateThread(GetCurrentThread());
+DetourAttach(&(PVOID&)TrueFunction, HookedFunction);
+DetourTransactionCommit();
+```
+
+### 5.6 MaxMindDB
+
+**용도**: GeoIP 위치 조회
+**사용 위치**: `plugins/NetworkTools/`
+
+```c
+// GeoIP 조회
+MMDB_lookup_result_s result = MMDB_lookup_string(&mmdb, ip_address, &gai_error, &mmdb_error);
+if (result.found_entry) {
+ MMDB_entry_data_s entry_data;
+ MMDB_get_value(&result.entry, &entry_data, "country", "names", "en", NULL);
+}
+```
+
+### 5.7 MinIZ
+
+**용도**: ZIP 압축/해제
+**사용 위치**: 업데이트 기능
+
+```c
+// ZIP 해제
+mz_zip_archive zip;
+mz_zip_reader_init_mem(&zip, data, size, 0);
+mz_zip_reader_extract_to_file(&zip, index, dest_path, 0);
+mz_zip_reader_end(&zip);
+```
+
+### 5.8 xxHash
+
+**용도**: 고속 비암호화 해싱
+**사용 위치**: 캐시 및 비교
+
+```c
+// 해시 계산
+XXH64_hash_t hash = XXH64(data, length, seed);
+```
+
+### 5.9 ssdeep / TLSH
+
+**용도**: 퍼지 해싱 (유사도 분석)
+**사용 위치**: 악성코드 분석
+
+```c
+// ssdeep 해시
+char hash[FUZZY_MAX_RESULT];
+fuzzy_hash_buf(data, length, hash);
+
+// TLSH 해시
+Tlsh tlsh;
+tlsh.update(data, length);
+tlsh.final();
+const char *hash = tlsh.getHash();
+```
+
+---
+
+## 6. 개발 도구
+
+### 6.1 디버깅 도구
+
+| 도구 | 용도 |
+|------|------|
+| Visual Studio Debugger | 사용자 모드 디버깅 |
+| WinDbg | 커널 모드 디버깅 |
+| x64dbg | 리버스 엔지니어링 |
+| Process Monitor | 시스템 활동 모니터링 |
+
+### 6.2 정적 분석 도구
+
+| 도구 | 용도 |
+|------|------|
+| Visual Studio Code Analysis | 정적 코드 분석 |
+| PVS-Studio | 고급 정적 분석 |
+| Cppcheck | C/C++ 정적 분석 |
+
+### 6.3 빌드 도구
+
+| 도구 | 용도 |
+|------|------|
+| CustomBuildTool | 커스텀 빌드 작업 |
+| CustomSignTool | 코드 서명 |
+| GenerateZw | Zw 함수 생성 |
+
+---
+
+## 7. 아키텍처 지원
+
+### 7.1 지원 아키텍처
+
+| 아키텍처 | 지원 | 비고 |
+|----------|------|------|
+| x86 (32-bit) | O | Windows 7+ |
+| x64 (64-bit) | O | 주 대상 |
+| ARM64 | O | Windows 10+ |
+
+### 7.2 아키텍처별 빌드 설정
+
+```xml
+
+
+ Win32;x64;ARM64
+
+
+
+ v143
+
+
+
+ v143
+
+
+
+ v143
+
+```
+
+---
+
+## 8. 보안 기술
+
+### 8.1 코드 서명
+
+**요구사항**: EV 코드 서명 인증서 (드라이버)
+
+```
+인증서 체인:
+└── Root CA
+ └── Intermediate CA
+ └── EV Code Signing Certificate
+ └── 드라이버 서명
+```
+
+### 8.2 보안 개발 주기 (SDL)
+
+```xml
+
+
+ true
+ true
+ Level3
+
+```
+
+### 8.3 보안 기능
+
+| 기능 | 설명 |
+|------|------|
+| ASLR | 주소 공간 무작위화 |
+| DEP | 데이터 실행 방지 |
+| CFG | 컨트롤 플로우 가드 |
+| SEHOP | SEH 덮어쓰기 방지 |
+| GS | 스택 버퍼 오버런 탐지 |
+
+---
+
+## 9. 버전 호환성
+
+### 9.1 Windows 버전 지원
+
+| Windows 버전 | 빌드 | 지원 수준 |
+|--------------|------|-----------|
+| Windows XP | 2600 | 제한적 |
+| Windows Vista | 6000 | 기본 |
+| Windows 7 | 7600 | 완전 |
+| Windows 8 | 9200 | 완전 |
+| Windows 8.1 | 9600 | 완전 |
+| Windows 10 1507 | 10240 | 완전 |
+| Windows 10 1903 | 18362 | 완전 |
+| Windows 10 21H2 | 19044 | 완전 |
+| Windows 11 21H2 | 22000 | 완전 |
+| Windows 11 22H2 | 22621 | 완전 |
+| Windows 11 23H2 | 22631 | 완전 |
+
+### 9.2 동적 데이터 시스템
+
+**파일**: `kphlib/kphdyn.xml`
+
+```xml
+
+
+
+
+ 0x440
+ 0x448
+ 0x4b8
+ 0x5a8
+
+
+
+
+```
+
+---
+
+## 10. 기술스택 요약 표
+
+| 카테고리 | 기술 | 버전/상세 |
+|----------|------|-----------|
+| **언어** | C | C11/C17 |
+| | C++ | C++17/C++20 |
+| | PowerShell | 5.1+ |
+| **빌드** | Visual Studio | 2022 (v17.x) |
+| | MSBuild | 17.x |
+| | CMake | 3.30.0+ |
+| | WDK | 10.0.22621 |
+| **Windows API** | Win32 | Windows 7+ |
+| | Native NT API | 비공개 API |
+| | WDM | 커널 드라이버 |
+| | ETW | 이벤트 추적 |
+| | WMI | 시스템 관리 |
+| | COM/DirectX | GPU 정보 |
+| **라이브러리** | JSON-C | JSON 처리 |
+| | PCRE | 정규식 |
+| | Zydis | 디스어셈블러 |
+| | Detours | 함수 후킹 |
+| | MaxMindDB | GeoIP |
+| | MinIZ | ZIP 압축 |
+| | xxHash | 고속 해싱 |
+| | ssdeep/TLSH | 퍼지 해싱 |
+| **아키텍처** | x86 | 32-bit |
+| | x64 | 64-bit (주) |
+| | ARM64 | Windows 10+ |
diff --git "a/docs/technical/04_\353\271\214\353\223\234\355\231\230\352\262\275_\354\204\244\354\240\225.md" "b/docs/technical/04_\353\271\214\353\223\234\355\231\230\352\262\275_\354\204\244\354\240\225.md"
new file mode 100644
index 000000000000..2a22884da3bf
--- /dev/null
+++ "b/docs/technical/04_\353\271\214\353\223\234\355\231\230\352\262\275_\354\204\244\354\240\225.md"
@@ -0,0 +1,866 @@
+# System Informer 빌드환경 설정 가이드
+
+## 문서 정보
+- **프로젝트명**: System Informer
+- **문서 버전**: 1.0
+- **작성일**: 2026-01-25
+
+---
+
+## 1. 빌드환경 개요
+
+### 1.1 빌드 시스템 구성도
+
+```
+┌─────────────────────────────────────────────────────────────────────┐
+│ 빌드 환경 구성 │
+├─────────────────────────────────────────────────────────────────────┤
+│ │
+│ ┌─────────────────────────────────────────────────────────────┐ │
+│ │ 개발 환경 (필수) │ │
+│ │ Visual Studio 2022 │ Windows 10/11 SDK │ Git │ │
+│ └─────────────────────────────────────────────────────────────┘ │
+│ │
+│ ┌─────────────────────────────────────────────────────────────┐ │
+│ │ 드라이버 빌드 (선택) │ │
+│ │ Windows Driver Kit (WDK) │ EV 코드 서명 인증서 │ │
+│ └─────────────────────────────────────────────────────────────┘ │
+│ │
+│ ┌─────────────────────────────────────────────────────────────┐ │
+│ │ 대안 빌드 시스템 │ │
+│ │ CMake (3.30.0+) │ Ninja │ │
+│ └─────────────────────────────────────────────────────────────┘ │
+│ │
+└─────────────────────────────────────────────────────────────────────┘
+```
+
+### 1.2 지원 빌드 구성
+
+| 구성 | Platform | Configuration | 대상 |
+|------|----------|---------------|------|
+| Debug x86 | Win32 | Debug | 32비트 디버그 |
+| Debug x64 | x64 | Debug | 64비트 디버그 |
+| Debug ARM64 | ARM64 | Debug | ARM64 디버그 |
+| Release x86 | Win32 | Release | 32비트 릴리스 |
+| Release x64 | x64 | Release | 64비트 릴리스 |
+| Release ARM64 | ARM64 | Release | ARM64 릴리스 |
+
+---
+
+## 2. 사전 요구사항
+
+### 2.1 운영체제
+
+- Windows 10 버전 1909 이상
+- Windows 11 (권장)
+
+### 2.2 Visual Studio 2022 설치
+
+#### 필수 워크로드
+
+```
+설치해야 할 워크로드:
+
+☑ C++를 사용한 데스크톱 개발
+ ├── MSVC v143 - VS 2022 C++ x64/x86 빌드 도구
+ ├── MSVC v143 - VS 2022 C++ ARM64 빌드 도구
+ ├── Windows 10 SDK (10.0.22621.0)
+ ├── C++ ATL for v143 빌드 도구 (x86 및 x64)
+ ├── C++ ATL for v143 빌드 도구 (ARM64)
+ └── C++ MFC for v143 빌드 도구 (x86 및 x64)
+```
+
+#### Visual Studio Installer 명령줄 설치
+
+```powershell
+# Visual Studio 2022 Community Edition 설치
+winget install Microsoft.VisualStudio.2022.Community --silent --override "--add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.VC.Tools.ARM64 --add Microsoft.VisualStudio.Component.Windows10SDK.22621 --add Microsoft.VisualStudio.Component.VC.ATL --add Microsoft.VisualStudio.Component.VC.ATL.ARM64 --add Microsoft.VisualStudio.Component.VC.ATLMFC"
+```
+
+### 2.3 Windows SDK
+
+**버전**: 10.0.22621.0 이상
+
+```powershell
+# Windows SDK 설치 확인
+Get-ItemProperty "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v10.0" -Name ProductVersion
+```
+
+### 2.4 Git
+
+```powershell
+# Git 설치
+winget install Git.Git
+
+# 설치 확인
+git --version
+```
+
+### 2.5 Windows Driver Kit (드라이버 빌드 시)
+
+```powershell
+# WDK 다운로드 및 설치
+# https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
+
+# 또는 winget 사용
+winget install Microsoft.WindowsDriverKit
+```
+
+---
+
+## 3. 소스 코드 준비
+
+### 3.1 저장소 클론
+
+```bash
+# HTTPS 사용
+git clone https://github.com/winsiderss/si.git systeminformer
+
+# SSH 사용
+git clone git@github.com:winsiderss/si.git systeminformer
+
+# 디렉토리 이동
+cd systeminformer
+```
+
+### 3.2 서브모듈 초기화
+
+```bash
+# 서브모듈 초기화 및 업데이트
+git submodule update --init --recursive
+```
+
+### 3.3 디렉토리 구조 확인
+
+```
+systeminformer/
+├── SystemInformer.sln # 메인 솔루션
+├── KSystemInformer.sln # 드라이버 솔루션
+├── Plugins.sln # 플러그인 솔루션
+├── CMakeLists.txt # CMake 설정
+├── build/ # 빌드 스크립트
+│ ├── build_init.cmd
+│ ├── build_debug.cmd
+│ ├── build_release.cmd
+│ └── ...
+├── SystemInformer/ # 메인 애플리케이션
+├── phlib/ # 핵심 라이브러리
+├── phnt/ # NT 헤더
+├── kphlib/ # KPH 라이브러리
+├── KSystemInformer/ # 커널 드라이버
+├── plugins/ # 플러그인
+└── tools/ # 빌드 도구
+```
+
+---
+
+## 4. Visual Studio 빌드
+
+### 4.1 솔루션 열기
+
+```
+1. Visual Studio 2022 실행
+2. 파일 → 열기 → 프로젝트/솔루션
+3. SystemInformer.sln 선택
+```
+
+### 4.2 빌드 구성 선택
+
+```
+솔루션 구성: Release 또는 Debug
+솔루션 플랫폼: x64 (권장) 또는 Win32, ARM64
+```
+
+### 4.3 빌드 실행
+
+```
+방법 1: 메뉴
+빌드 → 솔루션 빌드 (Ctrl+Shift+B)
+
+방법 2: 배치 빌드
+빌드 → 솔루션 일괄 빌드
+└── 원하는 구성 선택 후 빌드
+```
+
+### 4.4 빌드 출력 경로
+
+```
+빌드 출력 디렉토리:
+
+bin/
+├── Debug32/ # 32비트 디버그
+│ ├── SystemInformer.exe
+│ ├── phlib.dll
+│ └── plugins/
+├── Debug64/ # 64비트 디버그
+│ ├── SystemInformer.exe
+│ ├── phlib.dll
+│ └── plugins/
+├── Release32/ # 32비트 릴리스
+│ └── ...
+├── Release64/ # 64비트 릴리스
+│ └── ...
+└── ARM64/ # ARM64
+ └── ...
+```
+
+---
+
+## 5. 명령줄 빌드
+
+### 5.1 MSBuild 사용
+
+#### Developer Command Prompt 열기
+
+```
+시작 메뉴 → Visual Studio 2022 → Developer Command Prompt for VS 2022
+```
+
+#### 기본 빌드
+
+```cmd
+:: 64비트 릴리스 빌드
+msbuild SystemInformer.sln /p:Configuration=Release /p:Platform=x64
+
+:: 32비트 디버그 빌드
+msbuild SystemInformer.sln /p:Configuration=Debug /p:Platform=Win32
+
+:: ARM64 릴리스 빌드
+msbuild SystemInformer.sln /p:Configuration=Release /p:Platform=ARM64
+```
+
+#### 고급 옵션
+
+```cmd
+:: 병렬 빌드 (CPU 코어 수만큼)
+msbuild SystemInformer.sln /p:Configuration=Release /p:Platform=x64 /m
+
+:: 상세 로깅
+msbuild SystemInformer.sln /p:Configuration=Release /p:Platform=x64 /v:detailed
+
+:: 클린 후 빌드
+msbuild SystemInformer.sln /p:Configuration=Release /p:Platform=x64 /t:Clean,Build
+
+:: 특정 프로젝트만 빌드
+msbuild SystemInformer/SystemInformer.vcxproj /p:Configuration=Release /p:Platform=x64
+```
+
+### 5.2 빌드 스크립트 사용
+
+#### 디버그 빌드
+
+```cmd
+:: build 디렉토리로 이동
+cd build
+
+:: 디버그 빌드 실행
+build_debug.cmd
+```
+
+#### 릴리스 빌드
+
+```cmd
+cd build
+
+:: 릴리스 빌드 실행
+build_release.cmd
+```
+
+#### 전체 빌드 과정
+
+```cmd
+cd build
+
+:: 1. 초기화
+build_init.cmd
+
+:: 2. 써드파티 라이브러리 빌드
+build_thirdparty.cmd
+
+:: 3. 메인 빌드
+build_release.cmd
+
+:: 4. 플러그인 빌드
+msbuild ../Plugins.sln /p:Configuration=Release /p:Platform=x64
+```
+
+---
+
+## 6. CMake 빌드
+
+### 6.1 CMake 설치
+
+```powershell
+# winget 사용
+winget install Kitware.CMake
+
+# 버전 확인 (3.30.0 이상 필요)
+cmake --version
+```
+
+### 6.2 Ninja 설치 (선택)
+
+```powershell
+winget install Ninja-build.Ninja
+```
+
+### 6.3 CMake 구성
+
+```bash
+# 빌드 디렉토리 생성
+mkdir cmake-build && cd cmake-build
+
+# Visual Studio 생성기 사용
+cmake .. -G "Visual Studio 17 2022" -A x64
+
+# Ninja 생성기 사용 (빠른 빌드)
+cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release
+```
+
+### 6.4 CMake 빌드 옵션
+
+```bash
+# 옵션 설명
+cmake .. -G Ninja \
+ -DCMAKE_BUILD_TYPE=Release \ # 빌드 타입 (Debug/Release)
+ -DSI_WITH_CORE=ON \ # 코어 컴포넌트 빌드
+ -DSI_WITH_PLUGINS=ON \ # 플러그인 빌드
+ -DSI_WITH_KERNEL=OFF # 커널 드라이버 빌드 (기본 OFF)
+```
+
+### 6.5 CMake 빌드 실행
+
+```bash
+# 빌드 실행
+cmake --build . --config Release
+
+# 병렬 빌드
+cmake --build . --config Release --parallel
+
+# 특정 타겟만 빌드
+cmake --build . --config Release --target SystemInformer
+```
+
+---
+
+## 7. 커널 드라이버 빌드
+
+### 7.1 사전 요구사항
+
+```
+필수 요소:
+☑ Windows Driver Kit (WDK) 10.0.22621 이상
+☑ Visual Studio 2022 WDK 확장
+☑ 테스트 서명 모드 활성화 (개발 시)
+☑ EV 코드 서명 인증서 (릴리스 배포 시)
+```
+
+### 7.2 WDK 설치 확인
+
+```powershell
+# WDK 설치 확인
+Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows Kits\Installed Roots" -Name KitsRoot10
+```
+
+### 7.3 드라이버 솔루션 빌드
+
+```cmd
+:: Visual Studio에서
+1. KSystemInformer.sln 열기
+2. 구성: Release, 플랫폼: x64 선택
+3. 솔루션 빌드
+
+:: 명령줄에서
+msbuild KSystemInformer.sln /p:Configuration=Release /p:Platform=x64
+```
+
+### 7.4 테스트 서명 모드 활성화
+
+```cmd
+:: 관리자 권한 명령 프롬프트에서
+
+:: 테스트 서명 모드 활성화
+bcdedit /set testsigning on
+
+:: 재부팅 필요
+shutdown /r /t 0
+```
+
+### 7.5 드라이버 서명 (개발용)
+
+```cmd
+:: 테스트 인증서 생성
+makecert -r -pe -ss PrivateCertStore -n "CN=SystemInformer Test" SystemInformer.cer
+
+:: 드라이버 서명
+signtool sign /s PrivateCertStore /n "SystemInformer Test" /t http://timestamp.digicert.com KSystemInformer.sys
+```
+
+### 7.6 프로덕션 서명 (EV 인증서)
+
+```cmd
+:: EV 코드 서명 인증서로 서명
+signtool sign /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 /sha1 <인증서_지문> KSystemInformer.sys
+
+:: WHQL 서명 (Microsoft 제출 후)
+```
+
+---
+
+## 8. 플러그인 빌드
+
+### 8.1 플러그인 솔루션 빌드
+
+```cmd
+:: Visual Studio에서
+1. Plugins.sln 열기
+2. 구성 선택 후 빌드
+
+:: 명령줄에서
+msbuild Plugins.sln /p:Configuration=Release /p:Platform=x64
+```
+
+### 8.2 개별 플러그인 빌드
+
+```cmd
+:: 특정 플러그인만 빌드
+msbuild plugins/ExtendedTools/ExtendedTools.vcxproj /p:Configuration=Release /p:Platform=x64
+```
+
+### 8.3 플러그인 출력 위치
+
+```
+bin/Release64/plugins/
+├── DotNetTools.dll
+├── ExtendedTools.dll
+├── HardwareDevices.dll
+├── NetworkTools.dll
+├── ExtendedServices.dll
+├── ExtendedNotifications.dll
+├── ToolStatus.dll
+├── OnlineChecks.dll
+├── Updater.dll
+├── UserNotes.dll
+└── WindowExplorer.dll
+```
+
+---
+
+## 9. 빌드 구성 파일
+
+### 9.1 Directory.Build.props
+
+**위치**: 프로젝트 루트
+
+```xml
+
+
+
+
+ $(SolutionDir)bin\$(Configuration)$(Platform)\
+ $(SolutionDir)obj\$(Configuration)$(Platform)\$(ProjectName)\
+
+
+ 10.0
+
+
+ v143
+
+
+```
+
+### 9.2 Common.User.props
+
+**위치**: `build/Common.User.props`
+
+```xml
+
+
+
+
+ true
+ Level3
+ true
+ true
+ stdcplatest
+ true
+
+
+
+
+ UseLinkTimeCodeGeneration
+ true
+ true
+
+
+
+ Disabled
+ MultiThreadedDebugDLL
+
+
+
+ MaxSpeed
+ MultiThreadedDLL
+ true
+ true
+
+
+```
+
+### 9.3 Common.Kernel.props
+
+**위치**: `build/Common.Kernel.props`
+
+```xml
+
+
+
+ Driver
+ WDM
+ Windows10
+ <_NT_TARGET_VERSION>0x0A00
+
+
+
+ Spectre
+ false
+
+
+```
+
+---
+
+## 10. 디버깅 설정
+
+### 10.1 Visual Studio 디버깅
+
+#### 사용자 모드 디버깅
+
+```
+프로젝트 속성 → 디버깅
+├── 명령: $(OutDir)SystemInformer.exe
+├── 작업 디렉토리: $(OutDir)
+└── 디버거 유형: 자동
+```
+
+#### 기호 서버 설정
+
+```
+도구 → 옵션 → 디버깅 → 기호
+├── Microsoft 기호 서버 활성화
+└── 캐시 위치: C:\Symbols
+```
+
+### 10.2 커널 모드 디버깅
+
+#### WinDbg 설정
+
+```cmd
+:: 대상 컴퓨터에서 디버그 모드 활성화
+bcdedit /debug on
+bcdedit /dbgsettings net hostip:192.168.1.100 port:50000
+
+:: 재부팅
+shutdown /r /t 0
+```
+
+#### WinDbg 연결
+
+```
+File → Kernel Debug → Net
+├── Port Number: 50000
+├── Key: <자동 생성된 키>
+└── Target: <대상 IP>
+```
+
+### 10.3 디버그 출력
+
+#### 코드에서 디버그 출력
+
+```c
+// phlib 디버그 매크로
+dprintf("Debug message: %d\n", value);
+
+// 커널 모드
+KdPrint(("Kernel debug: %d\n", value));
+DbgPrintEx(DPFLTR_DEFAULT_ID, DPFLTR_INFO_LEVEL, "Info: %d\n", value);
+```
+
+#### DebugView로 출력 확인
+
+```
+1. Sysinternals DebugView 실행
+2. Capture → Capture Global Win32 활성화
+3. 애플리케이션 실행
+```
+
+---
+
+## 11. CI/CD 설정
+
+### 11.1 GitHub Actions
+
+**파일 위치**: `.github/workflows/`
+
+```yaml
+# .github/workflows/build.yml
+name: Build
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ build:
+ runs-on: windows-latest
+
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ submodules: recursive
+
+ - name: Setup MSBuild
+ uses: microsoft/setup-msbuild@v1.1
+
+ - name: Build x64 Release
+ run: msbuild SystemInformer.sln /p:Configuration=Release /p:Platform=x64 /m
+
+ - name: Build x86 Release
+ run: msbuild SystemInformer.sln /p:Configuration=Release /p:Platform=Win32 /m
+
+ - name: Build Plugins
+ run: msbuild Plugins.sln /p:Configuration=Release /p:Platform=x64 /m
+
+ - name: Upload Artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: SystemInformer-x64
+ path: bin/Release64/
+```
+
+### 11.2 로컬 자동 빌드 스크립트
+
+**파일**: `build/build_all.cmd`
+
+```cmd
+@echo off
+setlocal enabledelayedexpansion
+
+echo ========================================
+echo System Informer Full Build Script
+echo ========================================
+
+:: Visual Studio 경로 찾기
+set VSWHERE="%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
+for /f "usebackq tokens=*" %%i in (`%VSWHERE% -latest -property installationPath`) do set VSINSTALL=%%i
+
+:: Developer Command Prompt 환경 설정
+call "%VSINSTALL%\Common7\Tools\VsDevCmd.bat" -arch=amd64
+
+:: 빌드 시작
+echo.
+echo [1/4] Building x64 Release...
+msbuild SystemInformer.sln /p:Configuration=Release /p:Platform=x64 /m /v:minimal
+if errorlevel 1 goto :error
+
+echo.
+echo [2/4] Building x86 Release...
+msbuild SystemInformer.sln /p:Configuration=Release /p:Platform=Win32 /m /v:minimal
+if errorlevel 1 goto :error
+
+echo.
+echo [3/4] Building Plugins...
+msbuild Plugins.sln /p:Configuration=Release /p:Platform=x64 /m /v:minimal
+if errorlevel 1 goto :error
+
+echo.
+echo [4/4] Build completed successfully!
+goto :end
+
+:error
+echo.
+echo Build failed with error code %errorlevel%
+exit /b %errorlevel%
+
+:end
+endlocal
+```
+
+---
+
+## 12. 문제 해결
+
+### 12.1 일반적인 빌드 오류
+
+#### 오류: SDK를 찾을 수 없음
+
+```
+해결 방법:
+1. Visual Studio Installer 실행
+2. 수정 → 개별 구성 요소
+3. Windows 10 SDK (10.0.22621.0) 선택 후 설치
+```
+
+#### 오류: ATL/MFC 헤더를 찾을 수 없음
+
+```
+해결 방법:
+1. Visual Studio Installer 실행
+2. C++ ATL for v143 build tools 설치
+3. C++ MFC for v143 build tools 설치
+```
+
+#### 오류: ARM64 빌드 실패
+
+```
+해결 방법:
+1. Visual Studio Installer 실행
+2. MSVC v143 - VS 2022 C++ ARM64 build tools 설치
+3. Windows SDK ARM64 구성 요소 설치
+```
+
+### 12.2 드라이버 빌드 오류
+
+#### 오류: WDK를 찾을 수 없음
+
+```
+해결 방법:
+1. WDK 설치 확인
+2. Visual Studio WDK 확장 설치
+3. Visual Studio 재시작
+```
+
+#### 오류: 서명 실패
+
+```
+해결 방법:
+1. 테스트 서명 모드 활성화: bcdedit /set testsigning on
+2. 재부팅
+3. 또는 프로덕션용 EV 인증서 사용
+```
+
+### 12.3 링크 오류
+
+#### 오류: 해결되지 않은 외부 기호
+
+```
+확인 사항:
+1. 모든 의존 프로젝트가 빌드되었는지 확인
+2. 라이브러리 경로 확인
+3. 플랫폼/구성 일치 확인
+```
+
+---
+
+## 13. 빌드 최적화
+
+### 13.1 빌드 시간 단축
+
+```xml
+
+
+
+ true
+
+
+ true
+
+
+ Use
+
+```
+
+### 13.2 출력 크기 최적화
+
+```xml
+
+
+
+ true
+
+
+ true
+
+
+ true
+
+
+ UseLinkTimeCodeGeneration
+
+```
+
+---
+
+## 14. 빌드 출력물
+
+### 14.1 릴리스 빌드 출력
+
+```
+bin/Release64/
+├── SystemInformer.exe # 메인 실행 파일
+├── phlib.dll # 핵심 라이브러리
+├── peview.exe # PE 뷰어
+├── kphlib.dll # KPH 라이브러리
+├── plugins/ # 플러그인 폴더
+│ ├── DotNetTools.dll
+│ ├── ExtendedTools.dll
+│ ├── HardwareDevices.dll
+│ ├── NetworkTools.dll
+│ ├── ExtendedServices.dll
+│ ├── ExtendedNotifications.dll
+│ ├── ToolStatus.dll
+│ ├── OnlineChecks.dll
+│ ├── Updater.dll
+│ ├── UserNotes.dll
+│ └── WindowExplorer.dll
+├── SystemInformer.pdb # 디버그 심볼
+└── phlib.pdb
+```
+
+### 14.2 드라이버 빌드 출력
+
+```
+bin/Release64/
+├── KSystemInformer.sys # 커널 드라이버
+├── KSystemInformer.pdb # 드라이버 심볼
+├── KSystemInformer.inf # 드라이버 설치 파일
+└── ksidll.dll # 드라이버 DLL
+```
+
+### 14.3 배포 패키지 생성
+
+```cmd
+:: MSIX 패키지 빌드
+cd build
+build_msix.cmd
+
+:: 출력
+setup/SystemInformer-x64.msix
+```
+
+---
+
+## 15. 빌드 환경 체크리스트
+
+```
+빌드 전 확인 사항:
+
+□ Visual Studio 2022 설치됨
+□ Windows 10 SDK (10.0.22621.0) 설치됨
+□ C++ ATL/MFC 구성 요소 설치됨
+□ Git 설치됨
+□ 소스 코드 클론됨
+□ 서브모듈 초기화됨
+
+드라이버 빌드 시 추가 확인:
+□ WDK 설치됨
+□ 테스트 서명 모드 활성화됨 (개발용)
+□ EV 코드 서명 인증서 준비됨 (배포용)
+
+선택적 확인 사항:
+□ CMake 3.30.0+ 설치됨
+□ Ninja 설치됨
+□ WinDbg 설치됨 (디버깅용)
+```
diff --git "a/docs/technical/05_\355\225\265\354\213\254\352\270\260\354\210\240_\352\265\254\355\230\204\354\203\201\354\204\270.md" "b/docs/technical/05_\355\225\265\354\213\254\352\270\260\354\210\240_\352\265\254\355\230\204\354\203\201\354\204\270.md"
new file mode 100644
index 000000000000..e2e85a590be3
--- /dev/null
+++ "b/docs/technical/05_\355\225\265\354\213\254\352\270\260\354\210\240_\352\265\254\355\230\204\354\203\201\354\204\270.md"
@@ -0,0 +1,897 @@
+# System Informer 핵심기술 구현 상세
+
+## 문서 정보
+- **프로젝트명**: System Informer
+- **문서 버전**: 1.0
+- **작성일**: 2026-01-25
+
+---
+
+## 1. Native NT API 활용
+
+### 1.1 개요
+
+System Informer는 Windows의 비공개 Native NT API를 광범위하게 활용하여 일반 Win32 API로는 접근할 수 없는 시스템 정보를 수집합니다.
+
+### 1.2 핵심 구현
+
+**파일 위치**: `phlib/native.c`, `phnt/*.h`
+
+```c
+// 프로세스 정보 조회 (phlib/native.c:PhEnumProcesses)
+NTSTATUS PhEnumProcesses(
+ _Out_ PVOID *Processes
+)
+{
+ NTSTATUS status;
+ PVOID buffer;
+ ULONG bufferSize = 0x8000; // 초기 버퍼 크기
+
+ // 버퍼 크기가 충분할 때까지 반복
+ do {
+ buffer = PhAllocate(bufferSize);
+ status = NtQuerySystemInformation(
+ SystemProcessInformation,
+ buffer,
+ bufferSize,
+ &bufferSize
+ );
+
+ if (status == STATUS_INFO_LENGTH_MISMATCH) {
+ PhFree(buffer);
+ bufferSize *= 2; // 버퍼 크기 증가
+ }
+ } while (status == STATUS_INFO_LENGTH_MISMATCH);
+
+ *Processes = buffer;
+ return status;
+}
+```
+
+### 1.3 주요 시스템 정보 클래스
+
+| 클래스 | 용도 | 구현 위치 |
+|--------|------|-----------|
+| SystemProcessInformation | 프로세스 목록 | `procprv.c` |
+| SystemHandleInformation | 핸들 목록 | `hndlprv.c` |
+| SystemModuleInformation | 커널 모듈 | `modprv.c` |
+| SystemPerformanceInformation | 성능 정보 | `sysinfo.c` |
+
+---
+
+## 2. 커널 드라이버 통신
+
+### 2.1 통신 아키텍처
+
+```
+User Mode Kernel Mode
+┌──────────────┐ ┌──────────────────┐
+│ kphlib.dll │ DeviceIoControl │ KSystemInformer │
+│ │────────────────►│ .sys │
+│ KphConnect() │ │ KphDispatch() │
+└──────────────┘ └──────────────────┘
+```
+
+### 2.2 드라이버 연결
+
+**파일**: `kphlib/kphcomms.c`
+
+```c
+NTSTATUS KphConnect(
+ _Out_ PKPH_COMMS_HANDLE Handle
+)
+{
+ NTSTATUS status;
+ HANDLE deviceHandle;
+ UNICODE_STRING deviceName;
+ OBJECT_ATTRIBUTES objectAttributes;
+ IO_STATUS_BLOCK ioStatusBlock;
+
+ RtlInitUnicodeString(&deviceName, KPH_DEVICE_NAME);
+ InitializeObjectAttributes(&objectAttributes, &deviceName,
+ OBJ_CASE_INSENSITIVE, NULL, NULL);
+
+ status = NtOpenFile(
+ &deviceHandle,
+ FILE_READ_DATA | FILE_WRITE_DATA,
+ &objectAttributes,
+ &ioStatusBlock,
+ FILE_SHARE_READ | FILE_SHARE_WRITE,
+ 0
+ );
+
+ if (NT_SUCCESS(status)) {
+ Handle->DeviceHandle = deviceHandle;
+ }
+
+ return status;
+}
+```
+
+### 2.3 메시지 기반 통신
+
+**파일**: `KSystemInformer/comms.c`
+
+```c
+// 요청 처리 디스패치
+NTSTATUS KphDispatchDeviceControl(
+ _In_ PDEVICE_OBJECT DeviceObject,
+ _Inout_ PIRP Irp
+)
+{
+ PIO_STACK_LOCATION irpStack;
+ ULONG ioControlCode;
+ NTSTATUS status;
+
+ irpStack = IoGetCurrentIrpStackLocation(Irp);
+ ioControlCode = irpStack->Parameters.DeviceIoControl.IoControlCode;
+
+ switch (ioControlCode) {
+ case KPH_QUERYPROCESSINFO:
+ status = KphQueryProcessInfo(Irp);
+ break;
+ case KPH_OPENPROCESS:
+ status = KphOpenProcess(Irp);
+ break;
+ case KPH_TERMINATEPROCESS:
+ status = KphTerminateProcess(Irp);
+ break;
+ // ... 기타 핸들러
+ }
+
+ return status;
+}
+```
+
+---
+
+## 3. 프로세스 모니터링
+
+### 3.1 프로세스 공급자 패턴
+
+**파일**: `SystemInformer/procprv.c`
+
+```c
+// 프로세스 공급자 메인 루프
+VOID PhProcessProviderUpdate(VOID)
+{
+ PSYSTEM_PROCESS_INFORMATION processes;
+ PSYSTEM_PROCESS_INFORMATION process;
+
+ // 1. 시스템에서 프로세스 정보 수집
+ PhEnumProcesses(&processes);
+
+ // 2. 각 프로세스 처리
+ process = PH_FIRST_PROCESS(processes);
+ while (process) {
+ PPH_PROCESS_ITEM processItem;
+
+ // 기존 프로세스인지 확인
+ processItem = PhReferenceProcessItem(process->UniqueProcessId);
+
+ if (processItem) {
+ // 기존 프로세스 업데이트
+ PhUpdateProcessItem(processItem, process);
+ PhDereferenceObject(processItem);
+ } else {
+ // 새 프로세스 추가
+ processItem = PhCreateProcessItem(process);
+ PhAddProcessItem(processItem);
+
+ // 새 프로세스 이벤트 발생
+ PhInvokeCallback(&PhProcessAddedEvent, processItem);
+ }
+
+ process = PH_NEXT_PROCESS(process);
+ }
+
+ // 3. 종료된 프로세스 정리
+ PhRemoveTerminatedProcesses();
+
+ PhFree(processes);
+}
+```
+
+### 3.2 CPU 사용률 계산
+
+```c
+// CPU 델타 계산 (procprv.c)
+VOID PhCalculateProcessCpuUsage(
+ _Inout_ PPH_PROCESS_ITEM ProcessItem,
+ _In_ PSYSTEM_PROCESS_INFORMATION Process
+)
+{
+ ULONG64 kernelDelta, userDelta, totalDelta;
+
+ // 커널/사용자 시간 델타 계산
+ kernelDelta = Process->KernelTime.QuadPart -
+ ProcessItem->KernelTime.QuadPart;
+ userDelta = Process->UserTime.QuadPart -
+ ProcessItem->UserTime.QuadPart;
+ totalDelta = kernelDelta + userDelta;
+
+ // CPU 사용률 계산 (시스템 전체 시간 대비)
+ ProcessItem->CpuUsage = (FLOAT)totalDelta /
+ PhCpuTotalCycleDelta /
+ PhSystemBasicInformation.NumberOfProcessors;
+
+ // 값 저장
+ ProcessItem->KernelTime.QuadPart = Process->KernelTime.QuadPart;
+ ProcessItem->UserTime.QuadPart = Process->UserTime.QuadPart;
+}
+```
+
+---
+
+## 4. 메모리 관리 시스템
+
+### 4.1 참조 카운팅 객체
+
+**파일**: `phlib/ref.c`
+
+```c
+// 객체 헤더 구조
+typedef struct _PH_OBJECT_HEADER {
+ union {
+ struct {
+ USHORT TypeIndex;
+ UCHAR Flags;
+ UCHAR Reserved;
+ LONG RefCount;
+ };
+ ULONG_PTR Alignment;
+ };
+} PH_OBJECT_HEADER;
+
+// 참조 증가
+VOID PhReferenceObject(
+ _In_ PVOID Object
+)
+{
+ PPH_OBJECT_HEADER header = PhObjectToObjectHeader(Object);
+ InterlockedIncrement(&header->RefCount);
+}
+
+// 참조 감소 (0이면 해제)
+VOID PhDereferenceObject(
+ _In_ PVOID Object
+)
+{
+ PPH_OBJECT_HEADER header = PhObjectToObjectHeader(Object);
+
+ if (InterlockedDecrement(&header->RefCount) == 0) {
+ PhpFreeObject(Object);
+ }
+}
+```
+
+### 4.2 문자열 관리
+
+**파일**: `phlib/basesup.c`
+
+```c
+// 문자열 생성
+PPH_STRING PhCreateString(
+ _In_ PWSTR Buffer
+)
+{
+ return PhCreateStringEx(Buffer, wcslen(Buffer) * sizeof(WCHAR));
+}
+
+PPH_STRING PhCreateStringEx(
+ _In_opt_ PWCHAR Buffer,
+ _In_ SIZE_T Length
+)
+{
+ PPH_STRING string;
+
+ string = PhCreateObject(
+ FIELD_OFFSET(PH_STRING, Buffer) + Length + sizeof(UNICODE_NULL),
+ PhStringType
+ );
+
+ string->Length = Length;
+ if (Buffer) {
+ memcpy(string->Buffer, Buffer, Length);
+ }
+ string->Buffer[Length / sizeof(WCHAR)] = UNICODE_NULL;
+
+ return string;
+}
+```
+
+---
+
+## 5. GUI 트리뷰 컨트롤
+
+### 5.1 TreeNew 컨트롤
+
+**파일**: `phlib/treenew.c`
+
+고성능 가상화된 트리/리스트 컨트롤로, 수천 개의 항목을 효율적으로 표시합니다.
+
+```c
+// 컨트롤 생성
+HWND PhCreateTreeNewControl(
+ _In_ HWND ParentWindow,
+ _In_ INT_PTR Id
+)
+{
+ return CreateWindow(
+ PH_TREENEW_CLASSNAME,
+ NULL,
+ WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_TABSTOP,
+ 0, 0, 0, 0,
+ ParentWindow,
+ (HMENU)Id,
+ PhInstanceHandle,
+ NULL
+ );
+}
+
+// 컬럼 추가
+VOID PhAddTreeNewColumn(
+ _In_ HWND TreeNewHandle,
+ _In_ ULONG Id,
+ _In_ BOOLEAN Visible,
+ _In_ PWSTR Text,
+ _In_ ULONG Width
+)
+{
+ PH_TREENEW_COLUMN column;
+
+ memset(&column, 0, sizeof(column));
+ column.Id = Id;
+ column.Visible = Visible;
+ column.Text = Text;
+ column.Width = Width;
+
+ TreeNew_AddColumn(TreeNewHandle, &column);
+}
+```
+
+### 5.2 가상화 렌더링
+
+```c
+// 노드 콜백 (필요할 때만 데이터 요청)
+BOOLEAN ProcessTreeNewCallback(
+ _In_ HWND hwnd,
+ _In_ PH_TREENEW_MESSAGE Message,
+ _In_opt_ PVOID Parameter1,
+ _In_opt_ PVOID Parameter2,
+ _In_opt_ PVOID Context
+)
+{
+ switch (Message) {
+ case TreeNewGetChildren:
+ // 자식 노드 반환 (트리 구조)
+ return GetProcessChildren(Parameter1, Parameter2);
+
+ case TreeNewGetCellText:
+ // 셀 텍스트 반환
+ return GetProcessCellText(Parameter1, Parameter2);
+
+ case TreeNewSortChanged:
+ // 정렬 변경
+ SortProcessList();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+```
+
+---
+
+## 6. 플러그인 시스템
+
+### 6.1 플러그인 인터페이스
+
+**파일**: `SystemInformer/include/phplug.h`
+
+```c
+// 플러그인 정보 구조체
+typedef struct _PH_PLUGIN_INFORMATION {
+ PWSTR Name;
+ PWSTR Author;
+ PWSTR Description;
+ PWSTR Url;
+ ULONG Version;
+ ULONG InterfaceVersion;
+} PH_PLUGIN_INFORMATION;
+
+// 플러그인 필수 내보내기 함수
+typedef BOOLEAN (NTAPI *PPH_PLUGIN_LOAD)(
+ _In_ PPH_PLUGIN Plugin,
+ _In_ ULONG SystemServiceNumber
+);
+```
+
+### 6.2 플러그인 로딩
+
+**파일**: `SystemInformer/plugin.c`
+
+```c
+BOOLEAN PhLoadPlugin(
+ _In_ PWSTR FileName
+)
+{
+ HMODULE moduleHandle;
+ PPH_PLUGIN_LOAD loadFunction;
+ PPH_PLUGIN plugin;
+
+ // DLL 로드
+ moduleHandle = LoadLibrary(FileName);
+ if (!moduleHandle)
+ return FALSE;
+
+ // 초기화 함수 찾기
+ loadFunction = (PPH_PLUGIN_LOAD)GetProcAddress(
+ moduleHandle, "PhPluginLoad");
+
+ if (!loadFunction) {
+ FreeLibrary(moduleHandle);
+ return FALSE;
+ }
+
+ // 플러그인 객체 생성
+ plugin = PhCreatePlugin(FileName, moduleHandle);
+
+ // 플러그인 초기화 호출
+ if (!loadFunction(plugin, PhSystemServiceNumber)) {
+ PhDestroyPlugin(plugin);
+ return FALSE;
+ }
+
+ // 플러그인 목록에 추가
+ PhAddPlugin(plugin);
+
+ return TRUE;
+}
+```
+
+### 6.3 콜백 등록
+
+```c
+// 플러그인에서 콜백 등록
+VOID MyPluginInitialize(
+ _In_ PPH_PLUGIN Plugin
+)
+{
+ // 프로세스 추가 이벤트 구독
+ PhRegisterCallback(
+ &PhProcessAddedEvent,
+ OnProcessAdded,
+ NULL,
+ &ProcessAddedCallbackRegistration
+ );
+
+ // 메뉴 항목 추가
+ PhRegisterCallback(
+ &PhMenuShowingEvent,
+ OnMenuShowing,
+ NULL,
+ &MenuShowingCallbackRegistration
+ );
+}
+```
+
+---
+
+## 7. ETW 이벤트 추적
+
+### 7.1 ETW 세션 관리
+
+**파일**: `plugins/ExtendedTools/etwmon.c`
+
+```c
+// ETW 세션 시작
+NTSTATUS EtStartEtwSession(VOID)
+{
+ NTSTATUS status;
+ TRACEHANDLE sessionHandle;
+ EVENT_TRACE_PROPERTIES properties;
+
+ memset(&properties, 0, sizeof(properties));
+ properties.Wnode.BufferSize = sizeof(properties);
+ properties.Wnode.Flags = WNODE_FLAG_TRACED_GUID;
+ properties.LogFileMode = EVENT_TRACE_REAL_TIME_MODE;
+ properties.MinimumBuffers = 4;
+ properties.MaximumBuffers = 64;
+ properties.BufferSize = 64; // KB
+
+ status = StartTrace(
+ &sessionHandle,
+ L"SystemInformerEtwSession",
+ &properties
+ );
+
+ if (NT_SUCCESS(status)) {
+ EtSessionHandle = sessionHandle;
+
+ // 공급자 활성화
+ EnableTraceEx2(
+ sessionHandle,
+ &DiskIoGuid,
+ EVENT_CONTROL_CODE_ENABLE_PROVIDER,
+ TRACE_LEVEL_INFORMATION,
+ 0, 0, 0, NULL
+ );
+ }
+
+ return status;
+}
+```
+
+### 7.2 이벤트 처리
+
+```c
+// 이벤트 콜백
+VOID WINAPI EtEtwEventCallback(
+ _In_ PEVENT_RECORD EventRecord
+)
+{
+ if (IsEqualGUID(&EventRecord->EventHeader.ProviderId, &DiskIoGuid)) {
+ // 디스크 I/O 이벤트 처리
+ ProcessDiskIoEvent(EventRecord);
+ }
+ else if (IsEqualGUID(&EventRecord->EventHeader.ProviderId, &TcpIpGuid)) {
+ // 네트워크 이벤트 처리
+ ProcessNetworkEvent(EventRecord);
+ }
+}
+
+VOID ProcessDiskIoEvent(
+ _In_ PEVENT_RECORD EventRecord
+)
+{
+ PDISK_IO_EVENT data = (PDISK_IO_EVENT)EventRecord->UserData;
+ ULONG processId = EventRecord->EventHeader.ProcessId;
+
+ // 프로세스별 I/O 통계 업데이트
+ PPH_PROCESS_ITEM processItem = PhReferenceProcessItem(
+ UlongToHandle(processId));
+
+ if (processItem) {
+ InterlockedAdd64(&processItem->DiskReadBytes, data->TransferSize);
+ PhDereferenceObject(processItem);
+ }
+}
+```
+
+---
+
+## 8. 심볼 해석 시스템
+
+### 8.1 심볼 공급자
+
+**파일**: `phlib/symprv.c`
+
+```c
+// 심볼 초기화
+BOOLEAN PhSymbolProviderInitialize(VOID)
+{
+ // DbgHelp 초기화
+ SymSetOptions(
+ SYMOPT_UNDNAME |
+ SYMOPT_DEFERRED_LOADS |
+ SYMOPT_LOAD_LINES
+ );
+
+ // 심볼 경로 설정
+ SymSetSearchPath(
+ NtCurrentProcess(),
+ L"srv*C:\\Symbols*https://msdl.microsoft.com/download/symbols"
+ );
+
+ return SymInitialize(NtCurrentProcess(), NULL, FALSE);
+}
+```
+
+### 8.2 주소 해석
+
+```c
+// 주소에서 심볼 이름 가져오기
+PPH_STRING PhGetSymbolFromAddress(
+ _In_ HANDLE ProcessHandle,
+ _In_ ULONG64 Address
+)
+{
+ SYMBOL_INFO_PACKAGE symbolInfo;
+ DWORD64 displacement;
+
+ symbolInfo.si.SizeOfStruct = sizeof(SYMBOL_INFO);
+ symbolInfo.si.MaxNameLen = MAX_SYM_NAME;
+
+ if (SymFromAddr(ProcessHandle, Address, &displacement, &symbolInfo.si)) {
+ // 모듈!함수+오프셋 형식
+ return PhFormatString(
+ L"%s!%S+0x%I64x",
+ ModuleName,
+ symbolInfo.si.Name,
+ displacement
+ );
+ }
+
+ return NULL;
+}
+```
+
+---
+
+## 9. 보안 및 검증
+
+### 9.1 서명 검증
+
+**파일**: `phlib/verify.c`
+
+```c
+// Authenticode 서명 검증
+VERIFY_RESULT PhVerifyFile(
+ _In_ PWSTR FileName,
+ _Out_opt_ PPH_STRING *SignerName
+)
+{
+ WINTRUST_DATA trustData;
+ WINTRUST_FILE_INFO fileInfo;
+ GUID actionGuid = WINTRUST_ACTION_GENERIC_VERIFY_V2;
+ LONG status;
+
+ memset(&fileInfo, 0, sizeof(fileInfo));
+ fileInfo.cbStruct = sizeof(fileInfo);
+ fileInfo.pcwszFilePath = FileName;
+
+ memset(&trustData, 0, sizeof(trustData));
+ trustData.cbStruct = sizeof(trustData);
+ trustData.dwUIChoice = WTD_UI_NONE;
+ trustData.dwUnionChoice = WTD_CHOICE_FILE;
+ trustData.pFile = &fileInfo;
+
+ status = WinVerifyTrust(NULL, &actionGuid, &trustData);
+
+ if (status == ERROR_SUCCESS) {
+ if (SignerName) {
+ *SignerName = PhGetSignerName(&trustData);
+ }
+ return VrTrusted;
+ }
+
+ return VrUntrusted;
+}
+```
+
+### 9.2 드라이버 클라이언트 검증
+
+**파일**: `KSystemInformer/verify.c`
+
+```c
+// 클라이언트 프로세스 검증
+NTSTATUS KphVerifyClient(
+ _In_ PEPROCESS Process
+)
+{
+ NTSTATUS status;
+ PUNICODE_STRING imageName;
+ UCHAR hash[32];
+
+ // 프로세스 이미지 경로 가져오기
+ status = SeLocateProcessImageName(Process, &imageName);
+ if (!NT_SUCCESS(status))
+ return status;
+
+ // 이미지 해시 계산
+ status = KphHashFile(imageName, hash);
+ if (!NT_SUCCESS(status))
+ return status;
+
+ // 알려진 해시와 비교
+ if (RtlEqualMemory(hash, KphTrustedHash, sizeof(hash))) {
+ return STATUS_SUCCESS;
+ }
+
+ return STATUS_ACCESS_DENIED;
+}
+```
+
+---
+
+## 10. 동적 데이터 시스템
+
+### 10.1 Windows 버전별 오프셋 관리
+
+**파일**: `kphlib/kphdyn.c`, `kphlib/kphdyn.xml`
+
+```c
+// 동적 데이터 로드
+NTSTATUS KphLoadDynamicData(VOID)
+{
+ NTSTATUS status;
+ RTL_OSVERSIONINFOEXW versionInfo;
+ PKPH_DYN_DATA dynData;
+
+ // 현재 Windows 버전 가져오기
+ RtlGetVersion(&versionInfo);
+
+ // 해당 버전의 동적 데이터 찾기
+ dynData = KphFindDynamicData(
+ versionInfo.dwBuildNumber,
+ versionInfo.dwMajorVersion,
+ versionInfo.dwMinorVersion
+ );
+
+ if (!dynData) {
+ return STATUS_NOT_SUPPORTED;
+ }
+
+ // 오프셋 적용
+ KphDynEprocessUniqueProcessId = dynData->EprocessUniqueProcessId;
+ KphDynEprocessToken = dynData->EprocessToken;
+ KphDynEprocessImageFileName = dynData->EprocessImageFileName;
+ // ...
+
+ return STATUS_SUCCESS;
+}
+```
+
+### 10.2 XML 데이터 구조
+
+```xml
+
+
+
+
+
+ 0x440
+ 0x448
+ 0x4b8
+ 0x5a8
+ 0x550
+
+
+ 0x478
+ 0x4a0
+
+
+
+
+```
+
+---
+
+## 11. 동기화 기법
+
+### 11.1 Queued Lock (경량 잠금)
+
+**파일**: `phlib/queuedlock.c`
+
+```c
+// 큐 기반 스핀락 - 공정하고 빠름
+typedef struct _PH_QUEUED_LOCK {
+ ULONG_PTR Value;
+} PH_QUEUED_LOCK;
+
+VOID PhAcquireQueuedLockExclusive(
+ _Inout_ PPH_QUEUED_LOCK Lock
+)
+{
+ ULONG_PTR value;
+ ULONG_PTR newValue;
+ ULONG spinCount;
+
+ spinCount = PhQueuedLockSpinCount;
+
+ while (TRUE) {
+ value = Lock->Value;
+
+ if (!(value & PH_QUEUED_LOCK_OWNED)) {
+ newValue = value | PH_QUEUED_LOCK_OWNED;
+ if (InterlockedCompareExchangePointer(
+ &Lock->Value, newValue, value) == value) {
+ return; // 잠금 획득 성공
+ }
+ }
+
+ if (spinCount-- == 0) {
+ // 대기 큐에 추가
+ PhpBlockOnQueuedLock(Lock, value);
+ spinCount = PhQueuedLockSpinCount;
+ }
+
+ YieldProcessor();
+ }
+}
+```
+
+### 11.2 Rundown Protection
+
+```c
+// 객체가 사용 중일 때 안전하게 해제 대기
+BOOLEAN PhAcquireRundownProtection(
+ _Inout_ PPH_RUNDOWN_PROTECT Protection
+)
+{
+ ULONG_PTR value;
+ ULONG_PTR newValue;
+
+ value = Protection->Value;
+
+ if (value & PH_RUNDOWN_ACTIVE) {
+ return FALSE; // 이미 rundown 중
+ }
+
+ newValue = value + PH_RUNDOWN_REF_INC;
+
+ return InterlockedCompareExchangePointer(
+ &Protection->Value, newValue, value) == value;
+}
+```
+
+---
+
+## 12. 성능 최적화 기법
+
+### 12.1 지연 로딩
+
+```c
+// 필요할 때만 심볼 로드
+VOID PhLoadSymbolsDeferred(
+ _In_ PPH_PROCESS_ITEM ProcessItem
+)
+{
+ if (!ProcessItem->SymbolsLoaded) {
+ // 백그라운드 스레드에서 심볼 로드
+ PhQueueItemWorkQueue(
+ PhGetGlobalWorkQueue(),
+ LoadSymbolsWorkItem,
+ ProcessItem
+ );
+ }
+}
+```
+
+### 12.2 캐싱
+
+```c
+// 해시 테이블 기반 프로세스 캐시
+static PH_HASHTABLE ProcessHashtable;
+
+PPH_PROCESS_ITEM PhReferenceProcessItem(
+ _In_ HANDLE ProcessId
+)
+{
+ PPH_PROCESS_ITEM *entry;
+
+ PhAcquireQueuedLockShared(&ProcessHashtableLock);
+
+ entry = PhFindEntryHashtable(
+ &ProcessHashtable,
+ &ProcessId
+ );
+
+ if (entry) {
+ PhReferenceObject(*entry);
+ PhReleaseQueuedLockShared(&ProcessHashtableLock);
+ return *entry;
+ }
+
+ PhReleaseQueuedLockShared(&ProcessHashtableLock);
+ return NULL;
+}
+```
+
+---
+
+## 요약
+
+System Informer의 핵심 기술들:
+
+| 기술 | 목적 | 구현 위치 |
+|------|------|-----------|
+| Native NT API | 저수준 시스템 접근 | `phlib/native.c` |
+| 커널 드라이버 | 권한 상승, 보호 우회 | `KSystemInformer/` |
+| 참조 카운팅 | 메모리 관리 | `phlib/ref.c` |
+| TreeNew 컨트롤 | 고성능 UI | `phlib/treenew.c` |
+| 플러그인 시스템 | 확장성 | `SystemInformer/plugin.c` |
+| ETW 추적 | 이벤트 모니터링 | `plugins/ExtendedTools/` |
+| 심볼 해석 | 디버그 정보 | `phlib/symprv.c` |
+| 동적 데이터 | 버전 호환성 | `kphlib/kphdyn.c` |