CN
v2.5
WPE_TUTORIAL_V2 // 01_START

起步与概念

最新版教程

本章覆盖 安装启动、首页三种入口、多开数据库,以及贯穿全书的 核心概念。读完这一章,你会知道自己该走注入模式还是代理模式。

// 关于本教程

本教程按 2.5 版整理。界面是 Vue 3 + WebView2 的新界面(左侧导航 + 七种语言 + 深浅色),原来的 WinForms / AntdUI 界面已经不存在了。
书里的界面图都是 深色模式的真实截图(1280 × 800),不是手绘的结构图;图下的编号清单按屏幕上从上到下、从左到右的顺序讲,每条开头加粗的就是那个控件在界面上的名字。
仍在使用 1.0.0.36 老版本?请下载 旧版教程 PDF。

快速上手 // 十分钟跑通第一次抓包

先照着走一遍,把「能看到封包」这件事跑通;每一步背后的原理,本章与后面几章会逐个拆开。

  1. 以管理员身份 运行压缩包里的 WPE64 v2.5.exe(首次运行会先释放程序文件),进入首页 —— 两张模式卡(注入 / 代理)+ 一条「多开设置」。
  2. 挑一条路:抓普通桌面程序 / 模拟器走 注入模式;要 HTTPS 明文、或要抓手机与另一台电脑走 代理模式(设备上用 WPC 接入)。
  3. 注入模式:先选一种 注入方式(选择进程 / 选择窗体 / 选择文件),挑好目标就附加上了。界面留在 WPE 自己的窗口里——目标程序里不会出现任何界面。
    代理模式:到状态条右边的「设置 ▾ → 代理设置」勾上 启用 SOCKS5(默认端口 1080),保存。
  4. 设置拦截范围:同一个「设置 ▾」菜单里——注入模式进「拦截设置」勾要挂钩的收发函数,代理模式进「过滤设置」挑 TCP / UDP 的请求与响应。这一步要在点「开始」之前做完。
  5. 点状态条上的「开始拦截」/「开始代理」,让目标程序产生一次网络行为,封包就会实时滚进列表。
  6. 双击任意一行 打开封包编辑,改几个字节后点「发送」,就完成了一次最小闭环的抓包 → 改包 → 重放。
01浅色主题下的同一屏 · 版式一处没动,换的只是一组颜色。
WPE x64 浅色主题下的首页
  1. 主题在标题栏的 齿轮 里切(深色 / 浅色 / 跟随系统 三档),见 工具章 11 节
  2. 不是简单的反色:布局完全一样,只是换成了一套浅色配色
  3. 霓虹色在浅底上各自压到能读的程度,色相保持不变——一眼还是同一套配色

系统要求

项目要求
操作系统Windows 10 / 11 · Server 2019 / 2022(推荐 x64)
运行库.NET Framework 4.8
界面运行时WebView2 Runtime(Win11 自带;Win10 通常随 Edge 已有)。缺失时程序会引导安装,见 首次启动
权限必须管理员权限。双击启动器时就会弹 UAC 请求提权
目标程序32 位 / 64 位均支持,按目标进程位数自动选择注入模块
数据存放SQLite,默认 C:\WPE64DB\<版本号>.db(2.5 正式版是 2.5.db)
部署方式压缩包 WPE64 v2.5.zip 里的 单文件启动器 WPE64 v2.5.exe:首次运行释放到 %LOCALAPPDATA%\WPE64\app\<版本>-<哈希>\,每次启动自动校验修复。不进「添加或删除程序」、无自动更新

下载与安装

WPE x64 不需要安装:下载到的压缩包里只有一个启动器 exe 和它的校验文件,不进「添加或删除程序」。不想要了,删掉启动器、%LOCALAPPDATA%\WPE64\ 与数据库目录就干净了。

// 启动器做了什么

