{"id":44707543,"url":"https://github.com/yuaotian/antigravity-proxy","last_synced_at":"2026-02-15T11:11:01.103Z","repository":{"id":333629754,"uuid":"1130311831","full_name":"yuaotian/antigravity-proxy","owner":"yuaotian","description":"🚀 Transparent proxy injector for Antigravity. Force SOCKS5/HTTP proxy without TUN mode on Windows. | 专为 Antigravity 打造的免 TUN 强制代理工具，支持 DLL 注入与进程流量劫持。","archived":false,"fork":false,"pushed_at":"2026-02-03T19:28:48.000Z","size":59069,"stargazers_count":1329,"open_issues_count":19,"forks_count":127,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-02-04T04:28:55.099Z","etag":null,"topics":["antigravity","dll-injection","force-proxy-network-hook","http-proxy","minhook","no-tun","proxy","socks5","transparent-proxy","windows-proxy"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/yuaotian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.txt","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-08T10:23:46.000Z","updated_at":"2026-02-04T04:01:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/yuaotian/antigravity-proxy","commit_stats":null,"previous_names":["yuaotian/antigravity-proxy"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/yuaotian/antigravity-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuaotian%2Fantigravity-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuaotian%2Fantigravity-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuaotian%2Fantigravity-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuaotian%2Fantigravity-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/yuaotian","download_url":"https://codeload.github.com/yuaotian/antigravity-proxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/yuaotian%2Fantigravity-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29476300,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T10:25:47.032Z","status":"ssl_error","status_checked_at":"2026-02-15T10:25:01.815Z","response_time":118,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["antigravity","dll-injection","force-proxy-network-hook","http-proxy","minhook","no-tun","proxy","socks5","transparent-proxy","windows-proxy"],"created_at":"2026-02-15T11:11:00.368Z","updated_at":"2026-02-15T11:11:01.086Z","avatar_url":"https://github.com/yuaotian.png","language":"C++","funding_links":[],"categories":["🔧 网络工具 \u0026 代理框架"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/antigravity_logo.png\" alt=\"Antigravity Logo\" width=\"120\"/\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eAntigravity-Proxy\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cb\u003e🚀 专为 Antigravity 编辑器打造：在中国也能无需 TUN 模式稳定走代理\u003c/b\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/yuaotian/antigravity-proxy/actions\"\u003e\u003cimg src=\"https://github.com/yuaotian/antigravity-proxy/actions/workflows/build.yml/badge.svg\" alt=\"Build Status\"/\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE.txt\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-BSD--2--Clause-blue.svg\" alt=\"License\"/\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-Windows%20x86%20%7C%20x64-lightgrey.svg\" alt=\"Platform\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/C%2B%2B-17-00599C.svg\" alt=\"C++17\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/hook-MinHook-orange.svg\" alt=\"MinHook\"/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"README_EN.md\"\u003e🇬🇧 English Version\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## 📖 目录 / Table of Contents\n\n- [📖 项目介绍 / Introduction](#-项目介绍--introduction)\n- [⚡ Antigravity 快速开始 / Quick Start](#-antigravity-快速开始--quick-start)\n- [🔧 故障排查自查手册 / Troubleshooting Guide](#-故障排查自查手册--troubleshooting-guide)\n- [✨ 功能特性 / Features](#-功能特性--features)\n- [🔧 工作原理 / How It Works](#-工作原理--how-it-works)\n- [🛠️ 编译构建 / Build](#️-编译构建--build)\n- [📝 使用方法 / Usage](#-使用方法--usage)\n- [🐧 WSL 环境使用指南 / WSL Guide](#-wsl-环境使用指南--wsl-guide)\n- [🚀 进阶玩法 / Advanced Usage](#-进阶玩法--advanced-usage)\n- [📄 许可证 / License](#-许可证--license)\n- [👤 关于作者 / Author](#-关于作者--author)\n\n---\n\n## 📖 项目介绍 / Introduction\n\n**Antigravity-Proxy** 是专门为 **Antigravity 编辑器**量身定制的 Windows 代理注入组件（DLL）。\n\n它的目标很简单：让中国用户使用 Antigravity 时，**不用开 Clash TUN 模式**，也能把网络流量稳定交给你的 SOCKS5/HTTP 代理。\n\n\u003e 项目名 **Antigravity-Proxy** = Antigravity + Proxy：只把 Antigravity 相关进程的流量“拽”进代理里（别担心，不会全局接管）。\n\n### 🎯 解决的痛点 / Problem Solved\n\n你是否遇到过这些情况？\n\n- 🔴 使用 Antigravity 时**不走系统代理**，只能被迫开启 Clash TUN 模式\n- 🔴 开启 TUN 模式后**全局流量都被代理**，影响本地开发\n- 🔴 TUN 模式需要**管理员权限**，某些环境不允许\n\n**Antigravity-Proxy 就是来专治这个的。** 它可以：\n\n- ✅ **仅代理指定程序**（默认面向 Antigravity 相关进程），不影响其他流量\n- ✅ **无需 TUN 模式**，避免全局接管\n- ✅ **透明代理**，目标程序完全无感知\n\n### 🌟 核心价值 / Core Value\n\n| 传统方案 | Antigravity-Proxy |\n|---------|-------------------|\n| 需要 TUN 模式 | 无需 TUN |\n| 全局代理 | 精准代理指定进程 |\n| 需要管理员权限 | 普通用户即可 |\n| 配置复杂 | 放入 DLL 即用 |\n\n---\n\n\n## ⚠️ 环境要求 / Prerequisites\n\n\u003e 在使用本工具前，请确保系统已安装必要的运行库，否则可能无法正常启动目标程序。\n\n### 常见问题：0xc0000142 错误\n\n如果启动程序时遇到 **错误代码 0xc0000142**（如下图所示），通常是由于系统缺少 Windows 运行库导致的。\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"img/error/win_error_0xc0000142.png\" alt=\"0xc0000142 错误截图\" width=\"400\"/\u003e\n\u003c/p\u003e\n\n### 解决方案\n\n请安装 **微软常用运行库合集**，该工具已包含在本仓库中：\n\n📦 **下载路径**: [`microsoft\\微软常用运行库合集-2025.exe`](microsoft/微软常用运行库合集-2025.exe)\n\n**安装步骤：**\n1. 进入本仓库的 `microsoft` 目录\n2. 运行 `微软常用运行库合集-2025.exe`\n3. 按照安装向导完成安装\n4. 重新启动目标程序\n\n---\n\n## ⚡ Antigravity 快速开始 / Quick Start\n\n\u003e 只想让 Antigravity 立刻能用？看这一节就够了。\n\n### Step 1: 准备代理 / Prepare a Proxy\n\n启动你的代理软件（例如 Clash/Mihomo），确保本机有可用的 SOCKS5 或 HTTP 代理端口（如 `127.0.0.1:7890`）。\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e📋 常用代理软件端口速查表（点击展开）\u003c/b\u003e\u003c/summary\u003e\n\n#### 各代理软件默认端口\n\n| 代理软件 | SOCKS5 端口 | HTTP 端口 | 混合端口 | 备注 |\n|----------|-------------|-----------|----------|------|\n| **Clash / Clash Verge** | 7891 | 7890 | 7890 | 混合端口同时支持 SOCKS5 和 HTTP |\n| **Clash for Windows** | 7891 | 7890 | 7890 | 设置 → Ports 可查看/修改 |\n| **Mihomo (Clash Meta)** | 7891 | 7890 | 7890 | 同 Clash 配置格式 |\n| **V2RayN** | 10808 | 10809 | - | 设置 → 参数设置 → Core 基础设置 |\n| **V2RayA** | 20170 | 20171 | - | 后台管理页面可修改 |\n| **Shadowsocks** | 1080 | - | - | 仅 SOCKS5，无 HTTP |\n| **ShadowsocksR** | 1080 | - | - | 仅 SOCKS5，无 HTTP |\n| **Surge (Mac/iOS)** | 6153 | 6152 | - | 增强模式下端口可能不同 |\n| **Qv2ray** | 1089 | 8889 | - | 首选项 → 入站设置 |\n| **sing-box** | 自定义 | 自定义 | 自定义 | 需在配置文件中手动指定 |\n| **NekoBox** | 2080 | 2081 | - | 设置 → 入站 |\n| **Clash Meta for Android** | 7891 | 7890 | 7890 | 同 Clash 规则 |\n\n\u003e 💡 **推荐使用 SOCKS5 协议**：本工具对 SOCKS5 的支持更完善，建议优先使用。\n\n#### 如何确认代理端口是否开启？\n\n**方法 1：查看代理软件界面**\n- 大多数代理软件会在主界面或设置中显示当前监听端口\n\n**方法 2：命令行测试**\n```powershell\n# 测试 SOCKS5 端口 (默认 7891)\nTest-NetConnection -ComputerName 127.0.0.1 -Port 7891\n\n# 测试 HTTP 端口 (默认 7890)\nTest-NetConnection -ComputerName 127.0.0.1 -Port 7890\n```\n\n**方法 3：curl 测试（需安装 curl）**\n```bash\n# 通过 SOCKS5 代理访问\ncurl -x socks5://127.0.0.1:7891 https://www.google.com -I\n\n# 通过 HTTP 代理访问\ncurl -x http://127.0.0.1:7890 https://www.google.com -I\n```\n\n#### 常见端口问题及解决\n\n| 问题 | 原因 | 解决方案 |\n|------|------|----------|\n| 端口被占用 | 其他程序使用了该端口 | `netstat -ano | findstr :7890` 查找占用进程 |\n| 连接被拒绝 | 代理软件未启动或端口错误 | 确认代理软件已启动，检查端口配置 |\n| 代理无响应 | 防火墙阻止 | 检查 Windows 防火墙设置 |\n\n\u003c/details\u003e\n\n### Step 2: 准备文件 / Get the Files\n\n准备两份文件：\n- `version.dll`\n- `config.json`\n\n（可以从 Release 下载，或自行编译生成。）\n\n### Step 3: 部署到 Antigravity / Deploy to Antigravity\n\n把 `version.dll` 和 `config.json` 复制到 **Antigravity 主程序目录**（与 `Antigravity.exe` 同级）。然后启动 Antigravity，搞定。\n\n#### Windows 常见目录 + 快速跳转\n\n一般情况下 Antigravity 会装在：\n\n例如：`C:\\Users\\\u003c用户名\u003e\\AppData\\Local\\Programs\\Antigravity`\n\n如果你找不到这个目录：在桌面/开始菜单找到 Antigravity 图标，**右键 → 打开文件所在的位置**，跳出来的那个目录就是它的主程序目录。\n\n想从命令行一键跳过去（少点鼠标，多点快乐）：\n\n```powershell\ncd \"$env:LOCALAPPDATA\\Programs\\Antigravity\"\n```\n\n```bat\ncd /d \"%LOCALAPPDATA%\\Programs\\Antigravity\"\n```\n\n（可选）你也可以自己设个环境变量，之后就能 `cd` 秒过去：\n\n```bat\nsetx ANTIGRAVITY_HOME \"%LOCALAPPDATA%\\Programs\\Antigravity\"\n```\n\n设置完后：PowerShell 用 `cd $env:ANTIGRAVITY_HOME`，CMD 用 `cd /d %ANTIGRAVITY_HOME%`。\n\n\n## 🔧 故障排查自查手册 / Troubleshooting Guide\n\n\u003e 代理不工作？按照本手册逐步排查，找到问题根源。\n\n### 📋 快速诊断流程图\n\n```\n代理不工作？\n    │\n    ├── 检查日志是否存在 ───────────────────────────────────┐\n    │       │                                               │\n    │       ├── ❌ 无日志 → DLL未加载/位置错误               │\n    │       │       └── 见「DLL 加载问题」                   │\n    │       │                                               │\n    │       └── ✅ 有日志 → 继续检查日志内容                │\n    │               │                                       │\n    ├── 日志中有 \"SOCKS5: 隧道建立成功\" 吗？ ────────────────┤\n    │       │                                               │\n    │       ├── ❌ 没有 → 代理连接失败                      │\n    │       │       └── 见「代理软件排查」                   │\n    │       │                                               │\n    │       └── ✅ 有 → 隧道建立成功，问题在后续            │\n    │               │                                       │\n    └── 检查 Clash 日志和节点可用性 ──────────────────────────┘\n```\n\n---\n\n### 🔍 第一步：检查日志文件\n\n日志是排查问题的第一手资料。\n\n**日志位置**（按优先级）：\n1. `\u003cAntigravity安装目录\u003e\\logs\\proxy-YYYYMMDD.log`\n2. `%TEMP%\\antigravity-proxy-logs\\proxy-YYYYMMDD.log`\n\n**快速打开**：\n```powershell\n# 打开 DLL 目录的 logs 文件夹\ncd \"$env:LOCALAPPDATA\\Programs\\Antigravity\\logs\"\n\n# 或打开 TEMP 目录\ncd \"$env:TEMP\\antigravity-proxy-logs\"\n```\n\n**日志关键行解读**：\n\n| 日志内容 | 含义 | 状态 |\n|---------|------|------|\n| `Antigravity-Proxy DLL 已加载` | DLL 成功注入 | ✅ 正常 |\n| `配置加载成功` | config.json 读取成功 | ✅ 正常 |\n| `所有 API Hook 安装成功` | Hook 生效 | ✅ 正常 |\n| `ConnectEx Hook 已安装` | 异步连接 Hook 成功 | ✅ 正常 |\n| `SOCKS5: 隧道建立成功` | 代理连接成功 | ✅ 正常 |\n| `非 SOCK_STREAM socket 直连, soType=2` | UDP 未走代理（`udp_mode=direct` 或未启用 UDP 代理） | ⚠️ 视配置而定 |\n| `SOCKS5 握手失败` | 代理握手失败 | ❌ 需排查 |\n| `连接代理服务器失败` | 无法连接到代理 | ❌ 需排查 |\n| `WSA错误码=10061` | 连接被拒绝（代理未启动） | ❌ 需排查 |\n| `WSA错误码=10060` | 连接超时 | ❌ 需排查 |\n\n---\n\n### 🌐 第二步：代理软件排查\n\n#### 2.1 确认代理端口可用\n\n```powershell\n# 测试 SOCKS5/混合端口\nTest-NetConnection -ComputerName 127.0.0.1 -Port 7890\n\n# 如果 TcpTestSucceeded: False，说明端口未监听\n```\n\n#### 2.2 确认 Clash 配置正确\n\n在 Clash 配置文件中检查：\n\n```yaml\n# 必须开启混合端口或 SOCKS5 端口\nmixed-port: 7890     # 混合端口（推荐）\n# 或\nport: 7890           # HTTP 端口\nsocks-port: 7891     # SOCKS5 端口\n\n# 如果需要局域网访问\nallow-lan: true\n```\n\n#### 2.3 检查 Clash 日志\n\n在 Clash 界面查看「日志」或「Logs」，确认：\n- 是否有来自 `daily-cloudcode-pa.googleapis.com`、`www.googleapis.com` 的请求\n- 请求是 `DIRECT`（直连）还是走了代理节点\n- 是否有 `REJECT` 规则命中\n\n#### 2.4 测试节点可用性\n\n最简单的方法：直接开启 **TUN 模式**，如果 TUN 模式下 Antigravity 正常，说明节点没问题。\n\n---\n\n### 💻 第三步：系统环境排查\n\n#### 3.1 检查 Windows 版本\n\n```powershell\nwinver\n```\n\n不同 Windows 11 小版本的 Winsock 行为可能有差异。请记录版本号备用。\n\n#### 3.2 检查 Winsock LSP 配置\n\n某些安全软件会注入 LSP（分层服务提供程序），可能干扰 Hook。\n\n```powershell\n# 以管理员身份运行\nnetsh winsock show catalog\n```\n\n正常情况下只应该有 Microsoft 的 Provider。如果看到第三方 Provider（如 360、火绒等），可能会有兼容性问题。\n\n#### 3.3 检查安全软件\n\n以下软件可能干扰 DLL 注入或 Hook：\n\n| 软件 | 可能的影响 | 解决方案 |\n|------|-----------|----------|\n| **360 安全卫士** | 拦截 DLL 注入、Hook | 添加白名单或临时关闭 |\n| **火绒安全** | 可能阻止远程线程注入 | 添加白名单 |\n| **腾讯电脑管家** | LSP 注入可能干扰网络 | 添加白名单 |\n| **Windows Defender** | 通常不干扰 | 无需处理 |\n\n**临时排查**：尝试完全退出安全软件后测试（不只是退到托盘，要完全退出）。\n\n#### 3.4 检查 IPv6 配置\n\n如果系统启用了 IPv6，某些连接可能尝试 IPv6 优先：\n\n```powershell\n# 查看网络适配器 IPv6 状态\nGet-NetAdapterBinding -ComponentID ms_tcpip6\n```\n\n如果日志中出现大量 IPv6 相关内容，可以尝试在 `config.json` 中设置：\n\n```json\n\"proxy_rules\": {\n    \"ipv6_mode\": \"block\"\n}\n```\n\n---\n\n### 🔄 第四步：对比排查（与正常环境对比）\n\n如果你的环境正常，但朋友的不行，请对比以下信息：\n\n| 对比项 | 你的值 | 对方的值 |\n|-------|--------|----------|\n| Windows 版本 (winver) | | |\n| Clash 版本 | | |\n| 代理端口 | 7890 | |\n| 代理类型 | socks5 | |\n| 是否有安全软件 | | |\n| `netsh winsock show catalog` 输出行数 | | |\n\n---\n\n### 📊 第五步：收集信息提交 Issue\n\n如果以上排查都无法解决，请收集以下信息提交 [GitHub Issue](https://github.com/yuaotian/antigravity-proxy/issues)：\n\n1. **日志文件**：完整的 `proxy-YYYYMMDD.log` 内容\n2. **config.json**：你的配置文件（隐藏敏感信息）\n3. **Windows 版本**：`winver` 输出\n4. **Clash 版本和配置**（端口设置部分）\n5. **安全软件列表**：已安装的杀软/安全软件\n6. **问题描述**：具体什么功能不工作？打开什么网站/功能时失败？\n\n---\n\n### ⚠️ 已知兼容性问题\n\n| 问题 | 原因 | 解决方案 |\n|------|------|----------|\n| **大量 `非 SOCK_STREAM socket 直连, soType=2`** | UDP/QUIC 流量未走代理（`udp_mode=direct` 或 UDP 代理未生效） | 若需要 QUIC/HTTP3：设置 `udp_mode=proxy` + `proxy.type=socks5`，并确保代理端支持 SOCKS5 UDP Associate |\n| **日志显示成功但网页打不开** | Clash 规则、节点问题 | 检查 Clash 日志 |\n| **某些请求绕过代理** | 应用使用了未 Hook 的 API | 提交 Issue 反馈 |\n| **360 等安全软件环境下失效** | LSP 注入干扰 | 添加白名单或卸载 |\n\n---\n\n## ❓ DLL常见问题与错误码 / Common Errors and Error Codes\n\n\u003e 遇到问题时，建议先确认目标程序位数（x86/x64），并查看目标程序目录下的日志文件（如 `proxy-YYYYMMDD.log`）。\n\n### 已知错误码\n\n| 错误码 | 问题描述 | 可能原因 | 解决方案 |\n|--------|----------|----------|----------|\n| `0xC0000142` | 应用程序无法正常启动（已知：部分环境使用 x64 版本会出现此错误，切换到 x86 版本可以正常运行） | 架构不兼容（目标程序为 x86，但放入了 x64 的 `version.dll`）\u003cbr\u003e依赖库缺失或版本不匹配（常见：VC++ 运行库未安装/版本不一致）\u003cbr\u003e安全软件拦截/隔离导致初始化失败 | 使用与目标程序一致的版本（x86 程序用 x86，x64 程序用 x64）\u003cbr\u003e安装对应架构的 VC++ 2015-2022 运行库（尤其是 x64）\u003cbr\u003e尝试使用静态运行库构建：`.\\build.ps1 -StaticRuntime` |\n\n### 其他常见错误码\n\n| 错误码 | 问题描述 | 可能原因 | 解决方案 |\n|--------|----------|----------|----------|\n| `0xC000007B` | 应用程序无法正常启动（常见于位数不匹配） | `version.dll` 与目标程序位数不一致（x86/x64 混用）\u003cbr\u003e依赖 DLL 位数不一致或文件损坏 | 确保 `version.dll` 与目标程序位数一致，并替换为对应版本产物\u003cbr\u003e清理目标目录中可能残留的旧 DLL 后重试 |\n| `0xC0000135` | 找不到组件/缺少 DLL，程序无法启动 | 依赖库缺失（常见：VC++ 运行库 DLL 缺失）\u003cbr\u003e依赖库被安全软件删除/隔离 | 安装对应架构的 VC++ 2015-2022 运行库\u003cbr\u003e或使用静态运行库构建：`.\\build.ps1 -StaticRuntime` |\n| `VCRUNTIME140_1.dll 缺失` | 启动时报“找不到 VCRUNTIME140_1.dll” | VC++ 2015-2022 运行库未安装或被安全软件删除 | 安装对应架构的 VC++ 2015-2022 运行库（x64/x86）\u003cbr\u003e或使用静态运行库构建：`.\\build.ps1 -StaticRuntime` |\n| `0xC0000906` | 应用程序无法正常启动 | 文件被安全软件拦截/隔离\u003cbr\u003e文件不完整或已损坏 | 重新获取/重新编译 DLL 并替换\u003cbr\u003e将目标程序目录加入安全软件白名单/排除项后重试 |\n| `0xC0000005` | 程序启动后闪退/崩溃（事件查看器常见） | Hook 与目标程序/系统环境不兼容\u003cbr\u003e目标进程范围过大，误注入导致冲突 | 缩小 `target_processes` 仅代理必要进程\u003cbr\u003e必要时关闭 `child_injection` 或 `fake_ip` 排查 |\n| `10061 (WSAECONNREFUSED)` | 代理连接被拒绝（通常会出现在日志里） | 代理软件未启动或端口未监听\u003cbr\u003e`config.json` 中代理地址/端口错误 | 启动代理软件并确认端口可用（如 `127.0.0.1:7890`）\u003cbr\u003e检查并修正 `config.json` 的 `proxy.host/proxy.port` |\n| `10060 (WSAETIMEDOUT)` | 连接超时（通常会出现在日志里） | 代理不可达/网络被阻断\u003cbr\u003e超时配置过短 | 检查代理与网络状态后重试\u003cbr\u003e适当增大 `config.json` 的 `timeout.connect/send/recv` |\n\n\n\n## ✨ 功能特性 / Features\n\n| 功能 | 说明 | Feature | Description |\n|------|------|---------|-------------|\n| 🔀 **代理重定向** | 拦截 `connect()` 调用，重定向至代理服务器 | Proxy Redirect | Intercepts `connect()` and redirects to proxy |\n| 🌐 **FakeIP 系统** | 拦截 DNS 解析，分配虚拟 IP 并建立映射 | FakeIP System | Intercepts DNS, allocates virtual IPs |\n| 👶 **子进程注入** | 自动将 DLL 注入到子进程 | Child Injection | Auto-injects DLL into child processes |\n| ⏱️ **超时控制** | 防止目标程序因网络问题卡死 | Timeout Control | Prevents hanging on network issues |\n| 🔄 **Fail-Safe** | 配置加载失败时自动直连 | Fail-Safe | Falls back to direct connection on error |\n| 🎯 **进程过滤** | 仅代理指定的进程列表 | Process Filter | Proxy only specified processes |\n| 📊 **流量监控** | 可选的流量日志记录 | Traffic Monitor | Optional traffic logging |\n\n### 支持的代理协议 / Supported Protocols\n\n- ✅ SOCKS5 (推荐 / Recommended)\n- ✅ HTTP CONNECT\n\n---\n\n## 🔧 工作原理 / How It Works\n\n### 整体架构 / Architecture\n\n```\n┌─────────────────────────────────────────────────────────────────────────┐\n│                           目标程序 (Target Process)                       │\n│  ┌──────────────┐    ┌──────────────┐    ┌──────────────────────────┐   │\n│  │  应用代码     │───►│ Winsock API  │───►│  antigravity-proxy.dll   │   │\n│  │  (App Code)  │    │ (ws2_32.dll) │    │  (Hook Layer)            │   │\n│  └──────────────┘    └──────────────┘    └────────────┬─────────────┘   │\n│                                                       │                  │\n└───────────────────────────────────────────────────────│──────────────────┘\n                                                        ▼\n                                              ┌──────────────────┐\n                                              │   代理服务器      │\n                                              │  (SOCKS5/HTTP)   │\n                                              │  Proxy Server    │\n                                              └──────────────────┘\n```\n\n### 核心流程 / Core Flow\n\n```\n┌─────────────────────────────────────────────────────────────────────────┐\n│ 1. DLL 劫持 (DLL Hijacking)                                              │\n│    程序加载 version.dll → 加载我们的 DLL → 转发真实 version.dll 调用      │\n└─────────────────────────────────────────────────────────────────────────┘\n                                    ▼\n┌─────────────────────────────────────────────────────────────────────────┐\n│ 2. API Hook 安装 (Install Hooks)                                         │\n│    使用 MinHook 拦截: connect, getaddrinfo, CreateProcessW 等           │\n└─────────────────────────────────────────────────────────────────────────┘\n                                    ▼\n┌─────────────────────────────────────────────────────────────────────────┐\n│ 3. DNS 拦截 (DNS Interception)                                           │\n│    getaddrinfo(\"example.com\") → 分配 FakeIP (198.18.x.x) → 记录映射       │\n└─────────────────────────────────────────────────────────────────────────┘\n                                    ▼\n┌─────────────────────────────────────────────────────────────────────────┐\n│ 4. 连接重定向 (Connection Redirect)                                       │\n│    connect(198.18.x.x) → 查询映射还原域名 → 连接代理 → SOCKS5 握手         │\n└─────────────────────────────────────────────────────────────────────────┘\n                                    ▼\n┌─────────────────────────────────────────────────────────────────────────┐\n│ 5. 子进程传播 (Child Process Propagation)                                │\n│    CreateProcessW → 挂起进程 → 注入 DLL → 恢复运行                       │\n└─────────────────────────────────────────────────────────────────────────┘\n```\n\n### Hook 的 API 列表 / Hooked APIs\n\n| API | 模块 | 用途 |\n|-----|------|------|\n| `connect` | ws2_32.dll | 拦截 TCP 连接 |\n| `WSAConnect` | ws2_32.dll | 拦截 WSA 方式连接 |\n| `getaddrinfo` | ws2_32.dll | 拦截 DNS 解析 (ANSI) |\n| `GetAddrInfoW` | ws2_32.dll | 拦截 DNS 解析 (Unicode) |\n| `WSAConnectByNameA/W` | ws2_32.dll | 拦截按名称连接 |\n| `ConnectEx` | ws2_32.dll | 拦截异步连接 |\n| `CreateProcessW` | kernel32.dll | 拦截进程创建，注入子进程 |\n| `send/recv` | ws2_32.dll | 流量监控（可选） |\n\n---\n\n## 🛠️ 编译构建 / Build\n\n### 环境要求 / Prerequisites\n\n在开始编译之前，请确保已安装以下工具：\n\n| 依赖项 | 版本要求 | 用途 | 下载链接 |\n|--------|----------|------|----------|\n| **Visual Studio 2022** | 2022 或更高 | C/C++ 编译器 | [下载](https://visualstudio.microsoft.com/) |\n| **CMake** | \u003e= 3.0 | 构建系统 | [下载](https://cmake.org/download/) |\n| **PowerShell** | 5.0+ | 编译脚本 | Windows 自带 |\n\n\u003e 💡 **提示**: 安装 Visual Studio 时，请确保勾选 **\"使用 C++ 的桌面开发\"** 工作负载。\n\n### 依赖项 / Dependencies\n\n| 依赖 | 说明 | 获取方式 |\n|------|------|----------|\n| **MinHook** | API Hook 框架 | 已内置于项目 |\n| **nlohmann/json** | JSON 解析库 | 编译脚本自动下载 |\n\n### 一键编译 / Quick Build\n\n项目提供了 PowerShell 编译脚本，支持一键编译：\n\n```powershell\n# 默认编译 Release x64\n.\\build.ps1\n\n# 编译 Debug 版本\n.\\build.ps1 -Config Debug\n\n# 编译 32 位版本\n.\\build.ps1 -Arch x86\n\n# 清理后重新编译\n.\\build.ps1 -Clean\n\n# 查看帮助\n.\\build.ps1 -Help\n```\n\n### 手动编译 / Manual Build\n\n如果你更喜欢手动编译，也可以使用以下命令：\n\n```bash\n# ========== x64 (64位) ==========\nmkdir build-x64 \u0026\u0026 cd build-x64\n\n# 配置 (使用 Visual Studio 2022)\ncmake .. -G \"Visual Studio 17 2022\" -A x64\n\n# 编译 Release 版本\ncmake --build . --config Release\n\n# 输出: version.dll\n\n\n# ========== x86 (32位) ==========\nmkdir build-x86 \u0026\u0026 cd build-x86\n\n# 配置\ncmake .. -G \"Visual Studio 17 2022\" -A Win32\n\n# 编译\ncmake --build . --config Release\n\n# 输出: version.dll\n```\n\n### 常见编译错误 / Common Build Errors\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e❌ 错误: \"CMake 未找到\"\u003c/b\u003e\u003c/summary\u003e\n\n**原因**: CMake 未安装或未添加到 PATH\n\n**解决方案**:\n1. 下载并安装 [CMake](https://cmake.org/download/)\n2. 安装时勾选 \"Add CMake to the system PATH\"\n3. 重启终端后重试\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e❌ 错误: \"No CMAKE_CXX_COMPILER could be found\"\u003c/b\u003e\u003c/summary\u003e\n\n**原因**: Visual Studio 未安装或 C++ 工具链缺失\n\n**解决方案**:\n1. 打开 Visual Studio Installer\n2. 确保安装了 **\"使用 C++ 的桌面开发\"** 工作负载\n3. 或者使用 Developer Command Prompt 运行编译命令\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e❌ 错误: 找不到 nlohmann/json.hpp\u003c/b\u003e\u003c/summary\u003e\n\n**原因**: JSON 库未下载\n\n**解决方案**:\n使用编译脚本 `build.ps1` 会自动下载，或手动下载：\n```bash\n# 手动下载\ncurl -o include/nlohmann/json.hpp https://raw.githubusercontent.com/nlohmann/json/develop/single_include/nlohmann/json.hpp\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e❌ 错误: LNK2019 unresolved external symbol\u003c/b\u003e\u003c/summary\u003e\n\n**原因**: 链接错误，通常是 Winsock 库未链接\n\n**解决方案**:\n确保 CMakeLists.txt 中包含:\n```cmake\ntarget_link_libraries(version PRIVATE ws2_32)\n```\n\u003c/details\u003e\n\n---\n\n## 📝 使用方法 / Usage\n\n### 快速开始 / Quick Start\n\n**只需 3 步，即可让目标程序走代理！**\n\n#### Step 1: 准备文件 / Prepare Files\n\n编译完成后，你会在 `output` 目录得到：\n- `version.dll` - 代理 DLL\n- `config.json` - 配置文件\n\n#### Step 2: 配置代理 / Configure Proxy\n\n编辑 `config.json`：\n\n```json\n{\n    \"proxy\": {\n        \"host\": \"127.0.0.1\",\n        \"port\": 7890,\n        \"type\": \"socks5\"\n    },\n    \"fake_ip\": {\n        \"enabled\": true,\n        \"cidr\": \"198.18.0.0/15\"\n    },\n    \"timeout\": {\n        \"connect\": 5000,\n        \"send\": 5000,\n        \"recv\": 5000\n    },\n    \"child_injection\": true,\n    \"target_processes\": [],\n    \"proxy_rules\": {\n        \"allowed_ports\": [80, 443],\n        \"dns_mode\": \"direct\",\n        \"ipv6_mode\": \"proxy\"\n    }\n}\n```\n\n#### Step 3: 部署 DLL / Deploy DLL\n\n将 `version.dll` 和 `config.json` 复制到目标程序的**同一目录**：\n\n```\n目标程序目录/\n├── 目标程序.exe\n├── version.dll      ← 放这里\n└── config.json      ← 放这里\n```\n\n启动目标程序，完成！🎉\n\n### 配置文件详解 / Configuration Reference\n\n| 配置项 | 类型 | 默认值 | 说明 |\n|--------|------|--------|------|\n| `proxy.host` | string | `\"127.0.0.1\"` | 代理服务器地址 |\n| `proxy.port` | int | `7890` | 代理服务器端口 |\n| `proxy.type` | string | `\"socks5\"` | 代理类型: `socks5` 或 `http`（兼容 `https`，按 `http` 处理） |\n| `fake_ip.enabled` | bool | `true` | 是否启用 FakeIP 系统 |\n| `fake_ip.cidr` | string | `\"198.18.0.0/15\"` | FakeIP 地址范围 (基准测试保留网段) |\n| `timeout.connect` | int | `5000` | 连接超时 (毫秒) |\n| `timeout.send` | int | `5000` | 发送超时 (毫秒) |\n| `timeout.recv` | int | `5000` | 接收超时 (毫秒) |\n| `child_injection` | bool | `true` | 是否注入子进程 |\n| `traffic_logging` | bool | `false` | 是否记录流量日志 |\n| `target_processes` | array | `[]` | 目标进程列表 (空=全部) |\n| `proxy_rules.allowed_ports` | array | `[80, 443]` | 端口白名单 (空=全部) |\n| `proxy_rules.dns_mode` | string | `\"direct\"` | DNS策略: `direct`(直连) / `proxy`(走代理) |\n| `proxy_rules.ipv6_mode` | string | `\"proxy\"` | IPv6策略: `proxy`(走代理) / `direct`(直连) / `block`(阻止) |\n| `proxy_rules.udp_mode` | string | `\"block\"` | UDP策略: `block`(阻断) / `direct`(直连) / `proxy`(走代理, 需 SOCKS5 UDP Associate) |\n| `proxy_rules.udp_fallback` | string | `\"block\"` | UDP 代理失败降级策略（仅 `udp_mode=proxy` 生效）: `block`(失败即阻断, 默认) / `direct`(失败回退直连, 有泄漏风险) |\n| `proxy_rules.routing.enabled` | bool | `true` | 是否启用规则路由 |\n| `proxy_rules.routing.priority_mode` | string | `\"order\"` | 规则优先级: `order`(按顺序) / `number`(priority) |\n| `proxy_rules.routing.default_action` | string | `\"proxy\"` | 未命中时默认动作 |\n| `proxy_rules.routing.use_default_private` | bool | `true` | 自动加载 RFC1918/loopback 内网直连规则 |\n| `proxy_rules.routing.rules` | array | `[]` | 规则列表（支持 CIDR/域名通配符/端口/协议） |\n\n### 规则路由 / Routing Rules\n\n路由规则由 `proxy_rules.routing` 管理，支持 CIDR/域名通配符/端口/协议分流，优先级可选 `order`(按顺序) 或 `number`(priority)。\n\n```json\n{\n  \"proxy_rules\": {\n    \"routing\": {\n      \"enabled\": true,\n      \"priority_mode\": \"order\",\n      \"default_action\": \"proxy\",\n      \"use_default_private\": true,\n      \"rules\": [\n        {\n          \"name\": \"lan-direct\",\n          \"action\": \"direct\",\n          \"ip_cidrs_v4\": [\"10.0.0.0/8\",\"172.16.0.0/12\",\"192.168.0.0/16\"],\n          \"ip_cidrs_v6\": [\"fc00::/7\",\"fe80::/10\",\"::1/128\"],\n          \"domains\": [\".local\",\"*.corp.example.com\"],\n          \"protocols\": [\"tcp\"]\n        }\n      ]\n    }\n  }\n}\n```\n\n**可视化配置工具**：`resources/config-web/index.html`（本地打开即可使用；或构建后使用 `output/config-web.html`，支持导入/编辑/导出 `config.json`）。\n\n**说明**：`AUTHORS.txt` 为内嵌的 MinHook 依赖作者名单，并非本项目维护者列表。\n\n**提示**：\n- 端口留空代表“全部端口”；域名留空仅按 CIDR 匹配；域名填 `*` 将匹配所有域名。\n- 全量匹配可用 `0.0.0.0/0` 与 `::/0`。\n- 工具已支持 `proxy.host` / `proxy.port` / `proxy.type` 的编辑。\n\n### 已知问题 / Known Issues\n\n- **历史版本（已修复）：FakeIP 与 `direct + domains + ports`**：在部分旧版本中，若启用 FakeIP，且 `action=direct` 的规则同时配置了 `domains` 与 `ports`，可能出现 DNS 阶段分配 FakeIP，随后 connect 阶段“直连虚拟地址”导致连接失败。若你仍在使用旧版本，建议升级；或临时规避：移除该规则的 `ports` 条件，或关闭 FakeIP。\n\n\n### IPv6 注意事项\n\n当日志出现 `SOCKS5: 读取认证响应失败, WSA错误码=10060`，且目标是 IPv6 地址（如 `2001:4860:4860::8888:443`），表示代理没有及时响应该 IPv6 连接。\n\n可选处理方式：\n- **不改 host，快速止血**：将 `proxy_rules.ipv6_mode` 改为 `block`（阻止）或 `direct`（直连）。\n- **继续代理 IPv6**：让代理监听 `::1` 或开启双栈，再把 `proxy.host` 改为 `::1`（确保代理实际监听）。\n\n**优先级说明**：当目标为纯 IPv6（非 v4-mapped）且 `proxy_rules.ipv6_mode` 为 `direct`/`block` 时，会在进入 `routing` 规则前直接直连/阻止；当 `ipv6_mode=proxy` 时才会继续进入 `routing` 匹配。\n\n### UDP/QUIC 注意事项\n\n当目标程序使用 **QUIC/HTTP3**（UDP/443）时，必须开启 UDP 代理，否则会出现“TCP 走代理但 QUIC 直连/被阻断”的现象。\n\n启用方式：\n- 将 `proxy_rules.udp_mode` 设为 `proxy`\n- 将 `proxy.type` 设为 `socks5`（⚠️ HTTP 代理没有标准 UDP 转发能力）\n- 确保代理软件**支持 SOCKS5 UDP Associate** 并允许 UDP 转发（不同客户端/内核能力不同）\n- 可选：当代理不支持 UDP 时，可将 `proxy_rules.udp_fallback` 设为 `direct`（⚠️ 可能导致 UDP 直连泄漏；默认 `block` 更安全）\n\n示例：\n\n```json\n{\n  \"proxy\": { \"host\": \"127.0.0.1\", \"port\": 10808, \"type\": \"socks5\" },\n  \"proxy_rules\": {\n    \"udp_mode\": \"proxy\",\n    \"dns_mode\": \"direct\",\n    \"allowed_ports\": [80, 443]\n  }\n}\n```\n\n说明：\n- `dns_mode=\"direct\"` 仍会放行 UDP/53（避免 DNS 超时）；若你希望 DNS 也走代理，请改为 `dns_mode=\"proxy\"`。\n- 若日志出现“UDP 代理仅支持 SOCKS5 (UDP Associate)”：说明你配置了 `udp_mode=proxy` 但 `proxy.type` 不是 `socks5`，请修正配置。\n- `udp_mode=\"block\"` 默认会阻断大部分 UDP，但仍放行 loopback 与 UDP/53 作为例外（避免影响本机通信与 DNS）。\n\n### 验证是否生效 / Verification\n\n1. **检查日志**: 查看是否生成日志文件（格式：`proxy-YYYYMMDD.log`）\n2. **查看代理软件**: 观察代理软件的连接日志\n3. **使用抓包工具**: 使用 Wireshark 确认流量走向\n\n#### 📂 日志文件位置 / Log File Locations\n\n日志文件按以下优先级存放：\n\n| 优先级 | 位置 | 说明 |\n|--------|------|------|\n| 1️⃣ | `\u003cDLL所在目录\u003e\\logs\\` | 与 `version.dll` 同级的 `logs` 子目录 |\n| 2️⃣ | `%TEMP%\\antigravity-proxy-logs\\` | 系统临时目录（通常为 `C:\\Users\\\u003c用户名\u003e\\AppData\\Local\\Temp\\antigravity-proxy-logs\\`） |\n\n\u003e 💡 **提示**：如果在 DLL 目录无法创建 `logs` 文件夹（例如权限不足），日志会自动回退到系统 TEMP 目录。\n\u003e\n\u003e 快速打开 TEMP 目录：按 `Win+R`，输入 `%TEMP%`，回车即可。\n\n---\n\n## 🐧 WSL 环境使用指南 / WSL Guide\n\n\u003e ⚠️ **重要提示**：Antigravity-Proxy（version.dll 劫持方案）**无法直接代理 WSL 内部的流量**。\n\n### 为什么 DLL 劫持在 WSL 中不起作用？\n\n这是由技术架构决定的根本性限制，无法通过修改代码来解决：\n\n| 技术层面 | 详细说明 |\n|---------|----------|\n| **DLL 注入机制** | 本项目使用 Windows `version.dll` 劫持，只能 Hook **Windows PE 进程** |\n| **Winsock API** | 拦截的是 `ws2_32.dll` 中的 `connect()`、`getaddrinfo()` 等 **Windows 专用 API** |\n| **WSL 架构** | WSL2 运行真正的 **Linux 内核**，网络使用 Linux `socket()` 系统调用，与 Windows Winsock **完全独立** |\n| **进程边界** | 即使注入 `wsl.exe`，也无法 Hook 其内部 Linux 子系统中 `language_server_linux_x64` 发出的流量 |\n\n```\n┌─────────────────────────────────────────────────────────────────┐\n│                        Windows 主机                              │\n│  ┌────────────────────────────────────────────────────────────┐  │\n│  │  Antigravity-Proxy (version.dll)                           │  │\n│  │  ├── Hook: connect(), getaddrinfo(), WSAConnect()...      │  │\n│  │  └── ✅ 可以拦截所有 Windows 进程的网络请求                 │  │\n│  └────────────────────────────────────────────────────────────┘  │\n│                              │                                    │\n│                         ❌ 无法穿透                               │\n│                              ↓                                    │\n│  ┌────────────────────────────────────────────────────────────┐  │\n│  │               WSL2 (轻量级 Linux 虚拟机)                     │  │\n│  │  ┌──────────────────────────────────────────────────────┐  │  │\n│  │  │  language_server_linux_x64                           │  │  │\n│  │  │  └── 使用 Linux socket() 系统调用 → 绕过 Winsock    │  │  │\n│  │  └──────────────────────────────────────────────────────┘  │  │\n│  └────────────────────────────────────────────────────────────┘  │\n└─────────────────────────────────────────────────────────────────┘\n```\n\n### 替代方案\n\n#### 方案一：使用 antissh 工具（推荐 ⭐⭐⭐⭐⭐）\n\n[antissh](https://github.com/ccpopy/antissh) 是专门为在 WSL 中代理 Antigravity Agent 设计的工具。\n\n**原理**：在 WSL 内部使用 **graftcp** 对 `language_server_linux_x64` 进行代理包装。\n\n**快速开始**：\n```bash\n# 在 WSL 中执行\ncurl -O https://raw.githubusercontent.com/ccpopy/antissh/main/antissh.sh\nchmod +x antissh.sh\nbash ./antissh.sh\n```\n\n脚本会引导你：\n1. 输入代理地址（如 `socks5://127.0.0.1:10808`）\n2. 自动安装依赖并编译 graftcp\n3. 自动找到并包装 `language_server_linux_x64`\n\n**优点**：\n- 专门针对此场景设计\n- 无需修改 Antigravity-Proxy 代码\n- 社区持续维护\n\n**注意**：IDE 升级后可能需要重新运行脚本。\n\n---\n\n#### 方案二：WSL Mirrored 网络模式（推荐 ⭐⭐⭐⭐）\n\n**原理**：让 WSL 共享 Windows 的网络栈，从而可以使用 `127.0.0.1` 访问 Windows 上的代理。\n\n**配置步骤**：\n\n1. 在 Windows 用户目录创建或编辑 `.wslconfig` 文件：\n\n```powershell\n# PowerShell 执行\nnotepad \"$env:USERPROFILE\\.wslconfig\"\n```\n\n2. 添加以下内容：\n\n```ini\n[wsl2]\nnetworkingMode=mirrored\n```\n\n3. 重启 WSL：\n\n```powershell\nwsl --shutdown\n```\n\n4. 在 WSL 中设置环境变量（添加到 `~/.bashrc` 或 `~/.zshrc`）：\n\n```bash\nexport ALL_PROXY=socks5://127.0.0.1:7890\nexport HTTPS_PROXY=http://127.0.0.1:7890\nexport HTTP_PROXY=http://127.0.0.1:7890\n```\n\n**要求**：\n- Windows 11 22H2 或更高版本\n- WSL 版本 \u003e= 2.0.0（运行 `wsl --version` 检查）\n\n**优点**：\n- 无需安装额外工具\n- 配置简单\n\n**缺点**：\n- 环境变量方式可能对某些不读取环境变量的程序无效\n\n---\n\n#### 方案三：TUN 模式全局透明代理（推荐 ⭐⭐⭐）\n\n**原理**：使用 Clash/Mihomo 的 TUN 模式创建虚拟网卡，在 IP 层拦截所有流量。\n\n**操作**：在 Clash/Mihomo 中开启 TUN 模式即可。\n\n**优点**：\n- 真正的全局代理，覆盖所有应用\n- 无需针对单个程序配置\n\n**缺点**：\n- 需要管理员权限\n- 可能影响系统网络性能\n- 与 Antigravity-Proxy 的定位（精准代理）有所重叠\n\n---\n\n### 方案对比\n\n| 方案 | 适用场景 | 复杂度 | 推荐度 |\n|------|---------|--------|--------|\n| **antissh** | 仅需在 WSL 中代理 Antigravity | 中等 | ⭐⭐⭐⭐⭐ |\n| **Mirrored 模式** | 系统满足版本要求，需简单代理 | 低 | ⭐⭐⭐⭐ |\n| **TUN 全局代理** | 需要所有流量代理 | 低 | ⭐⭐⭐ |\n\n---\n\n## 🚀 进阶玩法 / Advanced Usage\n\n\u003e 附加价值：本项目首先为 Antigravity 服务，但底层是通用的进程级强制代理方案，也可以用来强制代理其他不走系统代理的 Windows 程序，或基于此二次开发。\n\n### 🎯 强制代理其他程序 / Force Proxy Other Programs\n\n想让 Chrome、VS Code 或其他程序也走代理？只需修改配置文件！\n\n#### 示例 1: 强制代理 Chrome\n\n```json\n{\n    \"proxy\": {\n        \"host\": \"127.0.0.1\",\n        \"port\": 7890,\n        \"type\": \"socks5\"\n    },\n    \"child_injection\": true,\n    \"target_processes\": []\n}\n```\n\n然后将 `version.dll` 和 `config.json` 复制到 Chrome 安装目录：\n\n```\nC:\\Program Files\\Google\\Chrome\\Application\\\n├── chrome.exe\n├── version.dll      ← 放这里\n└── config.json      ← 放这里\n```\n\n#### 示例 2: 强制代理 VS Code\n\n```\nC:\\Users\\你的用户名\\AppData\\Local\\Programs\\Microsoft VS Code\\\n├── Code.exe\n├── version.dll      ← 放这里\n└── config.json      ← 放这里\n```\n\n#### 示例 3: 仅代理特定子进程\n\n如果你只想代理程序的某些子进程，可以使用 `target_processes` 配置：\n\n```json\n{\n    \"target_processes\": [\n        \"node.exe\",\n        \"npm.cmd\",\n        \"language_server.exe\"\n    ]\n}\n```\n\n### 🔧 二次开发入口 / Development Entry Points\n\n如果你想基于此项目进行二次开发，以下是关键代码位置：\n\n| 模块 | 文件 | 说明 |\n|------|------|------|\n| **配置加载** | `src/core/Config.hpp` | 修改配置项结构 |\n| **网络 Hook** | `src/hooks/Hooks.cpp` | 添加/修改 Hook 函数 |\n| **代理协议** | `src/network/Socks5.hpp` | SOCKS5 握手实现 |\n| **代理协议** | `src/network/HttpConnect.hpp` | HTTP CONNECT 实现 |\n| **FakeIP** | `src/network/FakeIP.hpp` | 虚拟 IP 分配逻辑 |\n| **DLL 劫持** | `src/proxy/VersionProxy.cpp` | version.dll 代理转发 |\n| **进程注入** | `src/injection/ProcessInjector.hpp` | 子进程注入逻辑 |\n\n#### 如何添加新的 Hook？\n\n1. 在 `src/hooks/Hooks.cpp` 中定义函数指针类型和 Detour 函数\n2. 在 `Hooks::Install()` 中添加 `MH_CreateHookApi()` 调用\n3. 在 `Hooks::Uninstall()` 中处理清理逻辑\n\n#### 如何支持新的代理协议？\n\n1. 在 `src/network/` 下创建新的协议实现 (参考 `Socks5.hpp`)\n2. 在 `src/hooks/Hooks.cpp` 的 `DoProxyHandshake()` 中添加协议分支\n\n---\n\n## 📄 许可证 / License\n\n本项目基于 [BSD-2-Clause License](LICENSE.txt) 开源。\n\nMinHook 部分版权归 **Tsuda Kageyu** 所有。\n\n---\n\n## 👤 关于作者 / Author\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cb\u003e煎饼果子（86）\u003c/b\u003e\u003cbr/\u003e\n      \u003csub\u003e独立开发者 / Independent Developer\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### 📱 联系方式 / Contact\n\n| 平台 | 信息 |\n|------|------|\n| **微信** | JavaRookie666 |\n| **Telegram** | [@yuaotian](https://t.me/yuaotian) |\n| **GitHub** | [@yuaotian](https://github.com/yuaotian) |\n\n### 🎁 支持作者 / Support\n\n如果这个项目对你有帮助，欢迎：\n- ⭐ 给项目点个 Star\n- 🔗 分享给需要的朋友\n- 💬 提交 Issue 或 PR\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"img/wx_add_qr.png\" alt=\"微信二维码\" width=\"200\"/\u003e\u003cbr/\u003e\n      \u003csub\u003e添加微信交流\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"img/wx_gzh_qr.jpg\" alt=\"公众号二维码\" width=\"200\"/\u003e\u003cbr/\u003e\n      \u003csub\u003e关注公众号\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"img/qun-21.png\" alt=\"微信群二维码\" width=\"200\"/\u003e\u003cbr/\u003e\n      \u003csub\u003e🔥 加入微信交流群\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n### 💰 打赏支持 / Donate\n\n如果这个项目帮到了你，可以请作者喝杯咖啡 ☕\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"img/wx_zsm.jpg\" alt=\"微信赞赏码\" width=\"200\"/\u003e\u003cbr/\u003e\n      \u003csub\u003e微信赞赏\u003c/sub\u003e\n    \u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\n      \u003cimg src=\"img/zfb.png\" alt=\"支付宝收款码\" width=\"200\"/\u003e\u003cbr/\u003e\n      \u003csub\u003e支付宝打赏\u003c/sub\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n## 🔍 伪代码（pseudocode_dll）来源说明 / Pseudocode Source Note\n\n本仓库的 `pseudocode_dll/` 目录收录了**对某论坛帖中发布的 DLL**进行反编译得到的伪代码（Binary Ninja / IDA Hex-Rays 输出），用途仅为：\n\n- 排查我在 **Windows 11** 环境下遇到的 **Antigravity 间歇性崩溃**问题\n- 学习/对照其 Hook 与强制代理的实现思路\n- 作为研究记录留档（便于后续回溯）\n\n\u003e ⚠️ 重要声明  \n\u003e - `pseudocode_dll/` **不参与**本项目的构建与发布，只是学习与研究记录。  \n\u003e - 本项目当前代码为我**从零实现与持续维护**的版本，并非“原 DLL 的源码开源”。  \n\u003e - 本仓库**不分发**原帖中的成品 DLL；如需获取原始 DLL，请前往原帖。  \n\u003e - 若原帖作者认为该伪代码公开不合适、希望移除相关内容，请在仓库提 Issue，我会第一时间配合调整（移动到单独分支/移除/重写说明均可）。\n\n**来源（原帖含 DLL）：**  \nhttps://linux.do/t/topic/1189424\n\n**本仓库伪代码文件：**\n- `pseudocode_dll/BinaryNinja.txt`（Binary Ninja 反编译输出）\n- `pseudocode_dll/Hex-Rays.txt`（IDA Hex-Rays 反编译输出）\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003csub\u003eMade with ❤️ by 煎饼果子（86）\u003c/sub\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuaotian%2Fantigravity-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyuaotian%2Fantigravity-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyuaotian%2Fantigravity-proxy/lists"}