[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-75110":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":37,"readmeContent":38,"aiSummary":39,"trendingCount":16,"starSnapshotCount":16,"syncStatus":40,"lastSyncTime":41,"discoverSource":42},75110,"antigravity-proxy","yuaotian\u002Fantigravity-proxy","yuaotian","🚀 Transparent proxy injector for Antigravity. Force SOCKS5\u002FHTTP proxy without TUN mode on Windows. | 专为 Antigravity 打造的免 TUN 强制代理工具，支持 DLL 注入与进程流量劫持。","",null,"C++",3194,254,13,17,0,34,100,375,102,109.22,"Other",false,"main",true,[27,28,29,30,31,32,33,34,35,36],"antigravity","dll-injection","force-proxy-network-hook","http-proxy","minhook","no-tun","proxy","socks5","transparent-proxy","windows-proxy","2026-06-12 04:01:17","\u003Cp align=\"center\">\n  \u003Cimg src=\"img\u002Fantigravity_logo.png\" alt=\"Antigravity Logo\" width=\"120\"\u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Antigravity-Proxy\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cb>🚀 专为 Antigravity 编辑器打造：在中国也能无需 TUN 模式稳定走代理\u003C\u002Fb>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fyuaotian\u002Fantigravity-proxy\u002Factions\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fyuaotian\u002Fantigravity-proxy\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg\" alt=\"Build Status\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"LICENSE.txt\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-BSD--2--Clause-blue.svg\" alt=\"License\"\u002F>\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-Windows%20x86%20%7C%20x64-lightgrey.svg\" alt=\"Platform\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FC%2B%2B-17-00599C.svg\" alt=\"C++17\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fhook-MinHook-orange.svg\" alt=\"MinHook\"\u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"README_EN.md\">🇬🇧 English Version\u003C\u002Fa>\n\u003C\u002Fp>\n\n---\n\n## 📖 目录 \u002F Table of Contents\n\n- [📖 项目介绍 \u002F Introduction](#-项目介绍--introduction)\n- [🚨 先看这个：对话报错先排 IP \u002F Read This First](#-先看这个对话报错先排-ip--read-this-first)\n- [⚡ Antigravity 快速开始 \u002F Quick Start](#-antigravity-快速开始--quick-start)\n- [🔧 故障排查自查手册 \u002F Troubleshooting Guide](#-故障排查自查手册--troubleshooting-guide)\n- [✨ 功能特性 \u002F Features](#-功能特性--features)\n- [🔧 工作原理 \u002F How It Works](#-工作原理--how-it-works)\n- [🛠️ 编译构建 \u002F Build](#️-编译构建--build)\n- [📝 使用方法 \u002F Usage](#-使用方法--usage)\n- [🐧 WSL 环境使用指南 \u002F WSL Guide](#-wsl-环境使用指南--wsl-guide)\n- [🚀 进阶玩法 \u002F Advanced Usage](#-进阶玩法--advanced-usage)\n- [📄 许可证 \u002F License](#-许可证--license)\n- [👤 关于作者 \u002F Author](#-关于作者--author)\n\n---\n\n## 🚨 先看这个：对话报错先排 IP \u002F Read This First\n\n> **先说结论：如果 Antigravity 的对话框里出现 `Agent execution terminated due to error`，请先排查代理出口 IP，不要先怀疑 DLL 没生效。**\n\n我们已经在真实现场里确认过，最容易误判的场景是：\n- `version.dll` 已加载\n- `language_server_windows_x64.exe` 已注入\n- `node.exe` 也已注入\n- `oauth2.googleapis.com` \u002F `daily-cloudcode-pa.googleapis.com` 仍然可以通过 SOCKS5 正常连通\n- **但 Antigravity 自己的 `ls-main.log` 仍然返回：**\n  - `FAILED_PRECONDITION (code 400): User location is not supported for the API use.`\n\n这类问题的主因通常不是 DLL 失效，而是：\n- **当前代理出口 IP 的国家\u002FASN\u002F机房属性，被 Antigravity agent mode \u002F Gemini CLI 路径判定为不可用**\n- 也就是说：**“国家支持”不等于“当前这条 agent 执行链路一定接受这条出口 IP”**\n\n### 你现在应该先看哪两份日志\n\n#### 1. DLL 日志：证明“不是注入失效”\n- `\u003CAntigravity安装目录>\\\\logs\\\\proxy-YYYYMMDD.log`\n\n如果你在这份日志里看到类似下面这些关键行，说明 DLL 本身已经在工作：\n- `[成功] 已注入目标进程: language_server_windows_x64.exe`\n- `[成功] 已注入目标进程: node.exe`\n- `SOCKS5: 隧道建立成功, 目标=oauth2.googleapis.com:443`\n- `SOCKS5: 隧道建立成功, 目标=daily-cloudcode-pa.googleapis.com:443`\n\n从当前版本开始，DLL 还会额外输出 IP 诊断日志：\n- `[诊断\u002FIP] 当前代理出口探测完成: ...`\n- `[诊断\u002FIP] 当前代理出口呈现机房\u002F托管特征...`\n- `[诊断\u002FIP] 最新 Antigravity 日志已命中 location 限制错误，同时当前代理出口呈现机房\u002F托管特征...`\n\n#### 2. Antigravity 应用日志：证明“真正失败的是 agent 执行链路”\n- `%APPDATA%\\\\Antigravity\\\\logs\\\\\u003C最新时间目录>\\\\ls-main.log`\n\n如果你在这里看到：\n- `agent executor error: FAILED_PRECONDITION (code 400): User location is not supported for the API use.`\n\n那就说明：\n- **当前失败点已经不是 DLL 注入或基本代理链路**\n- **而是 Antigravity 自己的 agent execution 路径被服务端按 location \u002F egress 策略拦住了**\n\n### 最有效的排查顺序\n\n1. 先看 `proxy-YYYYMMDD.log`\n   - 如果注入和 SOCKS5 都成功，说明 DLL 大概率没问题。\n2. 再看 `%APPDATA%\\\\Antigravity\\\\logs\\\\\u003C最新目录>\\\\ls-main.log`\n   - 如果有 `User location is not supported for the API use.`，优先排 IP。\n3. 优先更换**非机房 \u002F 非托管 \u002F 普通 ISP \u002F 住宅**出口，再重试\n   - 同一个国家（例如新加坡）下，不同 ASN \u002F 不同类型出口，结果可能完全不同。\n4. 只有当 DLL 日志里根本没有注入成功、或根本没有代理握手成功时，才回头排 DLL。\n\n### 一句话记忆点\n\n> **Antigravity 对话报错时，先排出口 IP，再排 DLL。看到 `location is not supported` 基本优先看 IP。**\n\n---\n\n## 📖 项目介绍 \u002F Introduction\n\n**Antigravity-Proxy** 是专门为 **Antigravity 编辑器**量身定制的 Windows 代理注入组件（DLL）。\n\n它的目标很简单：让中国用户使用 Antigravity 时，**不用开 Clash TUN 模式**，也能把网络流量稳定交给你的 SOCKS5\u002FHTTP 代理。\n\n> 项目名 **Antigravity-Proxy** = Antigravity + Proxy：只把 Antigravity 相关进程的流量“拽”进代理里（别担心，不会全局接管）。\n\n### 🎯 解决的痛点 \u002F 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### 🌟 核心价值 \u002F Core Value\n\n| 传统方案 | Antigravity-Proxy |\n|---------|-------------------|\n| 需要 TUN 模式 | 无需 TUN |\n| 全局代理 | 精准代理指定进程 |\n| 需要管理员权限 | 普通用户即可 |\n| 配置复杂 | 放入 DLL 即用 |\n\n---\n\n\n## ⚠️ 环境要求 \u002F Prerequisites\n\n> 在使用本工具前，请确保系统已安装必要的运行库，否则可能无法正常启动目标程序。\n\n### 常见问题：0xc0000142 错误\n\n如果启动程序时遇到 **错误代码 0xc0000142**（如下图所示），通常是由于系统缺少 Windows 运行库导致的。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"img\u002Ferror\u002Fwin_error_0xc0000142.png\" alt=\"0xc0000142 错误截图\" width=\"400\"\u002F>\n\u003C\u002Fp>\n\n### 解决方案\n\n请安装 **微软常用运行库合集**，该工具已包含在本仓库中：\n\n📦 **下载路径**: [`microsoft\\微软常用运行库合集-2025.exe`](microsoft\u002F微软常用运行库合集-2025.exe)\n\n**安装步骤：**\n1. 进入本仓库的 `microsoft` 目录\n2. 运行 `微软常用运行库合集-2025.exe`\n3. 按照安装向导完成安装\n4. 重新启动目标程序\n\n---\n\n## ⚡ Antigravity 快速开始 \u002F Quick Start\n\n> 只想让 Antigravity 立刻能用？看这一节就够了。\n\n### Step 1: 准备代理 \u002F Prepare a Proxy\n\n启动你的代理软件（例如 Clash\u002FMihomo），确保本机有可用的 SOCKS5 或 HTTP 代理端口（如 `127.0.0.1:7890`）。\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>📋 常用代理软件端口速查表（点击展开）\u003C\u002Fb>\u003C\u002Fsummary>\n\n#### 各代理软件默认端口\n\n| 代理软件 | SOCKS5 端口 | HTTP 端口 | 混合端口 | 备注 |\n|----------|-------------|-----------|----------|------|\n| **Clash \u002F Clash Verge** | 7891 | 7890 | 7890 | 混合端口同时支持 SOCKS5 和 HTTP |\n| **Clash for Windows** | 7891 | 7890 | 7890 | 设置 → Ports 可查看\u002F修改 |\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\u002FiOS)** | 6153 | 6152 | - | 增强模式下端口可能不同 |\n| **Qv2ray** | 1089 | 8889 | - | 首选项 → 入站设置 |\n| **sing-box** | 自定义 | 自定义 | 自定义 | 需在配置文件中手动指定 |\n| **NekoBox** | 2080 | 2081 | - | 设置 → 入站 |\n| **Clash Meta for Android** | 7891 | 7890 | 7890 | 同 Clash 规则 |\n\n> 💡 **推荐使用 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:\u002F\u002F127.0.0.1:7891 https:\u002F\u002Fwww.google.com -I\n\n# 通过 HTTP 代理访问\ncurl -x http:\u002F\u002F127.0.0.1:7890 https:\u002F\u002Fwww.google.com -I\n```\n\n#### 常见端口问题及解决\n\n| 问题 | 原因 | 解决方案 |\n|------|------|----------|\n| 端口被占用 | 其他程序使用了该端口 | `netstat -ano | findstr :7890` 查找占用进程 |\n| 连接被拒绝 | 代理软件未启动或端口错误 | 确认代理软件已启动，检查端口配置 |\n| 代理无响应 | 防火墙阻止 | 检查 Windows 防火墙设置 |\n\n\u003C\u002Fdetails>\n\n### Step 2: 准备文件 \u002F Get the Files\n\n准备两份文件：\n- `version.dll`\n- `config.json`\n\n（可以从 Release 下载，或自行编译生成。）\n\n### Step 3: 部署到 Antigravity \u002F Deploy to Antigravity\n\n把 `version.dll` 和 `config.json` 复制到 **Antigravity 主程序目录**（与 `Antigravity.exe` 同级）。然后启动 Antigravity，搞定。\n\n#### Windows 常见目录 + 快速跳转\n\n一般情况下 Antigravity 会装在：\n\n例如：`C:\\Users\\\u003C用户名>\\AppData\\Local\\Programs\\Antigravity`\n\n如果你找不到这个目录：在桌面\u002F开始菜单找到 Antigravity 图标，**右键 → 打开文件所在的位置**，跳出来的那个目录就是它的主程序目录。\n\n想从命令行一键跳过去（少点鼠标，多点快乐）：\n\n```powershell\ncd \"$env:LOCALAPPDATA\\Programs\\Antigravity\"\n```\n\n```bat\ncd \u002Fd \"%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 \u002Fd %ANTIGRAVITY_HOME%`。\n\n\n## 🔧 故障排查自查手册 \u002F Troubleshooting Guide\n\n> 代理不工作？按照本手册逐步排查，找到问题根源。\n\n### 📋 快速诊断流程图\n\n```\n代理不工作？\n    │\n    ├── 检查日志是否存在 ───────────────────────────────────┐\n    │       │                                               │\n    │       ├── ❌ 无日志 → DLL未加载\u002F位置错误               │\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安装目录>\\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\u002F混合端口\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:\u002F\u002Fgithub.com\u002Fyuaotian\u002Fantigravity-proxy\u002Fissues)：\n\n1. **日志文件**：完整的 `proxy-YYYYMMDD.log` 内容\n2. **config.json**：你的配置文件（隐藏敏感信息）\n3. **Windows 版本**：`winver` 输出\n4. **Clash 版本和配置**（端口设置部分）\n5. **安全软件列表**：已安装的杀软\u002F安全软件\n6. **问题描述**：具体什么功能不工作？打开什么网站\u002F功能时失败？\n\n---\n\n### ⚠️ 已知兼容性问题\n\n| 问题 | 原因 | 解决方案 |\n|------|------|----------|\n| **大量 `非 SOCK_STREAM socket 直连, soType=2`** | UDP\u002FQUIC 流量未走代理（`udp_mode=direct` 或 UDP 代理未生效） | 若需要 QUIC\u002FHTTP3：设置 `udp_mode=proxy` + `proxy.type=socks5`，并确保代理端支持 SOCKS5 UDP Associate |\n| **日志显示成功但网页打不开** | Clash 规则、节点问题 | 检查 Clash 日志 |\n| **某些请求绕过代理** | 应用使用了未 Hook 的 API | 提交 Issue 反馈 |\n| **360 等安全软件环境下失效** | LSP 注入干扰 | 添加白名单或卸载 |\n\n---\n\n## ❓ DLL常见问题与错误码 \u002F Common Errors and Error Codes\n\n> 遇到问题时，建议先确认目标程序位数（x86\u002Fx64），并查看目标程序目录下的日志文件（如 `proxy-YYYYMMDD.log`）。\n\n### 已知错误码\n\n| 错误码 | 问题描述 | 可能原因 | 解决方案 |\n|--------|----------|----------|----------|\n| `0xC0000142` | 应用程序无法正常启动（已知：部分环境使用 x64 版本会出现此错误，切换到 x86 版本可以正常运行） | 架构不兼容（目标程序为 x86，但放入了 x64 的 `version.dll`）\u003Cbr>依赖库缺失或版本不匹配（常见：VC++ 运行库未安装\u002F版本不一致）\u003Cbr>安全软件拦截\u002F隔离导致初始化失败 | 使用与目标程序一致的版本（x86 程序用 x86，x64 程序用 x64）\u003Cbr>安装对应架构的 VC++ 2015-2022 运行库（尤其是 x64）\u003Cbr>尝试使用静态运行库构建：`.\\build.ps1 -StaticRuntime` |\n\n### 其他常见错误码\n\n| 错误码 | 问题描述 | 可能原因 | 解决方案 |\n|--------|----------|----------|----------|\n| `0xC000007B` | 应用程序无法正常启动（常见于位数不匹配） | `version.dll` 与目标程序位数不一致（x86\u002Fx64 混用）\u003Cbr>依赖 DLL 位数不一致或文件损坏 | 确保 `version.dll` 与目标程序位数一致，并替换为对应版本产物\u003Cbr>清理目标目录中可能残留的旧 DLL 后重试 |\n| `0xC0000135` | 找不到组件\u002F缺少 DLL，程序无法启动 | 依赖库缺失（常见：VC++ 运行库 DLL 缺失）\u003Cbr>依赖库被安全软件删除\u002F隔离 | 安装对应架构的 VC++ 2015-2022 运行库\u003Cbr>或使用静态运行库构建：`.\\build.ps1 -StaticRuntime` |\n| `VCRUNTIME140_1.dll 缺失` | 启动时报“找不到 VCRUNTIME140_1.dll” | VC++ 2015-2022 运行库未安装或被安全软件删除 | 安装对应架构的 VC++ 2015-2022 运行库（x64\u002Fx86）\u003Cbr>或使用静态运行库构建：`.\\build.ps1 -StaticRuntime` |\n| `0xC0000906` | 应用程序无法正常启动 | 文件被安全软件拦截\u002F隔离\u003Cbr>文件不完整或已损坏 | 重新获取\u002F重新编译 DLL 并替换\u003Cbr>将目标程序目录加入安全软件白名单\u002F排除项后重试 |\n| `0xC0000005` | 程序启动后闪退\u002F崩溃（事件查看器常见） | Hook 与目标程序\u002F系统环境不兼容\u003Cbr>目标进程范围过大，误注入导致冲突 | 缩小 `target_processes` 仅代理必要进程\u003Cbr>必要时关闭 `child_injection` 或 `fake_ip` 排查 |\n| `10061 (WSAECONNREFUSED)` | 代理连接被拒绝（通常会出现在日志里） | 代理软件未启动或端口未监听\u003Cbr>`config.json` 中代理地址\u002F端口错误 | 启动代理软件并确认端口可用（如 `127.0.0.1:7890`）\u003Cbr>检查并修正 `config.json` 的 `proxy.host\u002Fproxy.port` |\n| `10060 (WSAETIMEDOUT)` | 连接超时（通常会出现在日志里） | 代理不可达\u002F网络被阻断\u003Cbr>超时配置过短 | 检查代理与网络状态后重试\u003Cbr>适当增大 `config.json` 的 `timeout.connect\u002Fsend\u002Frecv` |\n\n\n\n## ✨ 功能特性 \u002F 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### 支持的代理协议 \u002F Supported Protocols\n\n- ✅ SOCKS5 (推荐 \u002F Recommended)\n- ✅ HTTP CONNECT\n\n---\n\n## 🔧 工作原理 \u002F How It Works\n\n### 整体架构 \u002F 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\u002FHTTP)   │\n                                              │  Proxy Server    │\n                                              └──────────────────┘\n```\n\n### 核心流程 \u002F 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 列表 \u002F 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\u002FW` | ws2_32.dll | 拦截按名称连接 |\n| `ConnectEx` | ws2_32.dll | 拦截异步连接 |\n| `CreateProcessW` | kernel32.dll | 拦截进程创建，注入子进程 |\n| `send\u002Frecv` | ws2_32.dll | 流量监控（可选） |\n\n---\n\n## 🛠️ 编译构建 \u002F Build\n\n### 环境要求 \u002F Prerequisites\n\n在开始编译之前，请确保已安装以下工具：\n\n| 依赖项 | 版本要求 | 用途 | 下载链接 |\n|--------|----------|------|----------|\n| **Visual Studio 2022** | 2022 或更高 | C\u002FC++ 编译器 | [下载](https:\u002F\u002Fvisualstudio.microsoft.com\u002F) |\n| **CMake** | >= 3.0 | 构建系统 | [下载](https:\u002F\u002Fcmake.org\u002Fdownload\u002F) |\n| **PowerShell** | 5.0+ | 编译脚本 | Windows 自带 |\n\n> 💡 **提示**: 安装 Visual Studio 时，请确保勾选 **\"使用 C++ 的桌面开发\"** 工作负载。\n\n### 依赖项 \u002F Dependencies\n\n| 依赖 | 说明 | 获取方式 |\n|------|------|----------|\n| **MinHook** | API Hook 框架 | 已内置于项目 |\n| **nlohmann\u002Fjson** | JSON 解析库 | 编译脚本自动下载 |\n\n### 一键编译 \u002F 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 -Verbose\n\n# CI 场景显式声明跳过测试步骤\n.\\build.ps1 -SkipTests\n\n# 查看帮助\n.\\build.ps1 -Help\n```\n\n### 手动编译 \u002F Manual Build\n\n如果你更喜欢手动编译，也可以使用以下命令：\n\n```bash\n# ========== x64 (64位) ==========\nmkdir build-x64 && 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 && 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### 常见编译错误 \u002F Common Build Errors\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>❌ 错误: \"CMake 未找到\"\u003C\u002Fb>\u003C\u002Fsummary>\n\n**原因**: CMake 未安装或未添加到 PATH\n\n**解决方案**:\n1. 下载并安装 [CMake](https:\u002F\u002Fcmake.org\u002Fdownload\u002F)\n2. 安装时勾选 \"Add CMake to the system PATH\"\n3. 重启终端后重试\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>❌ 错误: \"No CMAKE_CXX_COMPILER could be found\"\u003C\u002Fb>\u003C\u002Fsummary>\n\n**原因**: Visual Studio 未安装或 C++ 工具链缺失\n\n**解决方案**:\n1. 打开 Visual Studio Installer\n2. 确保安装了 **\"使用 C++ 的桌面开发\"** 工作负载\n3. 或者使用 Developer Command Prompt 运行编译命令\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>❌ 错误: 找不到 nlohmann\u002Fjson.hpp\u003C\u002Fb>\u003C\u002Fsummary>\n\n**原因**: JSON 库未下载\n\n**解决方案**:\n使用编译脚本 `build.ps1` 会自动下载，或手动下载：\n```bash\n# 手动下载\ncurl -o include\u002Fnlohmann\u002Fjson.hpp https:\u002F\u002Fraw.githubusercontent.com\u002Fnlohmann\u002Fjson\u002Fdevelop\u002Fsingle_include\u002Fnlohmann\u002Fjson.hpp\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>❌ 错误: LNK2019 unresolved external symbol\u003C\u002Fb>\u003C\u002Fsummary>\n\n**原因**: 链接错误，通常是 Winsock 库未链接\n\n**解决方案**:\n确保 CMakeLists.txt 中包含:\n```cmake\ntarget_link_libraries(version PRIVATE ws2_32)\n```\n\u003C\u002Fdetails>\n\n---\n\n## 📝 使用方法 \u002F Usage\n\n### 快速开始 \u002F Quick Start\n\n**只需 3 步，即可让目标程序走代理！**\n\n#### Step 1: 准备文件 \u002F Prepare Files\n\n编译完成后，你会在 `output` 目录得到：\n- `version.dll` - 代理 DLL\n- `config.json` - 配置文件\n\n#### Step 2: 配置代理 \u002F 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\u002F15\"\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 \u002F Deploy DLL\n\n将 `version.dll` 和 `config.json` 复制到目标程序的**同一目录**：\n\n```\n目标程序目录\u002F\n├── 目标程序.exe\n├── version.dll      ← 放这里\n└── config.json      ← 放这里\n```\n\n启动目标程序，完成！🎉\n\n### 配置文件详解 \u002F 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\u002F15\"` | 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`(直连) \u002F `proxy`(走代理) |\n| `proxy_rules.ipv6_mode` | string | `\"proxy\"` | IPv6策略: `proxy`(走代理) \u002F `direct`(直连) \u002F `block`(阻止) |\n| `proxy_rules.udp_mode` | string | `\"block\"` | UDP策略: `block`(阻断) \u002F `direct`(直连) \u002F `proxy`(走代理, 需 SOCKS5 UDP Associate) |\n| `proxy_rules.udp_fallback` | string | `\"block\"` | UDP 代理失败降级策略（仅 `udp_mode=proxy` 生效）: `block`(失败即阻断, 默认) \u002F `direct`(失败回退直连, 有泄漏风险) |\n| `proxy_rules.routing.enabled` | bool | `true` | 是否启用规则路由 |\n| `proxy_rules.routing.priority_mode` | string | `\"order\"` | 规则优先级: `order`(按顺序) \u002F `number`(priority) |\n| `proxy_rules.routing.default_action` | string | `\"proxy\"` | 未命中时默认动作 |\n| `proxy_rules.routing.use_default_private` | bool | `true` | 自动加载 RFC1918\u002Floopback 内网直连规则 |\n| `proxy_rules.routing.rules` | array | `[]` | 规则列表（支持 CIDR\u002F域名通配符\u002F端口\u002F协议） |\n\n### 规则路由 \u002F Routing Rules\n\n路由规则由 `proxy_rules.routing` 管理，支持 CIDR\u002F域名通配符\u002F端口\u002F协议分流，优先级可选 `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\u002F8\",\"172.16.0.0\u002F12\",\"192.168.0.0\u002F16\"],\n          \"ip_cidrs_v6\": [\"fc00::\u002F7\",\"fe80::\u002F10\",\"::1\u002F128\"],\n          \"domains\": [\".local\",\"*.corp.example.com\"],\n          \"protocols\": [\"tcp\"]\n        }\n      ]\n    }\n  }\n}\n```\n\n**可视化配置工具**：`resources\u002Fconfig-web\u002Findex.html`（本地打开即可使用；或构建后使用 `output\u002Fconfig-web.html`，支持导入\u002F编辑\u002F导出 `config.json`）。\n\n**说明**：`AUTHORS.txt` 为内嵌的 MinHook 依赖作者名单，并非本项目维护者列表。\n\n**提示**：\n- 端口留空代表“全部端口”；域名留空仅按 CIDR 匹配；域名填 `*` 将匹配所有域名。\n- 全量匹配可用 `0.0.0.0\u002F0` 与 `::\u002F0`。\n- 工具已支持 `proxy.host` \u002F `proxy.port` \u002F `proxy.type` 的编辑。\n\n### 已知问题 \u002F 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`\u002F`block` 时，会在进入 `routing` 规则前直接直连\u002F阻止；当 `ipv6_mode=proxy` 时才会继续进入 `routing` 匹配。\n\n### UDP\u002FQUIC 注意事项\n\n当目标程序使用 **QUIC\u002FHTTP3**（UDP\u002F443）时，必须开启 UDP 代理，否则会出现“TCP 走代理但 QUIC 直连\u002F被阻断”的现象。\n\n启用方式：\n- 将 `proxy_rules.udp_mode` 设为 `proxy`\n- 将 `proxy.type` 设为 `socks5`（⚠️ HTTP 代理没有标准 UDP 转发能力）\n- 确保代理软件**支持 SOCKS5 UDP Associate** 并允许 UDP 转发（不同客户端\u002F内核能力不同）\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\u002F53（避免 DNS 超时）；若你希望 DNS 也走代理，请改为 `dns_mode=\"proxy\"`。\n- 若日志出现“UDP 代理仅支持 SOCKS5 (UDP Associate)”：说明你配置了 `udp_mode=proxy` 但 `proxy.type` 不是 `socks5`，请修正配置。\n- `udp_mode=\"block\"` 默认会阻断大部分 UDP，但仍放行 loopback 与 UDP\u002F53 作为例外（避免影响本机通信与 DNS）。\n\n### 验证是否生效 \u002F Verification\n\n1. **检查日志**: 查看是否生成日志文件（格式：`proxy-YYYYMMDD.log`）\n2. **查看代理软件**: 观察代理软件的连接日志\n3. **使用抓包工具**: 使用 Wireshark 确认流量走向\n\n#### 📂 日志文件位置 \u002F Log File Locations\n\n日志文件按以下优先级存放：\n\n| 优先级 | 位置 | 说明 |\n|--------|------|------|\n| 1️⃣ | `\u003CDLL所在目录>\\logs\\` | 与 `version.dll` 同级的 `logs` 子目录 |\n| 2️⃣ | `%TEMP%\\antigravity-proxy-logs\\` | 系统临时目录（通常为 `C:\\Users\\\u003C用户名>\\AppData\\Local\\Temp\\antigravity-proxy-logs\\`） |\n\n> 💡 **提示**：如果在 DLL 目录无法创建 `logs` 文件夹（例如权限不足），日志会自动回退到系统 TEMP 目录。\n>\n> 快速打开 TEMP 目录：按 `Win+R`，输入 `%TEMP%`，回车即可。\n\n---\n\n## 🐧 WSL 环境使用指南 \u002F WSL Guide\n\n> ⚠️ **重要提示**：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:\u002F\u002Fgithub.com\u002Fccpopy\u002Fantissh) 是专门为在 WSL 中代理 Antigravity Agent 设计的工具。\n\n**原理**：在 WSL 内部使用 **graftcp** 对 `language_server_linux_x64` 进行代理包装。\n\n**快速开始**：\n```bash\n# 在 WSL 中执行\ncurl -O https:\u002F\u002Fraw.githubusercontent.com\u002Fccpopy\u002Fantissh\u002Fmain\u002Fantissh.sh\nchmod +x antissh.sh\nbash .\u002Fantissh.sh\n```\n\n脚本会引导你：\n1. 输入代理地址（如 `socks5:\u002F\u002F127.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 中设置环境变量（添加到 `~\u002F.bashrc` 或 `~\u002F.zshrc`）：\n\n```bash\nexport ALL_PROXY=socks5:\u002F\u002F127.0.0.1:7890\nexport HTTPS_PROXY=http:\u002F\u002F127.0.0.1:7890\nexport HTTP_PROXY=http:\u002F\u002F127.0.0.1:7890\n```\n\n**要求**：\n- Windows 11 22H2 或更高版本\n- WSL 版本 >= 2.0.0（运行 `wsl --version` 检查）\n\n**优点**：\n- 无需安装额外工具\n- 配置简单\n\n**缺点**：\n- 环境变量方式可能对某些不读取环境变量的程序无效\n\n---\n\n#### 方案三：TUN 模式全局透明代理（推荐 ⭐⭐⭐）\n\n**原理**：使用 Clash\u002FMihomo 的 TUN 模式创建虚拟网卡，在 IP 层拦截所有流量。\n\n**操作**：在 Clash\u002FMihomo 中开启 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## 🚀 进阶玩法 \u002F Advanced Usage\n\n> 附加价值：本项目首先为 Antigravity 服务，但底层是通用的进程级强制代理方案，也可以用来强制代理其他不走系统代理的 Windows 程序，或基于此二次开发。\n\n### 🎯 强制代理其他程序 \u002F 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### 🔧 二次开发入口 \u002F Development Entry Points\n\n如果你想基于此项目进行二次开发，以下是关键代码位置：\n\n| 模块 | 文件 | 说明 |\n|------|------|------|\n| **配置加载** | `src\u002Fcore\u002FConfig.hpp` | 修改配置项结构 |\n| **网络 Hook** | `src\u002Fhooks\u002FHooks.cpp` | 添加\u002F修改 Hook 函数 |\n| **代理协议** | `src\u002Fnetwork\u002FSocks5.hpp` | SOCKS5 握手实现 |\n| **代理协议** | `src\u002Fnetwork\u002FHttpConnect.hpp` | HTTP CONNECT 实现 |\n| **FakeIP** | `src\u002Fnetwork\u002FFakeIP.hpp` | 虚拟 IP 分配逻辑 |\n| **DLL 劫持** | `src\u002Fproxy\u002FVersionProxy.cpp` | version.dll 代理转发 |\n| **进程注入** | `src\u002Finjection\u002FProcessInjector.hpp` | 子进程注入逻辑 |\n\n#### 如何添加新的 Hook？\n\n1. 在 `src\u002Fhooks\u002FHooks.cpp` 中定义函数指针类型和 Detour 函数\n2. 在 `Hooks::Install()` 中添加 `MH_CreateHookApi()` 调用\n3. 在 `Hooks::Uninstall()` 中处理清理逻辑\n\n#### 如何支持新的代理协议？\n\n1. 在 `src\u002Fnetwork\u002F` 下创建新的协议实现 (参考 `Socks5.hpp`)\n2. 在 `src\u002Fhooks\u002FHooks.cpp` 的 `DoProxyHandshake()` 中添加协议分支\n\n---\n\n## 📄 许可证 \u002F License\n\n本项目基于 [BSD-2-Clause License](LICENSE.txt) 开源。\n\nMinHook 部分版权归 **Tsuda Kageyu** 所有。\n\n---\n\n## 👤 关于作者 \u002F Author\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\n      \u003Cb>煎饼果子（86）\u003C\u002Fb>\u003Cbr\u002F>\n      \u003Csub>独立开发者 \u002F Independent Developer\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### 📱 联系方式 \u002F Contact\n\n| 平台 | 信息 |\n|------|------|\n| **微信** | JavaRookie666 |\n| **Telegram** | [@yuaotian](https:\u002F\u002Ft.me\u002Fyuaotian) |\n| **GitHub** | [@yuaotian](https:\u002F\u002Fgithub.com\u002Fyuaotian) |\n\n### 🎁 支持作者 \u002F Support\n\n如果这个项目对你有帮助，欢迎：\n- ⭐ 给项目点个 Star\n- 🔗 分享给需要的朋友\n- 💬 提交 Issue 或 PR\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\n      \u003Cimg src=\"img\u002Fwx_add_qr.png\" alt=\"微信二维码\" width=\"200\"\u002F>\u003Cbr\u002F>\n      \u003Csub>添加微信交流\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Cimg src=\"img\u002Fwx_gzh_qr.jpg\" alt=\"公众号二维码\" width=\"200\"\u002F>\u003Cbr\u002F>\n      \u003Csub>关注公众号\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Cimg src=\"img\u002Fqun-22.jpg\" alt=\"微信群二维码\" width=\"200\"\u002F>\u003Cbr\u002F>\n      \u003Csub>🔥 加入微信交流群\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n### 💰 打赏支持 \u002F Donate\n\n如果这个项目帮到了你，可以请作者喝杯咖啡 ☕\n\n\u003Ctable>\n  \u003Ctr>\n    \u003Ctd align=\"center\">\n      \u003Cimg src=\"img\u002Fwx_zsm.jpg\" alt=\"微信赞赏码\" width=\"200\"\u002F>\u003Cbr\u002F>\n      \u003Csub>微信赞赏\u003C\u002Fsub>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\">\n      \u003Cimg src=\"img\u002Fzfb.png\" alt=\"支付宝收款码\" width=\"200\"\u002F>\u003Cbr\u002F>\n      \u003Csub>支付宝打赏\u003C\u002Fsub>\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n---\n\n## 🔍 伪代码（pseudocode_dll）来源说明 \u002F Pseudocode Source Note\n\n本仓库的 `pseudocode_dll\u002F` 目录收录了**对某论坛帖中发布的 DLL**进行反编译得到的伪代码（Binary Ninja \u002F IDA Hex-Rays 输出），用途仅为：\n\n- 排查我在 **Windows 11** 环境下遇到的 **Antigravity 间歇性崩溃**问题\n- 学习\u002F对照其 Hook 与强制代理的实现思路\n- 作为研究记录留档（便于后续回溯）\n\n> ⚠️ 重要声明  \n> - `pseudocode_dll\u002F` **不参与**本项目的构建与发布，只是学习与研究记录。  \n> - 本项目当前代码为我**从零实现与持续维护**的版本，并非“原 DLL 的源码开源”。  \n> - 本仓库**不分发**原帖中的成品 DLL；如需获取原始 DLL，请前往原帖。  \n> - 若原帖作者认为该伪代码公开不合适、希望移除相关内容，请在仓库提 Issue，我会第一时间配合调整（移动到单独分支\u002F移除\u002F重写说明均可）。\n\n**来源（原帖含 DLL）：**  \nhttps:\u002F\u002Flinux.do\u002Ft\u002Ftopic\u002F1189424\n\n**本仓库伪代码文件：**\n- `pseudocode_dll\u002FBinaryNinja.txt`（Binary Ninja 反编译输出）\n- `pseudocode_dll\u002FHex-Rays.txt`（IDA Hex-Rays 反编译输出）\n\n---\n\n\u003Cp align=\"center\">\n  \u003Csub>Made with ❤️ by 煎饼果子（86）\u003C\u002Fsub>\n\u003C\u002Fp>\n","Antigravity-Proxy 是一个专为 Antigravity 编辑器设计的透明代理注入工具，能够在 Windows 平台上无需 TUN 模式强制使用 SOCKS5\u002FHTTP 代理。该项目利用 DLL 注入和进程流量劫持技术，确保所有网络请求均通过指定代理服务器进行，特别适合在中国等网络环境下稳定访问受限资源。其核心功能包括基于 MinHook 的网络钩子实现以及对 x86 和 x64 架构的支持，使得用户能够轻松绕过地理位置限制。此外，项目还提供了详细的故障排查指南，帮助开发者快速定位并解决因代理出口 IP 属性导致的问题。",2,"2026-06-11 03:52:21","high_star"]