Mrwoady-hub/woadycompat
GitHub: Mrwoady-hub/woadycompat
一个面向教育的 Linux Windows 兼容性研究项目,通过静态分析工具链和架构文档帮助理解 Wine/Proton 兼容层的工作原理与调试方法。
Stars: 0 | Forks: 0
# WoadyCompat
WoadyCompat 是一个以学习为目的的 Linux Windows 兼容性研究项目。
其目标是通过构建小型、安全、非执行的工具和架构笔记,来理解 Wine/Proton 风格的兼容性是如何运作的。
## 当前重点
- PE 文件检查与静态映射
- Win32 API 概念映射
- Wine 源码阅读笔记
- Vulkan 设备枚举
- SPIR-V 着色器字节码检查
- Wine/Proton 调试日志分析
## 项目阶段
### 阶段 1 — PE Inspector
用于 Windows PE 元数据的静态解析器。
### 阶段 2 — API Shim 概念
小型兼容层实验,旨在理解 Windows 风格的 API 调用如何映射到 Linux 端的行为。
### 阶段 3 — Static PE Mapper
加载器概念的教育模型。在不执行二进制文件的情况下,分析 PE 头、节、RVA 映射和导入。
### 阶段 4 — Wine 架构与调试
架构文档和调试工作流。将所有工具连接成一个连贯的兼容性研究体系。
参见:
- [docs/wine-architecture-map.md](docs/wine-architecture-map.md) — Wine 如何将 Windows 概念映射到 Linux
- [docs/wine-debugging-workflow.md](docs/wine-debugging-workflow.md) — 使用工具诊断兼容性问题
### 阶段 5 — Vulkan 与 SPIR-V 研究
专注于 Vulkan 设备枚举和 SPIR-V 着色器检查的图形兼容性研究。
### 阶段 6 — Wine/Proton 调试日志分析器
用于解析 Wine 调试日志并在不执行二进制文件的情况下总结兼容性问题的教育工具。
## 工具
### Vulkan Device Enumerator
```
gcc tools/vulkan_info.c -o tools/vulkan_info -lvulkan
./tools/vulkan_info
```
### SPIR-V Inspector
```
python3 tools/spirv_inspect.py /tmp/minimal.spv
```
### PE Inspector
```
python3 tools/pe_inspector.py samples/nmap_service.exe
```
### Static PE Mapper
```
python3 tools/pe_mapper.py samples/nmap_service.exe
```
分析内容:
- DOS 和 PE 签名验证
- COFF 和 Optional 头结构
- 节表与 RVA 到文件偏移量的映射
- 导入目录元数据
- 加载器推理演练(教育性质)
- 重定位元数据
### Wine/Proton Debug Log Analyzer
```
# 分析 Wine debug log 文件
python3 tools/wine_debug_analyzer.py docs/sample_wine_debug.log
# 或直接通过管道传输 Wine 输出
WINEDEBUG=+loaddll,+seh wine app.exe 2>&1 | python3 tools/wine_debug_analyzer.py -
```
总结内容:
- 已加载和缺失的 DLL
- 错误和警告
- 首次失败点
- 预估的兼容性类别(图形、网络、文件系统等)
## 工具如何关联
**诊断工作流:**
```
Windows PE Binary (game.exe, app.exe, etc.)
↓
pe_inspector.py → "What does this binary need?"
↓
pe_mapper.py → "How would a loader arrange this in memory?"
↓
Run with Wine debug output
↓
wine_debug_analyzer.py → "What went wrong and where?"
↓
[Architecture map] → "Why is Wine designed that way?"
↓
[Debugging workflow] → "How do I fix this?"
```
每个工具揭示一个层面:
1. **静态分析** — 二进制文件包含什么
2. **加载器模型** — 应该如何进行排列
3. **运行时行为** — 实际发生了什么
4. **架构** — 为什么 Wine/Proton 以这种方式工作
5. **工作流** — 如何诊断和修复问题
## 了解本项目
根据您的兴趣从这里开始:
- **想了解 PE 文件?** → [pe_inspector.py](tools/pe_inspector.py)
- **想了解加载过程?** → [pe_mapper.py](tools/pe_mapper.py) + [wine-architecture-map.md](docs/wine-architecture-map.md)
- **想调试兼容性?** → [wine_debug_analyzer.py](tools/wine_debug_analyzer.py) + [wine-debugging-workflow.md](docs/wine-debugging-workflow.md)
- **想了解图形技术?** → [vulkan_info.c](tools/vulkan_info.c) + [spirv_inspect.py](tools/spirv_inspect.py)
## 验证
阶段 3 已确认:
- PE 文件格式验证(MZ、PE 签名)
- 虚拟地址空间保留模型
- 带有 RVA 转换的节映射
- 导入表结构分析
- 教育性质的加载器推理演练
阶段 4 已确认:
- Wine 架构各层已清晰映射
- 二进制格式 → 加载器 → API Shim → Linux 系统调用
- 调试工作流将所有工具系统地连接起来
- 解释了导入解析概念
- 记录了真实的诊断示例
阶段 5 已确认:
- NVIDIA GeForce RTX 5070 被检测为 Vulkan 独立 GPU
- AMD Ryzen 7 9800X3D iGPU 通过 RADV 被检测到
- llvmpipe 被检测为 CPU 回退
- 最小顶点着色器已成功作为 SPIR-V 被检查
阶段 6 已确认:
- Wine 调试日志分析器成功解析了 DLL 加载事件
- 正确识别了缺失的模块和错误
- 对兼容性问题进行了分类(图形、网络、文件系统等)
- 生成了用于故障排除的可操作摘要
## 安全范围
本项目用于教育性质的兼容性研究、系统编程和防御性网络安全学习。
它不包含:
- 恶意软件行为
- 进程注入
- shellcode
- DRM 绕过
- 反作弊绕过
- 任意二进制文件执行
## 状态
活跃的学习项目。
标签:COFF文件格式, PE加载器, PE文件解析, Proton, Python, SPIR-V, Vulkan, Win32 API, Windows兼容性, Wine, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 图形学研究, 教育项目, 无后门, 映射技术, 着色器分析, 虚拟化, 软件架构, 逆向工具, 逆向工程, 静态分析