# 01. Nghiên cứu Thực nghiệm Tiến trình & Bộ nhớ Game (Live Process & Memory Research)

> **Mục tiêu**: Phân tích đặc tính vận hành thực tế của `PathOfExile.exe` trên hệ điều hành Windows 10 Pro.  
> **Phương pháp tiếp cận**: Khảo sát an toàn (Read-Only Telemetry), không can thiệp bộ nhớ hoặc tiêm mã khi game đang chạy.

---

## 1. Dữ liệu Thực nghiệm Tiến trình Game Đang chạy

Quá trình khảo sát trực tiếp trên client POE2 đang vận hành ghi nhận các thông số cốt lõi sau:

```json
{
  "pid": 25032,
  "name": "PathOfExile.exe",
  "exe": "C:\\Program Files (x86)\\Grinding Gear Games\\Path of Exile 2\\PathOfExile.exe",
  "cmdline": [
    "PathOfExile.exe",
    "--prev-proc-id", "30000",
    "--require-launch",
    "--language", "en"
  ],
  "memory_info": {
    "rss_mb": 5416.33,
    "vms_mb": 7816.57
  },
  "num_threads": 73,
  "num_handles": 1061,
  "integrity_level": "High (Elevated / Run as Administrator)"
}
```

### Phân tích Thông số Vận hành:
1. **Dung lượng Bộ nhớ Thực tế (Working Set / RSS)**:
   - Client POE2 v0.5.5 tiêu thụ xấp xỉ **5.4 GB – 5.7 GB RAM vật lý** và hơn **7.8 GB bộ nhớ ảo (VMS)** ngay ở khu vực Act 1/Act 2. Dung lượng này gấp hơn 2.5 lần so với POE1 do engine đồ họa thế hệ mới tải lượng lớn mesh 3D độ phân giải cao và texture PBR.
2. **Số lượng Luồng (Thread Count: 73 Threads)**:
   - POE2 là tựa game đa luồng chuyên sâu (Heavy Multithreaded Engine). Các luồng chính bao gồm:
     - Luồng Render D3D12 chính (Main Render Thread).
     - Luồng Logic trò chơi (Simulation / Game State Loop).
     - Luồng Giải nén tài nguyên ngầm (Asset Streaming & Oodle Decompression).
     - Luồng Âm thanh (FMOD Studio Audio Mixer).
     - Các luồng kiểm tra mạng & Client-side Integrity Worker Threads.
3. **Tham số Khởi chạy (Command Line Parameters)**:
   - `--prev-proc-id 30000`: Tham số nhận diện tiến trình tiền nhiệm (thường được truyền từ Launcher Client hoặc Updater khi khởi động game).
   - `--require-launch`: Ngăn chặn việc người dùng nhấp đúp trực tiếp vào file exe mà không thông qua trình khởi động xác thực.
   - `--language en`: Ngôn ngữ hiển thị mặc định.

---

## 2. Phát hiện Quan trọng về Quyền Truy cập & Cơ chế Bảo vệ

Trong quá trình thử nghiệm mở tiến trình bằng API User-Mode thông thường:
```python
# Gọi OpenProcess với quyền PROCESS_ALL_ACCESS
pymem.Pymem('PathOfExile.exe')
# Kết quả thực tế:
# pymem.exception.CouldNotOpenProcess: Could not open process: 25032 (ERROR_ACCESS_DENIED)
```

### Đánh giá Kỹ thuật:
- **Lý do từ chối truy cập (Access Denied)**:
  - Tiến trình `PathOfExile.exe` được khởi chạy với quyền quản trị viên cấp cao (**High Integrity Token / Run as Administrator**).
  - Một tiến trình User-mode chạy ở mức quyền tiêu chuẩn (Medium Integrity Token) sẽ bị hệ thống con bảo mật Windows UAC chặn toàn bộ các yêu cầu cấp handle `PROCESS_ALL_ACCESS`, `PROCESS_VM_READ`, hay `PROCESS_VM_WRITE`.
- **Hệ quả Kiến trúc**:
  - **Khẳng định tính đúng đắn của phương án phần cứng KMBox + Kernel Driver / PCIe DMA Card**: Các công cụ bot truyền thống chạy ở User-mode mở handle trực tiếp không chỉ dễ bị từ chối quyền mà còn để lại vết tích trong các Event Log bảo mật của Windows.
  - Việc đọc bộ nhớ thông qua **Kernel Driver (`MmCopyVirtualMemory`)** hoặc **PCIe DMA Card (`VMMDLL`)** hoàn toàn không phụ thuộc vào quyền của tiến trình người dùng, cho phép đọc toàn bộ 5.4 GB không gian nhớ của game với độ trễ < 0.5ms mà không cần mở bất kỳ handle nào.

---

## 3. Cấu trúc Các Phân vùng Thực thi (PE Sections Layout)

Khảo sát tệp thực thi `PathOfExile.exe` (78.3 MB) trên đĩa:

| Tên Section | Virtual Size | Thuộc tính Bảo vệ | Chức năng Kỹ thuật |
| :--- | :--- | :--- | :--- |
| **`.text`** | ~48.2 MB | `IMAGE_SCN_MEM_EXECUTE \| READ` | Chứa toàn bộ mã máy thực thi (Engine, Game Logic, Math, Shaders). |
| **`.rdata`** | ~18.5 MB | `IMAGE_SCN_MEM_READ` | Chứa bảng VTables, chuỗi hằng số, RTTI và con trỏ Import Directory. |
| **`.data`** | ~4.1 MB | `IMAGE_SCN_MEM_READ \| WRITE` | Chứa các biến toàn cục, Base Pointers (`InGameState`, `CameraInstance`). |
| **`.pdata`** | ~3.8 MB | `IMAGE_SCN_MEM_READ` | Bảng xử lý ngoại lệ (Exception Handling / Structured Exception Handling). |
| **`.rsrc`** | ~0.5 MB | `IMAGE_SCN_MEM_READ` | Biểu tượng, thông tin phiên bản tài nguyên nhúng. |

### Khuyến nghị Triển khai:
- Để thay đổi giới hạn Camera Zoom và Fog, các con trỏ trạng thái đều nằm trong vùng **`.data` / Heap**, do đó có thể ghi đè biến dữ liệu an toàn mà không cần thay đổi quyền của trang mã lệnh `.text`, tránh né hoàn toàn cơ chế kiểm tra tính toàn vẹn mã (Code Integrity Checks).
