layeredtools/steamlayer-cli
GitHub: layeredtools/steamlayer-cli
自动化 Steam 游戏模拟环境搭建工具,一条命令完成 AppID 检测、DLC 信息获取、DLL 替换和 SteamStub DRM 剥离。
Stars: 2 | Forks: 0
# ⚠️ 此仓库已归档。
此项目已迁移至 monorepo。后续开发在 [layeredtools/steamlayer](https://github.com/layeredtools/steamlayer) 进行。
如果您之前将 `steamlayer-core` 作为库使用,它依然发布在 [PyPI](https://pypi.org/project/steamlayer-core/) 上并会继续得到维护。
## 📋 目录 - [🚀 功能介绍](#-what-it-does) - [📦 安装](#-installation) - [🛠️ 用法](#️-usage) - [⚙️ 工作原理](#️-how-it-works) - [🔍 AppID 检测](#-appid-detection) - [📦 DLC 元数据](#-dlc-metadata) - [🛡️ SteamStub 检测](#️-steamstub-detection) - [🛠️ 打补丁](#️-patching) - [🩹 还原](#-restore) - [📂 存储与缓存](#-storage--caching) - [🛠️ 常见问题](#️-troubleshooting) - [💻 开发](#-development) - [⚖️ 免责声明](#️-disclaimer) ## 🚀 功能介绍 `steamlayer` 可以自动完成设置游戏环境的繁琐手动工作。它能在一次操作中处理 AppID 发现、DLC 元数据获取、DLL 替换和 SteamStub 剥离——同时将您的原始文件安全地保存在托管库中。 * 🔍 **智能发现:** 自动过滤掉发布标签(如 FitGirl、RUNE 等)和版本号,以找到正确的 AppID。 * 📦 **DLC 支持:** 自动为模拟器生成 DLC 列表。 * 🛡️ **SteamStub 剥离:** 使用 Steamless 检测并解密 DRM。 * 🔒 **安全设计:** 原子化还原确保您的游戏文件随时可以恢复到原始状态。 ## 📦 安装 **前置条件:** * Python 3.13+ * Windows * 系统中需安装有 7-Zip,仅首次运行时需要(之后 steamlayer 会管理其自己的副本)。 ``` pip install steamlayer ``` ## 🛠️ 用法
` | 跳过自动检测并使用此 AppID |
| `-d`, `--dry-run` | 预览将要执行的操作,不实际修改任何文件 |
| `-n`, `--no-network` | 仅使用缓存数据,不发起网络请求 |
| `-r`, `--restore` | 还原原始 DLL 并进行清理 |
| `-u`, `--unpack` | 在打补丁前通过 Steamless 自动剥离 SteamStub DRM |
| `-y`, `--yolo` | 接受较低置信度的 AppID 匹配 |
| `-v` / `-vv` | 输出更多信息 (`-v` = info, `-vv` = debug) |
| `--cache-dir ` | 覆盖缓存位置 (默认: `~/.steamlayer/.cache`) |
| `--no-defender-check` | 跳过 Defender 警告 |
| `--version` | 打印版本号并退出 |
``` # Standard automatic patch steamlayer "C:\Games\Portal 2" # Explicit AppID if auto-detection fails steamlayer "C:\Games\Portal 2" --appid 620 # Strip SteamStub DRM automatically steamlayer "C:\Games\Portal 2" --unpack # Undo everything cleanly steamlayer "C:\Games\Portal 2" --restore ``` ## 🛡️ Windows Defender ## ⚙️ 工作原理 ### 🔍 AppID 检测 首先检查游戏文件夹中的 `steam_appid.txt` 或 `.acf` 清单文件。如果没有找到,它会搜索本地缓存的社区索引,然后回退到 Steam 商店 API。如果两个结果看起来可能性相当,它会提示您进行选择。传入 `--yolo` 可降低置信度阈值(对于续作或非标准文件夹名称很有用)。 ### 📦 DLC 元数据 从 Steam API 获取 DLC 列表,并使用相同的社区索引解析名称。索引中缺少的任何内容都会被单独查找。结果会缓存一周,因此重复运行速度非常快。 ⚡ ### 🛡️ SteamStub 检测 在打补丁之前,steamlayer 会扫描每个 DLL 所在目录中的所有 `.exe` 文件以查找 SteamStub DRM。它能识别 v1.x(通过 `SteamDRMP.dll` 导入)和 v3.x(通过 `.bind` 节中的 `0xCAFEDEAD` 头部魔数)。如果发现了加壳的可执行文件且未传入 `--unpack` 参数,它会向您发出警告。使用 `--unpack` 参数时,Steamless 会自动剥离 DRM,并且原始可执行文件将与 DLL 一起存入保管库。 ### 🛠️ 打补丁 查找游戏目录树中的所有 `steam_api.dll` 和 `steam_api64.dll`,将原始文件保管至 `/__original_files__/`,并复制正确的 Goldberg DLL(x32 或 x64)。配置文件放置在每个 DLL 旁边的 `steam_settings/` 文件夹中,另外在游戏根目录放置一个 `steam_appid.txt`。 🏗️
### 🩹 还原
将保管库中的 DLL(以及任何保管的可执行文件)移回原处,删除 `steam_settings/` 目录,清理散落的配置文件,并在保管库为空时将其移除。如果中途失败,再次运行也是安全的。 🔄
### 📂 存储与缓存
将所有下载的工具和缓存限制在 `~/.steamlayer/` 目录中。
`vendors/`:托管的 7-Zip、Goldberg 和 Steamless 便携版安装。 📥
`.cache/`:存储 Steam DLC 元数据(7 天 TTL),以实现瞬时重复运行。 🏎️
## 💻 开发
本项目使用 `uv` 进行依赖管理。
```
# 📂 Clone the repository
git clone https://github.com/layeredtools/steamlayer.git
cd steamlayer
# 🛠️ Install dependencies and setup environment
uv sync --all-groups
# 🧪 Run the test suite
uv run pytest
# 🧹 Lint and format code
uv run ruff check .
uv run ruff format .
```
## 🛠️ 常见问题
📦 **7-Zip 引导失败** — steamlayer 需要现有的 `7z.exe` 来拉取其自身的副本。请确保它在 `PATH` 中或安装在默认位置 (`C:\Program Files\7-Zip\`)。
🔍 **检测到错误的游戏** — 使用 `--appid`。您可以在 [SteamDB](https://www.steamdb.info) 或商店 URL 中找到正确的 ID。
🛡️ **Defender 在安装过程中隔离了文件** — 添加上述排除项并重新运行。steamlayer 将重新下载并干净地重试。
🔐 **运行时出现 SteamStub 警告** — 游戏可执行文件被 SteamDRM 加壳。重新运行时带上 `--unpack` 以自动剥离它,或者先使用 [Steamless](https://github.com/atom0s/Steamless) 手动解包。
🩹 **打补丁后游戏损坏** — 运行 `--restore`。如果此过程也中途失败,请再次运行——它将从中断处继续。
## ⚖️ 免责声明
此工具旨在供您在合法拥有的软件上使用。请负责任地使用。
# steamlayer
通过 [Goldberg emulator](https://github.com/Detanup01/gbe_fork) 为 Steam 游戏打补丁。
自动查找 AppID,获取 DLC 信息,替换 DLL,并备份原文件。只需一条命令。
## 📋 目录 - [🚀 功能介绍](#-what-it-does) - [📦 安装](#-installation) - [🛠️ 用法](#️-usage) - [⚙️ 工作原理](#️-how-it-works) - [🔍 AppID 检测](#-appid-detection) - [📦 DLC 元数据](#-dlc-metadata) - [🛡️ SteamStub 检测](#️-steamstub-detection) - [🛠️ 打补丁](#️-patching) - [🩹 还原](#-restore) - [📂 存储与缓存](#-storage--caching) - [🛠️ 常见问题](#️-troubleshooting) - [💻 开发](#-development) - [⚖️ 免责声明](#️-disclaimer) ## 🚀 功能介绍 `steamlayer` 可以自动完成设置游戏环境的繁琐手动工作。它能在一次操作中处理 AppID 发现、DLC 元数据获取、DLL 替换和 SteamStub 剥离——同时将您的原始文件安全地保存在托管库中。 * 🔍 **智能发现:** 自动过滤掉发布标签(如 FitGirl、RUNE 等)和版本号,以找到正确的 AppID。 * 📦 **DLC 支持:** 自动为模拟器生成 DLC 列表。 * 🛡️ **SteamStub 剥离:** 使用 Steamless 检测并解密 DRM。 * 🔒 **安全设计:** 原子化还原确保您的游戏文件随时可以恢复到原始状态。 ## 📦 安装 **前置条件:** * Python 3.13+ * Windows * 系统中需安装有 7-Zip,仅首次运行时需要(之后 steamlayer 会管理其自己的副本)。 ``` pip install steamlayer ``` ## 🛠️ 用法
📋 查看所有 CLI 选项
| 标志 | 描述 | |---|---| | `-a`, `--appid``` # Standard automatic patch steamlayer "C:\Games\Portal 2" # Explicit AppID if auto-detection fails steamlayer "C:\Games\Portal 2" --appid 620 # Strip SteamStub DRM automatically steamlayer "C:\Games\Portal 2" --unpack # Undo everything cleanly steamlayer "C:\Games\Portal 2" --restore ``` ## 🛡️ Windows Defender ## ⚙️ 工作原理 ### 🔍 AppID 检测 首先检查游戏文件夹中的 `steam_appid.txt` 或 `.acf` 清单文件。如果没有找到,它会搜索本地缓存的社区索引,然后回退到 Steam 商店 API。如果两个结果看起来可能性相当,它会提示您进行选择。传入 `--yolo` 可降低置信度阈值(对于续作或非标准文件夹名称很有用)。 ### 📦 DLC 元数据 从 Steam API 获取 DLC 列表,并使用相同的社区索引解析名称。索引中缺少的任何内容都会被单独查找。结果会缓存一周,因此重复运行速度非常快。 ⚡ ### 🛡️ SteamStub 检测 在打补丁之前,steamlayer 会扫描每个 DLL 所在目录中的所有 `.exe` 文件以查找 SteamStub DRM。它能识别 v1.x(通过 `SteamDRMP.dll` 导入)和 v3.x(通过 `.bind` 节中的 `0xCAFEDEAD` 头部魔数)。如果发现了加壳的可执行文件且未传入 `--unpack` 参数,它会向您发出警告。使用 `--unpack` 参数时,Steamless 会自动剥离 DRM,并且原始可执行文件将与 DLL 一起存入保管库。 ### 🛠️ 打补丁 查找游戏目录树中的所有 `steam_api.dll` 和 `steam_api64.dll`,将原始文件保管至 `
标签:AppID自动识别, DLC信息获取, DLL劫持, Goldberg模拟器, layeredtools, Python, SteamStub检测, Steam模拟器, 二进制文件补丁, 云资产清单, 免Steam运行, 无后门, 游戏修改, 游戏破解, 逆向工具, 逆向工程