压缩包里的 WPE64 v2.5.exe 装着完整的程序。首次运行或换了版本时,它会带进度窗把程序释放到 %LOCALAPPDATA%\WPE64\app\<版本>-<哈希>\;之后每次启动先快速检查文件,缺的、坏的自动修复,再启动里面的 WinsockPacketEditor.exe,并删掉没在运行的旧版本目录。注入与界面都要用到硬盘上的真实文件,所以程序必须先释放出来才能运行。

  1. 下载并解压:到 下载中心 下载 WPE64 v2.5.zip(蓝奏云,79.18 MB),解压得到 WPE64 v2.5.exe 和校验文件。
  2. 建议先解除锁定:在下载得到的 zip 上右键(解压之前;忘了就在解压出来的 exe 上做)→「属性」→ 勾选底部的「解除锁定」→ 应用。从网上下载的文件会被 Windows 打上 Zone.Identifier 标记,解锁之后 SmartScreen 与「无法验证发布者」那两个提示就不会再出现。
  3. 双击运行:在 UAC 提示上选「是」(见 首次启动)。首次运行会显示释放进度,完成后自动进入程序;启动器放桌面、D 盘、U 盘都行。若系统弹出 SmartScreen 的「Windows 已保护你的电脑」,点「更多信息」→「仍要运行」。
// 文件被删掉了怎么办

启动器 每次启动都会按清单核对释放出来的文件,缺的、大小对不上的会单独补一次再启动——所以被安全软件删掉几个文件不至于要重装,但它下次照样会删。真要长期用,就把启动器与 %LOCALAPPDATA%\WPE64\ 一起加进白名单。

// 运行库

需要 .NET Framework 4.8。Windows 10 1903 及以后的版本已内置,一般不用管;若启动时报缺少运行库,到微软官网下载 .NET Framework 4.8 运行时装上再试。

怎么升级到新版本

没有自动更新——软件不会自己联网检查版本,也不会弹升级提示。换新版就是重新走一遍上面的流程:

  1. 到 下载中心 看更新日志,确认这一版有你要的东西。
  2. 下载新的压缩包 → 解除锁定 → 解压。
  3. 关掉正在运行的旧版(注入模式下先「停止」并退出被注入的程序),再运行新 exe。
  4. 旧版本目录不用手动删——新版启动后会删掉没在运行的旧版本目录。配置库在 C:\WPE64DB\,不会被删,但也不会自动继承(见下)。
// 换版本 = 换一个空数据库

配置存在 C:\WPE64DB\<版本号>.db 里,文件名跟着版本走。所以升级后打开新版,滤镜、发送、机器人、代理账号这些会是空的——数据没丢,只是在旧版本的那个 .db 里。
要把配置带过去:在旧版 用「备份设置」导出 .sb,到新版 再导入。建议每次升级前都顺手导一份。

首次启动

  1. 双击启动器,在 UAC 提权对话框里选「是」;首次运行(或换了版本)会先显示释放进度。
  2. 若机器上没有 WebView2 Runtime,会先弹一个对话框列出「下载 → 安装 → 重新打开」三步,点「是」会直接打开微软官方的安装引导;装完重新启动 WPE 即可。Win11 与多数 Win10 不会看到这一步。
  3. 进入 首页,在这里选择工作模式。

首页 · 两种模式 + 两条设置入口

02首页 · 无边框窗口:两张模式卡 + 两条设置入口(多开设置、MCP 设置)+ 下方的系统自检。
WPE x64 首页:注入模式与代理模式两张卡片、多开设置与 MCP 设置两条入口、系统自检终端
  1. Mode 01 · 注入模式:整张卡都是热区(键盘 Tab 过去按 Enter / 空格也行)。点进去是「选择注入方式」那一屏 → 第 2 章。卡片底部的读数条 Target 是 上一次注入的目标,没注入过就是一条短横
  2. Mode 02 · 代理模式:点进去直接进代理模式主界面 → 第 3 章。读数条 Socks5 写的是 0.0.0.0: 加上代理设置里那个 SOCKS5 端口(默认 1080)
  3. 多开设置(两张卡下面第一条窄行):切换本次运行使用的 SQLite 数据库目录,实现多套互不干扰的配置(见下一节)。右端显示当前库的 目录名
  4. MCP 设置(第二条窄行):把本机的 AI 客户端接到 WPE 上,右端写着当前可用的 工具数。见 第 8 章
  5. 系统自检(下方终端块):管理员权限、国家地理库版本与条数、数据库位置 —— 三项都是启动时实时检测的。启动出问题时先看这里
  6. 标题栏右侧:齿轮 打开「软件设置」(界面语言 / 外观 / 显示 / 文件图标),图钉 是窗口保持最前,再往右是最小化 / 最大化 / 退出
  7. 底部状态栏左边是官网 / 使用教程 / 常见问题 / GitHub 四条外链,右边是当前状态
// 注意

底部那四条链接是交给系统默认浏览器打开的(只放行 http / https),没有备用地址:断网或官网不可达时点了不会有任何反应。

多开设置(数据库)

