起步与概念
本章覆盖 安装启动、首页三种入口、多开数据库,以及贯穿全书的 核心概念。读完这一章,你会知道自己该走注入模式还是代理模式。
本教程按 2.1.8 beta 版整理,界面为全新的 AntdUI(左侧导航 + 明暗主题)。
2.1.x 界面示意图为按实际布局绘制的 结构图(同款赛博配色),红圈序号与下方图例一一对应。
仍在使用 1.0.0.36 老版本?请下载 旧版教程 PDF。
先照着走一遍,把「能看到封包」这件事跑通;每一步背后的原理,本章与后面几章会逐个拆开。
- 以管理员身份 运行
WinsockPacketEditor.exe,进入首页的三张卡片。 - 挑一条路:抓普通桌面程序 / 模拟器走 注入模式;要 HTTPS 明文、或要抓手机与另一台电脑走 代理模式。
- 注入模式:在弹出的进程列表里选中目标进程,点「注入」,WPE 界面会出现在目标程序内。
代理模式:先到「菜单 → 代理设置」勾上启用 SOCKS5 代理(默认端口 1080),保存。 - 设置拦截范围:「菜单 → 拦截设置」勾上要挂钩的收发函数(注入模式)或 TCP / UDP 的请求与响应(代理模式)。这一步必须在点「开始」之前完成,开始之后再改不生效。
- 点工具栏「开始」,让目标程序产生一次网络行为,封包就会实时滚进列表。
- 双击任意一行 打开封包编辑窗口,改几个字节后点「发送」,就完成了一次最小闭环的抓包 → 改包 → 重放。
系统要求
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10 / 11 · Server 2019 / 2022(推荐 x64) |
| 运行库 | .NET Framework 4.8 |
| 权限 | 必须管理员权限。非管理员启动时会自动以 runas 重启自身 |
| 目标程序 | 32 位 / 64 位均支持,按目标进程位数自动选择注入模块 |
| 数据存放 | SQLite,默认 C:\WPE64DB\<版本号>.db |
| 部署方式 | 单文件绿色版:压缩包解压后只有一个 exe,双击即用,无需安装、无自动更新 |
下载与安装
WPE x64 是 单文件绿色版:压缩包里只有一个 exe,不需要安装、不写注册表、不进「添加或删除程序」。想换个位置放,整个 exe 拖走即可;不想要了,删掉 exe 与数据库目录就干净了。
- 下载压缩包:到 下载中心 选最新版,走 蓝奏云 或 百度网盘 任一渠道(百度网盘需要提取码,页面上有)。
- 先解除锁定:在下载得到的压缩包上右键 →「属性」→ 勾选底部的「解除锁定」→ 应用。这一步在解压之前做,见下方警告。
- 解压到任意目录:里面就一个
WinsockPacketEditor.exe。放桌面、放 D 盘、放 U 盘都行,路径尽量别带中文与空格。 - 双击运行:不是管理员会弹 UAC,选「是」即可(见 首次启动)。若系统弹出 SmartScreen 的「Windows 已保护你的电脑」,点「更多信息」→「仍要运行」。
从网上下载的压缩包会被 Windows 打上 Zone.Identifier 标记。如果先解压再解锁,标记已经跟着落到 exe 上了,注入时大概率报 STATUS_INTERNAL_ERROR (Code: 15)。忘了做也能补救:在解压出来的 exe 上右键「属性 → 解除锁定」,或直接删掉重新来一遍。
需要 .NET Framework 4.8。Windows 10 1903 及以后的版本已内置,一般不用管;若启动时报缺少运行库,到微软官网下载 .NET Framework 4.8 运行时装上再试。
怎么升级到新版本
没有自动更新——软件不会自己联网检查版本,也不会弹升级提示。换新版就是重新走一遍上面的流程:
- 到 下载中心 看更新日志,确认这一版有你要的东西。
- 下载新压缩包 → 解除锁定 → 解压出新的 exe。
- 关掉正在运行的旧版(注入模式下先「停止」并退出被注入的程序),再运行新 exe。
- 旧版的 exe 可以直接删掉,也可以留着——两个版本的 exe 放在一起并不冲突。
配置存在 C:\WPE64DB\<程序集版本>.db 里,文件名跟着版本走。所以升级后打开新版,滤镜、发送、机器人、代理账号这些会是空的——数据没丢,只是在旧版本的那个 .db 里。
要把配置带过去:在旧版 用「备份设置」导出 .sb,到新版 再导入。建议每次升级前都顺手导一份。
首次启动
- 双击启动,非管理员时会弹出 UAC 提权对话框,选择「是」——程序会退出并以管理员身份重启。
- 当前为 beta 版,会弹出提示框「这是一个测试版程序」,点 知道了 继续。
- 进入 首页,在这里选择工作模式。
首页 · 三个入口
官网地址不可达时,程序会自动改用备用 IP http://101.132.222.195,因此断网环境下点击外链可能无响应属正常现象。
多开设置(数据库)
WPE 的 全部配置——系统设置、滤镜、发送、机器人、仓库、代理账号、映射、黑白名单、WPC 服务器与公告——都存放在 同一个 SQLite 文件 里。因此:
切换数据库路径 = 换一整套独立配置 = 实现多开。
- 数据库路径:默认
C:\WPE64DB。点「选择路径」用文件夹对话框挑目录 - 数据库名称:只读,固定为
<程序集版本>.db,例如2.1.8.0.db。换版本会自动换库 - 界面原文提示
- 点「保存」后立即在该路径下建库建表,并提示「多开设置已保存」
多开操作步骤
- 首页 → 多开设置,把路径改为
D:\WPE_A,保存。 - 回首页选择模式,此后所有配置读写都指向新库。
- 要开第二份:再启动一个 WPE 实例,路径改为
D:\WPE_B,保存后再选模式。
注入模式的库路径是 随注入参数传进目标进程 的(InjectionParameters.DataBasePath),所以注入端和宿主端读写的始终是同一个库,不会串。
核心概念 · 两种模式怎么选
| 能力 | 注入模式 | 代理模式 |
|---|---|---|
| 原理 | EasyHook 注入 + WinSock API Hook | 自建 SOCKS5 服务器 + SunnyNet MITM |
| 界面宿主 | 目标进程内 | WPE 自己的进程 |
| 抓包类别 | 发送 / 接收 / 发送到 / 接收自 / WSA* | TCP、UDP、HTTP(S)、WebSocket 的请求与响应 |
| HTTPS 明文 | ✗ 拿到的是加密字节 | ✓ 内置 CA 中间人解密 |
| 需要目标配合 | 不需要,但可能被反作弊拦截 | 需走代理(或用驱动强制接管) |
| 端口 / 域名映射 | ✗ | ✓ 本地映射 / 远程映射 |
| 账号体系 / 防火墙 | ✗ | ✓ 代理账号 + 黑白名单 |
| 改包 / 重放 | ✓ / ✓ | ✓ / ✓(HTTP(S) 类不支持重放) |
目标是 普通桌面程序 / 模拟器 → 优先注入模式,数据最贴近程序逻辑。
目标 有反注入保护、需要抓 HTTPS 明文、或要抓 移动端 / 其他机器 → 走代理模式。
核心概念 · 封包是怎么到界面上的
抓到的封包不会直接塞进界面,中间隔着一层 消息队列,这是软件能扛住百万级封包不卡死的关键。
- 界面上的 缓存区 数字就是队列里堆积的条数。持续增长 = 渲染跟不上抓包速度,参考 性能调优
- 极速模式(系统设置)会完全跳过入队,界面不显示任何封包,但 滤镜照常工作——用于只改包不看数据的高压场景
核心概念 · 「过滤设置」不是「滤镜」
这是新手最容易踩的坑,两者名字像,作用完全不同:
| 过滤设置(Leach) | 滤镜(Filter) | |
|---|---|---|
| 作用对象 | 只影响界面显示 | 影响真实网络数据 |
| 是否改包 | 否 | 是(替换 / 换包 / 拦截) |
| 生效时机 | 出队入列表时 | Hook / 转发时 |
| 典型用途 | 只看某个端口 / 某个长度的包 | 改数值、屏蔽心跳、自动应答 |
| 入口 | 菜单 → 过滤设置 | 左侧导航 → 滤镜列表 |
核心概念 · 四道关卡,一个封包要过几层
WPE 里有四处地方名字都像「过滤」,但它们串在链路的不同位置上。抓不到包 或 改不动包 时,按这张表从上往下逐层排查,比乱试快得多:
| # | 关卡 | 位置 | 管什么 | 关掉的后果 |
|---|---|---|---|---|
| 1 | 拦截设置 | Hook / 转发的 源头 | 决定 挂哪些钩子、抓哪几类封包(注入 12 个函数开关 / 代理 TCP · UDP 请求响应) | 这一类封包 根本不产生,后面几层都白搭 |
| 2 | 滤镜 | 封包进队列 之前 | 唯一能 改真实数据 的一层:替换 / 换包 / 拦截 / 只显示 / 不显示 | 数据原样通过,不做任何改写 |
| 3 | 过滤设置 | 出队 入列表时 | 只决定 界面上看不看得见,不碰网络数据 | 全部封包都显示,列表容易被刷屏 |
| 4 | 映射设置 | 代理模式的 HTTP(S) 通道 | 改 HTTP / HTTPS 的响应体与目标地址——滤镜管不到这一类 | HTTP(S) 内容原样返回 |
「一个包都没抓到」→ 查第 1 层;「列表里看不见但计数在涨」→ 查第 3 层(看统计条的「过滤 :」);「滤镜显示命中却没改成」→ 看是不是 HTTP(S) 类别,该走第 4 层。
核心概念 · 套接字与「系统套接字」
- 套接字(Socket):列表里那一列数字,是目标进程内该连接的 socket 句柄。发包必须指定一个有效套接字,否则发不出去
- 系统套接字:一个全局变量,供「发送列表」和「机器人」这类事先不知道用哪个 socket 的场合使用
- 设置:在封包列表 / 代理数据列表右键 → 设置系统套接字
- 使用:发送编辑里勾「使用系统套接字」;或机器人指令「设置 - 系统套接字」
- 若它 ≤ 0,日志会记「系统套接字未设置」并放弃发送
核心概念 · 滤镜动作与行颜色
封包列表每一行的底色,代表它被滤镜处理的结果:
| 动作 | 含义 | 默认配色 |
|---|---|---|
| 替换 | 按规则修改封包的部分字节 | 暗金底 / 黑字 |
| 拦截 | 丢弃该封包,不发送 / 不接收 | 深红底 / 白字 |
| 换包 | 用滤镜「修改」行的内容重新生成一个全新封包 | 亮蓝底 / 黑字 |
| 不修改 - 只显示 | 不改内容,但确保这条被显示 | 浅绿底 / 黑字 |
| 不修改 - 不显示 | 不改内容,且不入列表(静默) | —(看不到) |
配色可在 系统设置 → 滤镜动作 里自定义,每项都有「还原」按钮。
核心概念 · 封包类别
程序内部定义 23 种封包类别,注入模式产生前 13 种,代理模式产生后 10 种。滤镜的「作用类别」把它们归并成 12 个开关:
| 模式 | 原始类别 | 滤镜作用类别 |
|---|---|---|
| 注入 | WS1_Send / WS2_Send | 发送 |
WS1_SendTo / WS2_SendTo | 发送到 | |
WS1_Recv / WS2_Recv、WSARecvEx | 接收 / WSA 接收 | |
WSASend / WSASendTo / WSARecv / WSARecvFrom | 对应 WSA 四项 | |
| 代理 | TCP_Req / TCP_Resp | TCP 请求 / TCP 响应 |
UDP_Req / UDP_Resp | UDP 请求 / UDP 响应 | |
HTTP(S)_* / WebSocket_* | 不参与滤镜匹配 |
HTTP / HTTPS / WebSocket 类别的包 不会被滤镜命中——滤镜的作用类别只有 12 个开关,没有对应项。要改这些内容请用 映射设置。