WPE 的 全部配置——系统设置、滤镜、发送、机器人、仓库、代理账号、映射、黑白名单、WPC 服务器与公告——都存放在 同一个 SQLite 文件 里。因此:

切换数据库路径 = 换一整套独立配置 = 实现多开。

03多开设置 · 与其它设置一致的分区弹窗,必须在 选择模式之前 设置。
WPE x64 多开设置:数据库目录、数据库状态与本次运行有效的提示
  1. 本次运行有效:数据库目录 不会永久保存,重启后仍使用默认目录。配置本身就存在库里,所以「这次要用哪个库」没法存在库里 —— 每次启动都要重新设
  2. 01 · 数据库目录:目录路径 默认 C:\WPE64DB,可以直接改输入框、点「浏览」用系统文件夹对话框挑目录,或点「默认目录」一键还原。目录不存在会自动创建,选已有目录则沿用其中的数据库文件
  3. 02 · 数据库状态:改完路径立刻显示四行 —— 数据库文件(<版本号>.db)、目录状态(已存在 / 将自动创建)、数据库状态(沿用已有数据库 / 将新建)、当前数据库。保存之前就知道会发生什么,不必先试一遍
  4. 数据库名称 跟着版本号走,改不了:2.5 正式版是 2.5.db。换版本自动换库,所以升级后是一个空库
  5. 保存后立即在该路径下建库建表,并重新载入系统配置

多开操作步骤

  1. 首页 → 多开设置,把路径改为 D:\WPE_A,保存。
  2. 回首页选择模式,此后所有配置读写都指向新库。
  3. 要开第二份:再启动一个 WPE 实例,路径改为 D:\WPE_B,保存后再选模式。
// 原理

注入模式下,被注入的程序本身 不读写数据库——滤镜、发送、机器人这些配置都由 WPE 窗口统一管理再下发过去。所以「这次用哪个库」只由 WPE 这一侧决定,多开时两边不会串库。

核心概念 · 两种模式怎么选

能力注入模式代理模式
原理EasyHook 注入 + WinSock API Hook自建 SOCKS5 服务器 + 内置 mihomo 进程接管
界面宿主WPE 自己的窗口(目标程序里没有界面)WPE 自己的窗口
抓包类别发送 / 接收 / 发送到 / 接收自 / WSA*TCP、UDP、HTTP(S)、WebSocket 的请求与响应
HTTPS 明文✗ 拿到的是加密字节✓ 内置 CA 中间人解密
需要目标配合不需要,但可能被反作弊拦截需走代理(其他设备用 WPC 接入,本机程序在「进程设置」用内置内核接管)
端口 / 域名映射✗✓ 本地映射 / 远程映射
账号体系 / 防火墙✗✓ 代理账号 + 黑白名单
改包 / 重放✓ / ✓✓ / ✓(HTTP(S) 类不支持重放)
// 选型建议

目标是 普通桌面程序 / 模拟器 → 优先注入模式,数据最贴近程序逻辑。
目标 有反注入保护、需要抓 HTTPS 明文、或要抓 移动端 / 其他机器 → 走代理模式,设备上装 WPC 接入(见 用 WPC 接入设备)。

核心概念 · 封包是怎么到界面上的

抓到的封包不会直接塞进界面,中间隔着一层 消息队列,这是软件能扛住百万级封包不卡死的关键。

04封包处理流水线 · 理解这张图,就能解释「缓存区」数字和「极速模式」。
Hook / 代理线程 消息队列 MQ先进先出 出队定时器分批取出 界面列表 入队 出队 显示 滤镜引擎改包 / 拦截 先改包,后入队 过滤设置只挡显示,不改数据 队列长度 = 界面「缓存区」数字 极速模式:跳过整条入队链路,只累加计数
  • 界面上的 缓存区(注入模式叫 待入列)就是队列里堆积的条数。持续增长 = 渲染跟不上抓包速度,参考 性能调优
  • 界面 分批 取出封包显示,一时搬不过来的先留在队列里;开着 自动清理 时队列也按同一个「保留条数」封顶,超出的丢最旧的
  • 极速模式(系统设置)会完全跳过入队,界面不显示任何封包,但 滤镜照常工作——用于只改包不看数据的高压场景

核心概念 · 「过滤设置」不是「滤镜」

这是新手最容易踩的坑,两者名字像,作用完全不同:

过滤设置(Leach)滤镜(Filter)
作用对象只影响界面显示影响真实网络数据
是否改包否是(替换 / 换包 / 拦截)
生效时机出队入列表时Hook / 转发时
典型用途只看某个端口 / 某个长度的包改数值、屏蔽心跳、自动应答
入口状态条「设置 ▾」→ 过滤设置左侧导航 → 滤镜列表

核心概念 · 四道关卡,一个封包要过几层

WPE 里有四处地方名字都像「过滤」,但它们串在链路的不同位置上。抓不到包 或 改不动包 时,按这张表从上往下逐层排查,比乱试快得多:

#关卡位置管什么关掉的后果
1拦截设置Hook / 转发的 源头决定 挂哪些钩子、抓哪几类封包(注入 12 个函数开关 / 代理 TCP · UDP 请求响应)这一类封包 根本不产生,后面几层都白搭
2滤镜封包进队列 之前唯一能 改真实数据 的一层:替换 / 换包 / 拦截 / 只显示 / 不显示数据原样通过,不做任何改写
3过滤设置出队 入列表时只决定 界面上看不看得见,不碰网络数据全部封包都显示,列表容易被刷屏
4映射设置内置 SOCKS5 转发 HTTP 的那一段改 HTTP 的响应体与目标地址——滤镜管不到这一类。⚠️ 只对 HTTP,HTTPS 是加密的、匹配不到主机与路径HTTP 内容原样返回
// 怎么用这张表

「一个包都没抓到」→ 查第 1 层;「列表里看不见但计数在涨」→ 查第 3 层(看统计格里的「已过滤」);「滤镜显示命中却没改成」→ 看是不是 HTTP / HTTPS / WebSocket 类别,那几类滤镜根本不匹配。

核心概念 · 套接字与「系统套接字」

  • 套接字(Socket):列表里那一列数字,是目标进程内该连接的 socket 句柄。发包必须指定一个有效套接字,否则发不出去
  • 系统套接字:一个全局变量,供「发送列表」和「机器人」这类事先不知道用哪个 socket 的场合使用
    • 设置:在封包列表 / 代理数据列表右键 → 设置系统套接字
    • 使用:发送编辑里勾「使用系统套接字」;或机器人指令「设置 - 系统套接字」
    • 若它 ≤ 0,日志会记「系统套接字未设置」并放弃发送

核心概念 · 滤镜动作与行颜色

封包列表每一行的底色,代表它被滤镜处理的结果:

动作含义默认配色
替换按规则修改封包的部分字节暗洋红底 / 亮洋红字
换包用滤镜「修改」行的内容重新生成一个全新封包暗琥珀底 / 亮琥珀字
拦截丢弃该封包,不发送 / 不接收暗红底 / 亮红字
仅显示不改内容,但确保这条被显示暗青底 / 亮青字
不显示不改内容,且不入列表(静默)—(看不到)

出厂配色是 暗调底 + 同色相亮字,命中行靠颜色区分,不会盖过正文。要改就 点封包列表工具条左边那四个色块(代理数据页与注入数据页都有),就地改「动作配色」,每项带一个「还原」——挑颜色要看着它在表里的样子,所以入口在图例本身,不在系统设置里。

// 只对新库生效

这四组颜色 会落库,所以从旧版本导入配置时会连同那时的颜色一起带过来,想换成新的出厂配色,点色块里的「还原」即可。

核心概念 · 封包类别

程序内部定义 23 种封包类别,注入模式产生前 13 种,代理模式产生后 10 种。滤镜编辑里的「作用于哪些封包」把它们归并成 12 个开关(注入 8 个 + 代理 4 个,弹窗按当前模式只显示对应的那一半):

模式原始类别滤镜「作用于哪些封包」
注入WS1_Send / WS2_Send发送
WS1_SendTo / WS2_SendTo发送到
WS1_Recv / WS2_Recv接收
WS1_RecvFrom / WS2_RecvFrom接收自
WSASend / WSASendTo / WSARecv / WSARecvFrom,另加 WSARecvEx(并入 WSA接收)WSA发送 / WSA发送到 / WSA接收 / WSA接收自
代理TCP_Req / TCP_RespTCP 请求 / TCP 响应
UDP_Req / UDP_RespUDP 请求 / UDP 响应
HTTP(S)_* / WebSocket_*不参与滤镜匹配
// 易错点

HTTP / HTTPS / WebSocket 类别的包 不会被滤镜命中——那 12 个开关里没有对应项。HTTP 的内容可以用 映射设置 改;HTTPS 与 WebSocket 目前两条路都改不了,只能看。