Repository navigation
Releases: Firefly0619sec/WARDEN
Release list
WARDEN 0.3.7 · 内嵌公钥更新(安全修订)
WARDEN 0.3.7 > 这份草稿由 tools\release.ps1 自动生成 ✓ 发之前自己读一遍、补上"这次改了什么" ✓ ## 文件与校验值(SHA256) ``` 0c2bceebb16c670b0a23e84c264e25c3a2941b6b28105c7673538d9da39249d7 WARDEN.exe
0e95768363ad7695e18ae949938948c37f22a63f739838d8eab2666551fa4565 WARDEN-Setup.exe
9974472926d4365935ed95e4977f2e9c52eebd05b9850566c3ed3398836a9fe1 warden-cli.exe
ee3c81221f2fa70b3e741b1121e116c26993e07a828376f300545175c42e529c RedTeam.exe ## 怎么装 1. 把 `WARDEN-Setup.exe` 拷到目标机器(离线也能装 ✓) 2. 双击 → 按向导走(默认装在 `%LOCALAPPDATA%\Programs\WARDEN`,不需要管理员权限 ✓) ## 怎么验证来源(★ 别只看哈希 ✗ 哈希本身也可能被一起换掉 ✓) 1. 导入发布者公钥(README 里也有同一份指纹 ✓): gpg --recv-keys EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F 2. 校验校验和文件【本身】的签名(这一步才是关键 ✓): gpg --verify SHA256SUMS.txt.asc SHA256SUMS.txt 3. 再对文件算哈希,和 SHA256SUMS.txt 里的逐条比: sha256sum -c SHA256SUMS.txt # Linux / Git Bash Get-FileHash WARDEN-Setup.exe -Algorithm SHA256 # Windows PowerShell ``` 4. 签名在这里 → SHA256SUMS.txt.asc ✓(发布者指纹:`EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F`) ## 许可证 AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源 ✓ ## 这次改了什么 见下一节 ↓
这次改了什么(0.3.7)
唯一实质变更:更新内嵌的发布者公钥。
- 10-12 给发布密钥新增了一个 [S] 签名子密钥(
6DF25BD4A2362396),
从此发布物由子密钥签名、主密钥保持离线 ✓ - 但 0.3.6 及更早版本里内嵌的是旧公钥(不含该子密钥)✗
→ 结果:它们验不过由新子密钥签出来的发布物(实测报No public key) - 0.3.7 把三处内嵌公钥全部更新:
keys\PGP-PUBLIC-KEY.asc、src\PgpVerify.cs、tools\setup\PgpVerify.cs✓
指纹不变(仍是EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F)✓ 只是多了一个子密钥 ✓
附带的工程修复
- 给 4 个含中文却缺 UTF-8 BOM 的脚本补上 BOM(
build.ps1、tools\release.ps1、
tools\pre-release-check.ps1、tools\tools-build.ps1)
—— 否则在 Windows PowerShell 5.1 下会因中文被按 ANSI 解码而解析失败 ✗(实测踩到)
升级提示
- 用 0.3.6 及更早版本的用户,建议升级到 0.3.7:只有 0.3.7 及以后的内置公钥能验证本次签名 ✓
- 发布物签名指纹仍为
EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F✓ 可用它核对 ✓
WARDEN 0.3.6 · 安全修订版
WARDEN 0.3.6 > 这份草稿由 tools\release.ps1 自动生成 ✓ 发之前自己读一遍、补上"这次改了什么" ✓ ## 文件与校验值(SHA256) ``` 2125cf7b6f03e9dd62b033f6490e2be480d000a3b0cd3dd338393573c26715ce WARDEN.exe
bdc1705e41f61168705b32b296ba414dca9f64f41afa7a00ef2057e409160150 WARDEN-Setup.exe
694d3e98d478c0c07dc3e730aef11166618d671454923457ac392f90e2f4ac26 warden-cli.exe
429f675f15fa0f949344d55206022de445c7047602139aa41cc1e926906ceb89 RedTeam.exe ## 怎么装 1. 把 `WARDEN-Setup.exe` 拷到目标机器(离线也能装 ✓) 2. 双击 → 按向导走(默认装在 `%LOCALAPPDATA%\Programs\WARDEN`,不需要管理员权限 ✓) ## 怎么验证来源(★ 别只看哈希 ✗ 哈希本身也可能被一起换掉 ✓) 1. 导入发布者公钥(README 里也有同一份指纹 ✓): gpg --recv-keys EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F 2. 校验校验和文件【本身】的签名(这一步才是关键 ✓): gpg --verify SHA256SUMS.txt.asc SHA256SUMS.txt 3. 再对文件算哈希,和 SHA256SUMS.txt 里的逐条比: sha256sum -c SHA256SUMS.txt # Linux / Git Bash Get-FileHash WARDEN-Setup.exe -Algorithm SHA256 # Windows PowerShell ``` 4. 签名在这里 → SHA256SUMS.txt.asc ✓(发布者指纹:`EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F`) ## 许可证 AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源 ✓ ## 这次改了什么 (待填)
WARDEN v0.3.5(bug 修复:托盘更新入口 + 静默安装不再误删桌面快捷方式)
WARDEN 0.3.5(bug 修复版)
这一版只修 bug ✓ 修的都是用户实测报上来的的两个问题 ✓ 不夹带新功能 ✓
一、托盘没有「更新」入口 ✗→✓
现象(用户原话:「托盘的更新没了」)
托盘右键菜单只有 打开设置界面 / 暂停守护 / 重新加载配置 / 查看日志 / 退出 ✗
更新器 Updater.exe 明明就在程序目录里 ✓ 但界面上没有任何入口 ✗
用户只能自己去程序目录双击 ✓ 体感就是"更新功能不见了"✗
修法:托盘菜单新增一项 「更新 WARDEN(打开更新器)」 ✓
点它 → 启动 <程序目录>\Updater.exe ✓
找不到更新器(例如只拷了 WARDEN.exe 的绿色版)→ 弹窗说明✗ 不静默失败 ✓
验证:主程序干净编译 exit 0 ✓ 4.07 MB ✓ 新菜单串确认在产物里 ✓
★ 如实说明:托盘菜单的真鼠标点击我没法自动化测 ✗ 这一条只验到「代码路径 + 字符串在产物里」✓
二、静默安装会误删桌面快捷方式 ✗→✓
现象(用户原话:「快捷方式被误删了」)
安装器在 desktop=false 时无条件删掉桌面 WARDEN.lnk ✗
→ 于是 --silent --no-desktop 这种静默升级也会删 ✓ 用户的桌面图标就这么没了 ✗
修法:
- 只有交互式安装里用户亲手取消勾选才清 ✓
- 静默安装一律不动用户桌面 ✓(
cleanUnwantedShortcuts默认 false ✓) - 红队自测那条同理:只有它的 exe 真被删掉时,才顺手清指向它的死快捷方式 ✓
验证(真跑一遍 ✓):
装之前桌面快捷方式在 ✓
→ WARDEN-Setup.exe --silent --dir %TEMP%\… --no-launch --no-desktop --no-autostart --no-redteam
→ 退出码 0 ✓ 装之后桌面快捷方式【仍在】✓✓
日志> 桌面快捷方式:静默安装不动用户桌面 ✓(不建也不删 ✓)
日志> 红队自测工具: 未选 → 不安装 ✓(顺手清掉它自己的死快捷方式 ✓)
真实配置:测试后一字不差(a247dba3e9b0d6ea ✓)
三、本版其它
- 版本号 0.3.4 → 0.3.5(产品级 11 处统一 ✓
tools\pre-release-check.ps1闸门全过 ✓) - 发布流程不变 ✓ 载荷闸门(八个必需 exe + 六个语言包 + 每个 exe ≤ 8MB)全过 ✓
- 发布物照旧带 GPG 签名 ✓(
SHA256SUMS.txt.asc✓) - 顺带修:发布前闸门之前会把自己源码里那几个"密钥样式"的字符串当成泄漏 ✗
→ 已加:(exclude)tools/pre-release-check.ps1✓ 现在跑得过 ✓
四、文件与校验值(SHA256)
a03ae110cdade35af2734e3df9c0ef45204715dfbec2ec118f5441bcad2089ba WARDEN.exe
6c2fd081f010f34ca3fcbe0264fd010e17bf186896ccb708e9a16883136ffd7f WARDEN-Setup.exe
49b72b4118f9a69fec9275692dc1f837369d152c8abc382968e5c102234167e7 warden-cli.exe
d6e39af6d93e11f63a48e0154939c937d9837220502ae49a8830df6937eb0542 RedTeam.exe
★ 这份列表自身有签名 → SHA256SUMS.txt.asc ✓(不签名的哈希等于没认证 ✗)
发布者指纹:EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F
五、怎么装
- 把
WARDEN-Setup.exe拷到目标机器(离线也能装 ✓) - 双击 → 向导(默认装在
%LOCALAPPDATA%\Programs\WARDEN✓ 不需要管理员 ✓) - 完成页可以点「打开设置界面」直接配置 ✓
六、许可证
AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源 ✓
WARDEN v0.3.4(安全修订:发布物 GPG 签名 + 反降级 + 修掉写坏配置的同源 bug)
WARDEN 0.3.4(安全修订版)
0.3.3 修了四个工具的 AOT 移植与一批真缺陷 ✓ 本版是信息安全体检后的修订版 ✓
三件事:修掉会写坏配置的同源 bug ✓ 给发布物加来源认证(GPG 签名) ✓ 更新器加反降级门限 ✓
一、修掉「更新器会把配置写坏」的同源 bug ✗→✓
0.3.3 修过安装器里的一处数据破坏级 bug:写自检基线时用了 "$1" + hash + "$3" ✗
而 .NET 的 Regex.Replace 会把 $ 后面连续的数字整段当成捕获组号 ✗
→ 新哈希只要以数字开头(如 4164b4df…)就拼成 $14164b4df… ✗ → 没有 14164 号组 → 按字面量吐出 ✗
→ 配置里那一行变成 $14164b4dfe8523da…b8", ✗ 键名和引号一起被吃掉 ✗ JSON 语法错误 ✗
这一版把同一份 bug 在更新器里的那份也修掉了 ✗→✓
(体检时用 git grep 才发现 ✗ 这段逻辑在安装器与更新器里各抄一份 ✓ 上一版只修了安装器 ✓)
修法(两份都改成一样的 ✓):
- 组引用一律加花括号 →
${1}/${3}✓ - 替换后自检 → 自检不过就一个字都不写 ✓(宁可不动也不能写坏 ✓)
- 写之前先留一份
WARDEN.json.setup-bak✓
二、发布物加上来源认证(GPG 签名)✗→✓
问题:0.3.3 及以前只有 SHA256SUMS.txt ✗
能改下载页的人(或 GitHub 账号被盗 ✗)可以同时换掉 exe 和校验和 ✗ 用户怎么对都对不上 ✓
现在:每次发布自动生成 SHA256SUMS.txt.asc ✓ 签名失败一律中止发布 ✗ 绝不发"说签了其实没签"的包 ✓
发布者指纹(与提交签名同一把钥匙 ✓):
EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F
用户怎么验(发布说明里也写了同一套 ✓):
gpg --recv-keys EBFB6B895D8EEC8F59CE0A26E23876CBBDAE330F
gpg --verify SHA256SUMS.txt.asc SHA256SUMS.txt # ★ 这一步才是关键
Get-FileHash WARDEN-Setup.exe -Algorithm SHA256 # 再逐条对哈希
三、更新器加反降级门限 ✗→✓
问题:更新器原来不比对版本 ✗ → 喂一个旧版本包就等于被降级 ✓
(旧版可能带着已知问题 ✓ 而且它会把 expected_self_hash 也改成旧 exe 的 ✓ 用户完全看不出来 ✗)
顺带说:原来的哈希校验只看同目录的 <zip>.sha256 ✗ —— 那个旁文件可以跟包一起被换掉 ✗ 属于 TOFU ✓
现在:包里 WARDEN.exe 的版本必须 ≥ 已安装版本 ✓ 更旧一律拒绝并明确告知 ✓
读不到任何一边的版本 → 放行(只记日志 ✓ 绝不误伤正常升级 ✓)
实测(喂用户机器上真实的 0.2.5 包 ✗):
[更新] ★★ 拒绝更新:这是【降级】✗ 包里 0.2.5 < 已安装 0.3.4 ✓ 已中止,一个文件都没动 ✓
沙箱 WARDEN.exe 有没有被降级覆盖:没有 ✓✓ 真实配置:一字未动 ✓
四、新增发布前闸门 tools\pre-release-check.ps1 ✗→✓
体检暴露了一个通病:同一段逻辑抄两份、版本号散在 10 个文件里 ✗ → 修一处漏一处 ✓
所以把这类"漏一处就出事"的检查脚本化 ✓ 发布前必须跑 ✓
① 危险的正则替换写法("$N" + 变量 ✗)→ 全仓搜 ✓ 发现就中止 ✗
② 写配置的地方有没有「替换后自检」兜底 ✓
③ 产品版本号在 10 处是否处处一致 ✓(四个 AOT 工具保留各自历史编号 ✓ 不在范围 ✓)
④ 公开仓里有没有密钥/口令 ✗
⑤ 语言包六份是否齐 ✓
五、本版实测(只写实测到的)
pre-release-check.ps1 → 闸门全过 ✓(版本 10 处全 0.3.4 ✓ 无危险写法 ✓ 无密钥 ✓ 语言包 6 份 ✓)
release.ps1 -Version 0.3.4 → 退出码 0 ✓ 载荷 22.2 MB ✓ 载荷闸门三条全过 ✓
GPG 签名 → Good signature(ebfb6b895d8eec8f…)✓ 脚本自校验 + 我独立复验 ✓
沙箱静默安装 → 退出码 0 ✓ 17 个文件 + lang\ 六包 ✓ 每个 exe ≤ 8MB ✓
配置只按设计改 expected_self_hash 一个字段 ✓ 还原后一字不差 ✓
反降级 → 拒绝 0.2.5 ✓ 文件零改动 ✓ 配置零改动 ✓
六、文件与校验值(SHA256)
6d1427a2eeb9aa9c2d87e6515b006924d7dbd9080bba7f9ed69e6a055df4f0fe WARDEN.exe
5862630b741ba721c35813b3275cbf113ec191c34390be6e3144ca7540f84ff2 WARDEN-Setup.exe
5f261504e8035219a1134b43c23699655e4e4882c43613f1facb9e2d9a20bf18 warden-cli.exe
261df83084a5b53149c3bd8d7f7a88cdc24bb3837137b776a03e216ba26df01b RedTeam.exe
★ 上面这份列表自身有 GPG 签名 → SHA256SUMS.txt.asc ✓(不签名的哈希等于没认证 ✗)
七、兼容性与怎么装
- 配置格式未变 ✓ 命令行参数未变 ✓ 语言包位置未变 ✓
- 装法同 0.3.3:双击
WARDEN-Setup.exe→ 向导 → 完成页「打开设置界面」✓ - 已经从 0.3.3 装过的用户:直接覆盖安装 0.3.4 即可 ✓(本版修的是更新器路径 ✓)
八、许可证
AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源 ✓
WARDEN v0.3.3(Beta 3 · 四个 WinForms 工具全转原生 AOT)
⚠ 本版的更新器有一个会把配置写成非法 JSON 的 bug ✗ 请改用 v0.3.4 ✓
(安装器路径在 0.3.3 里已修 ✓ 受影响的是 Updater.exe 那条路径 ✓)
WARDEN 0.3.3 > Beta 3 第 3 次改版:四个 WinForms 工具全部转成原生 Win32/GDI + Native AOT 单文件 ✓ > 并修掉全量测试抓出来的一批真缺陷(含两个会破坏用户数据的 ✗) ## 一、体积与依赖(这次的主题) | 工具 | 改造前 | 改造后 | 版本 | | --- | --- | --- | --- | | 卸载器 Uninstaller | 49.25 MB | 1.75 MB(-96.4%) | 0.3.0 | | 更新器 Updater | 49.24 MB | 2.44 MB(-95.1%) | 0.3.1 | | 日志查看器 LogView | 49.25 MB | 2.98 MB(-93.9%) | 0.3.2 | | 设置 Settings | 47.03 MB | 3.12 MB(-93.4%) | 0.3.3 | | 帮助 Help | 174 KB(空壳 · 打不开 ✗) | 2.41 MB(可用 ✓) | 0.3.3 | | 命令行 warden-cli | 1.78 MB | 1.70 MB | 0.3.3 | | 红队自测 RedTeam | 1.06 MB | 1.01 MB | 0.3.3 | | 在线安装器 | 2.66 MB | 2.54 MB | 0.3.3 | | 主程序 WARDEN | 4.06 MB | 4.06 MB | 0.3.3 | 安装载荷实测:201 MB → 22.1 MB ✓ 目标机不再需要安装 .NET 运行时 ✓ ## 二、修掉的真 bug(都不是体验优化) 数据安全类(本轮全量测试抓到) 1. 设置界面读不出规则,而且保存会删掉规则 ✗ 主程序写配置用的键是大写 "Rules",而设置界面的解析正则没开大小写不敏感 → 规则表永远是空的;保存时按空表写回 "rules": [] → 打开设置点一下「保存配置」,用户的规则就全没了。 实测:沙箱放 2 条规则 → 修前 0 行 → 修后 2 行 ✓ 2. 安装器会把自检基线写坏,配置变成非法 JSON ✗ 安装后要把新 WARDEN.exe 的哈希写回 expected_self_hash,但替换串写成 "$1" + hash + "$3", 而 .NET 的 Regex.Replace 会把 $ 后连续数字整段当组号 → 新哈希以数字开头时拼成 $14164b4df… → 键名与引号一起被吃掉 → JSON 语法错误(用户看到的是"装完新版本就打不开了")。 已修:组引用加花括号 ${1} ✓ 替换后自检 ✗ 不过就一个字都不写 ✓ 写前留 .setup-bak ✓ 实测:配置只改这一个字段 ✓ 值 = 装出来的 exe 真 SHA256 ✓ JSON 合法 ✓ 3. 设置界面保存会删掉它不管的配置键 ✗ SaveConfig 整份重写 → Emergency / first_run_done / HardBlockNote 全丢。 已修:保存前把"不归本工具管"的顶层块原样抄过去 ✓ 实测保存后 14 个顶层键一个不少 ✓ 4. 卸载器误删配置与日志(0.2.5 起存在 · 0.2.6 已修) 卸载确认窗的返回值被当成"是否删除数据" → 不勾选也会删。现已分开 ✓ 可用性类 5. 设置界面在中文机器上显示英文(AOT 开 InvariantGlobalization 后 CurrentUICulture 恒为空串, 而兜底写的是 en-GB)→ 已改成先问 Windows 界面语言,认不出来一律兜底简体中文 ✓ 6. 设置界面整窗画不出来、按钮点不动 ✗(控件全用自建窗口类,没有绘制/点击处理; 且 Win32 子窗口"后建的排在下"→ 底栏盖住按钮) → 全换真系统控件(STATIC/BUTTON/EDIT/SysTabControl32)+ 容器压 z 序最底 ✓ 实测:真鼠标点「保存配置」→ 日志 WM_COMMAND id=101 ✓ 7. 设置界面规则页五个按钮全哑(按钮挂在规则宿主下,宿主的窗口过程吞掉 WM_COMMAND) → 宿主转发给同一分发器 ✓ 实测:新增规则弹对话框 ✓ 编辑选中弹提示 ✓ 导出规则弹另存为 ✓ 8. 帮助界面四个按钮全部无反应(父窗口是系统 STATIC 底栏 → 吞 WM_COMMAND)→ 已挂主窗 ✓ 9. 帮助打不开(载荷里只有 174 KB 的 apphost 空壳,真代码在同目录 219 个 DLL 里)→ 单文件 AOT ✓ 10. 高 DPI 布局错位(DPI 在建窗之后才算,控件在 WM_CREATE 里就用它定位) → 改成建窗前定好 ✓ 实测 96/120/144 三档控件尺寸与坐标精确成比例 ✓ 11. 向导的 --no-desktop 完全失效(勾选框写成 Checked = DesktopWanted || true 恒为真) → 实测即使带 --no-desktop 装到临时目录,桌面上照样多出一个指向临时目录的坏快捷方式 ✗ 已修 ✓ 实测桌面快捷方式不再多出来 ✓ 发布链类 12. 语言包从未随包发布:设置界面从 <程序目录>\lang\ 读语言包,而载荷里一直没有这个目录。 已补进发布链 ✓ 并先跑一致性校验(340 键 × 6 包)当闸门 ✓ 13. 发布脚本两处硬伤(本轮真跑才暴露):① 用了还没定义的 $appDir → 脚本直接抛异常 ✗ ② 语言包在构建【前】复制,而构建会清空 dist\ → 又被抹掉 ✗ 已修 ✓ 并新增载荷闸门:拆开 payload.zip 核对「八个必需 exe + 六个语言包 + 每个 exe ≤ 8MB」✓ 14. 语言包结构错误:46 个点号界面键写在 [log.rule] 分节里 → 帮助界面显示成 help.title 这类键名 ✗ 已移回 [ui] 分节 ✓ ## 三、安装流程变化(按你的要求) 安装完成后:先出安装向导 ✓ 向导完成页上有一个 「打开设置界面」 按钮 ✓ 点它 → 启动 Settings.exe → 向导关闭 → 下一个出现的界面就是设置 ✓ 实测(真鼠标走完向导):环境检测 → 选择安装位置 → 正在安装 → 安装完成 → 点「打开设置界面」 → Settings.exe 起来 ✓ 向导自行退出 ✓ 桌面/开始菜单/配置都按预期 ✓ ## 四、本版实测数据(只写实测到的) 设置界面:干净编译 exit 0 ✓ 3.12 MB ✓ 客户区 830x640 ✓ 底部条三控件 (12,596,110x32)/(130,596,100x32)/(495,602,330x24) ✓ 与规格精确一致 ✓ 规则表四列 [52,185,135,400] ✓ 78 个子控件 ✓ 创建失败 0 行 ✓ 真鼠标横扫页签带自校准 → 7 个页签全部可切 ✓ 切页后标题与列标题跟随语言刷新 ✓ 哈希填入 = 沙箱 WARDEN.exe 的真 SHA256(独立复算一致 ✓) 高 DPI 96/120/144:客户区宽度 830/1038/1245 ✓ 控件与列宽精确成比例 ✓ 六语言:6 个包 × 340 键 ✓ 键集合完全一致 ✓ 零空值 ✓ 真机逐语言截图哈希互不相同 ✓ 沙箱静默安装:退出码 0 ✓ 3 秒 ✓ 17 个文件 + lang\ 六包 ✓ 每个 exe ≤ 8MB ✓ 只改 expected_self_hash 一个字段 ✓ 真实配置测试后一字不差还原 ✓ 向导链路:四步走完 ✓ 点「打开设置界面」→ Settings.exe 启动 ✓ 发布载荷:22.1 MB ✓ 载荷闸门三条全过 ✓ ## 五、文件与校验值(SHA256) 4164b4dfe8523da16fa2a41acc1b7eaf98c536f66130a3158024c647e401a5b8 WARDEN.exe 083c0078962a2c30fe7ccd0e0ac20a5e1d83d54227d8076107ca85873b88b98e WARDEN-Setup.exe 8606bbdb3b7c52ac7a968c400407661b32a3a994ce691e9f9bef7e5edc3a1247 warden-cli.exe 88e4f51ce19265e4f3150a313b83043a28e22c9fa2346f9a9706f3c73510f36b RedTeam.exe ## 六、怎么装 1. 把 WARDEN-Setup.exe 拷到目标机器(离线也能装 ✓) 2. 双击 → 按向导走(默认装在 %LOCALAPPDATA%\Programs\WARDEN,不需要管理员权限 ✓) 3. 装完先出向导 → 想直接配置就点完成页的「打开设置界面」✓ 4. 想自己验证来源:对照上面的 SHA256 ✓ ## 七、兼容性 * 配置文件格式未变 ✓ 旧版 %LOCALAPPDATA%\WARDEN\WARDEN.json 可直接用 ✓ * 命令行参数未变 ✓(--silent / --dir / --no-desktop / --no-autostart / --no-redteam / --no-launch) * 语言包位置:程序目录 lang\(随包发布 ✓)与 %LOCALAPPDATA%\WARDEN\lang\(可覆盖 ✓) ## 八、许可证 AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源 ✓
WARDEN 0.2.6 — 安全修复:卸载器不再误删配置与日志
WARDEN 0.2.6 —— 安全修复版(建议 0.2.5 用户升级)
修了什么(★ 这是一个真 bug,不是体验优化)
卸载器会误删配置与日志:
在 0.2.5 中,卸载确认窗返回的是「用户是否确认卸载」,
但代码把它当成了「是否删除配置与日志」——
于是即使不勾选「同时删除配置与日志」那个选项,只要点了「卸载」并确认,配置与日志就会被删掉。
0.2.6 把两件事彻底分开:
- 确认与否 = 对话框的返回值
- 删不删数据 = 复选框的真实状态(只有真勾了才会删)
修复后实测日志原文:
[卸载] 用户确认卸载;删除数据=False(来自复选框)
[卸载] 数据目录【保留】✓
一起改进的两处界面问题
- 卸载窗蓝色标题栏上的文字原来被一层浅灰底色盖住、几乎看不清 → 已修复
- 「确定连配置与日志一起删掉吗?」的默认按钮原来是「是」→ 已改为默认「否」(防手快回车)
文件与校验值(SHA256)
a5a04d3716e050eb486c66f73786bbe3c990690e9c930c7679abff37dccae07a WARDEN.exe
29ab12db87a0c0bbf5c0c93a00797db4a80a1d9ffd8c93c9dcaea90486bc1606 WARDEN-Setup.exe
9357545624a209724947f57d793bf171fcf3771647df7a1811f7f8dbb65f6e59 warden-cli.exe
d72545d7be42601b9ade4669c69a421332bc9889ecaa5d185bae7e53dff29663 RedTeam.exe
怎么装
- 把
WARDEN-Setup.exe拷到目标机器(离线也能装) - 双击 → 按向导走(默认装到
%LOCALAPPDATA%\Programs\WARDEN,不需要管理员权限) - 想自己验证来源:对照上面的 SHA256
如果你已经中招
升级到 0.2.6 后,配置会以默认值重建(%LOCALAPPDATA%\WARDEN\WARDEN.json),
把之前的设置重新配一遍即可。日志文件会重新生成。
许可证
AGPL-3.0-or-later —— 注意:把 WARDEN 做成在线服务也要开源
WARDEN 0.2.5(Beta 2 · 第 5 次改版)
WARDEN 0.2.5(Beta 2 · 第 5 次改版)
这一版改了什么
- 安装包终于"装完能用" ✓(审计发现的阻断级问题)
以前的载荷只有主程序与设置界面 ✗ 帮助/日志查看/更新/卸载/红队全都没进去 ✓
现在 8 个可执行文件全部随包 ✓(代价:安装包 93 MB → 226.7 MB ✗ 下一步用 AOT 优化体积 ✓) - 命名清理(用户要求"别每个都套守望人"✓)
工具 exe 去掉前缀:\Settings.exe\ / \Help.exe\ / \LogView.exe\ /
\Updater.exe\ / \Uninstaller.exe\ / \RedTeam.exe\ ✓
图标:\icon.ico\ / \icon-paused.ico\ / \icon-emergency.ico\ ✓
保留:\WARDEN.exe\(本体 ✓)与 Release 下载名 \WARDEN-Setup.exe\ ✓ - 在线安装器:--check\ 现在只报版本与"会下哪个文件" ✓(以前它跑的是环境检测 ✗)
JSON 解析从正则手撕换成 System.Text.Json ✓(AOT 友好 ✓ 零新依赖 ✓)
挑资产会跳过 arm64 ✓(换仓库时挑错过 ✓) - 语言包:三地繁体包共修正 339 条"照抄英文/未翻译"的值 ✓
en-US 改用美式拼写(与 en-GB 分化 ✓)✓ \docs\语言包.md\ 重写 ✓ - 离线安装包新增安装进度条 ✓(后台线程 + 逐文件回报 ✓ 不再假死 ✓)
- 托盘图标换成红星(16px 下占比从 6% 提到 34% ✓ 星形理论上限 ✓)
- 中英 README 各加「关于那颗红星」✓ 第三方声明补齐 msquic/zlib-ng 许可正文 ✓
下载
| 文件 | 说明 |
|---|---|
| \WARDEN-Setup.exe\ | ★ 离线安装包(226.7 MB ✓ 含全部工具 ✓) |
| \WARDEN-Online-Setup.exe\ | 在线安装器(向导 + 环境检测 + 进度条 + 通用参数 ✓) |
| \warden-cli.exe\ | 命令行 ✓ |
| \SHA256SUMS.txt\ | 校验值(★ 装前对一下 ✗) |
合规
本体 AGPL-3.0-or-later ✓ 内嵌 .NET 运行时(MIT ✓)
随包:\THIRD-PARTY-NOTICES.md\ + \第三方声明\\ ✓ 应用内:帮助工具「开源许可」✓
尚未签名
SignPath Foundation 已受理 ✓ 审核中 ✓ → SmartScreen 会提示未知发布者 ✗ 请核对 SHA256 ✓
WARDEN 0.2.4(Beta 2 · 第 4 次改版)
WARDEN 0.2.4(Beta 2 · 第 4 次改版)
版本号读法:x.y.z = 第 x 个正式版之后的第 y 个 Beta 的第 z 次改版 ✓ 现在还没有正式版(x=0)✓
这一版最要紧的一件事:安装包终于"装完能用"了
审计发现的问题:以前的安装包内嵌载荷只有主程序和设置界面 ✗
帮助 / 日志查看 / 更新 / 卸载 / 红队 全都没打进去 ✗
→ 装完点托盘那些菜单会指向不存在的程序 ✓
现在 8 个可执行文件全部随包 ✓ 代价是安装包从 93 MB 涨到 227 MB ✗
(体积问题下一步用 AOT 重写那几个 WinForms 工具来解决 ✓ 先保证"能用" ✓)
这一版改了什么
- 在线安装器:真向导(第 1 步环境检测 → 下载 → 校验安装 ✓)
· 环境不满足不放行 ✗ 按钮变「帮我装好」✓ 会打开微软官方运行库页 ✓
· 进度条带速度与剩余时间 ✓(正在下载… 42% (39.1/93.1 MB) 3.2 MB/s 剩余约 17 秒 ✓)
· 下载断点续传 + 自动重试 3 次 + 连接/总时长超时分离 ✓
· 校验通过后先拉起离线安装包,再关掉自己 ✓(交接失败则保留窗口并给出文件路径 ✓)
· 通用化:--repo <owner>/<name>/--asset <文件名>/--prerelease都能传 ✓
不写死版本号、仓库、资产名 ✓ 问 GitHub 要最新版 ✓ - 离线安装包:新增安装进度条 ✓
· 根因修的是"在 UI 线程同步跑长任务导致窗口假死"✗ 现在改成后台线程 + 逐文件回报 ✓
· 状态行会写「正在释放文件 12 / 254:xxx」✓ - 标题栏:标题与副标题那一栏改成真正的蓝色背景(原来是手绘底色 ✗ 子控件不继承 → 白字压浅灰看不清 ✓)
- 托盘图标:换成红星(《红星照耀中国》那颗 ✓ 不是红心 ✗)
· 星形半径从画布 44% 放大到 94% ✓(16px 下不透明占比 6% → 34% ✓ = 五角星的理论上限 ✓)
· 三态:正常=正红金边 / 暂停=暗红灰 / 紧急=亮红金边+外发光 ✓
· 中英双版 README 各加了一段「关于那颗红星」✓ - 合规:
·src/Program.cs里主程序的版本号以前一直停在 0.2.1 ✗ 已统一 ✓
·WARDEN.exe的 FileVersion 以前是 0.1.0.0 ✗(csproj 字段不统一 ✓)已修 ✓
· 补齐 msquic(MIT)与 zlib-ng(zlib)的许可正文与版权行 ✓
· 六个语言包各去掉一个重复 key ✓zh-Hans补齐 88 个缺失 key ✓
· 五份文档里陈旧的0.1.0-beta.2状态全部更新 ✓
下载
| 文件 | 说明 |
|---|---|
WARDEN-Setup.exe |
★ 离线安装包(227 MB ✓ 含全部工具 ✓ 不需要网络 ✓) |
WARDEN-Online-Setup.exe |
在线安装器(2.8 MB ✓ 向导 + 环境检测 + 进度条 ✓) |
warden-cli.exe |
命令行 ✓ |
SHA256SUMS.txt |
校验值(★ 装之前对一下 ✗) |
合规与许可
- 本体 AGPL-3.0-or-later ✓ 内嵌 .NET 运行时(MIT ✓)
- 随包声明:
THIRD-PARTY-NOTICES.md+第三方声明\(含 .NET 官方两份原文 ✓) - 应用内:帮助工具「开源许可」章节 ✓(六语言 ✓)
尚未代码签名
SignPath Foundation 申请已受理 ✓ 审核中 ✓
→ SmartScreen 会提示"未知发布者"✗ 请对照 SHA256SUMS.txt 校验 ✓
WARDEN 0.2.3(Beta 2 · 在线安装器改版)
WARDEN 0.2.3(Beta 2 · 在线安装器改版 · 正式发布)
这一版的重点:在线安装器
- 从控制台改成向导窗口 ✓
之前双击是个黑底白字的控制台 ✗ 还问 "Continue? (Y/n)" ✗
现在是一个正常的 Windows 向导窗口:标题区 + 状态大字 + 进度条 + 三个按钮 ✓ - 体积 5647 KB → 2473 KB(小 56% ✓)
· 不再用 HttpClient(它拖进 Sockets/TLS/代理一整条链)✓ 改用系统自带 curl.exe ✓
· 下载进度自己轮询临时文件大小 ✓ 每 300 毫秒刷一次 ✓ - 安全逻辑不变 ✓
· 下载后校验 SHA256 ✓ 对不上就【拒绝安装】✗ 文件留着让你自己看 ✓
· 没有 SHA256SUMS.txt 也不自动运行 ✗
· 主程序完全不联网 ✓ 只有这个窗口会访问 GitHub 一次 ✓
调试记录(写出来给后来人省时间 ✓)
这次窗口一直 fail-fast(退出码 0xC0000409 ✗ 连托管异常都进不去 ✗ 没有日志 ✗)
二分定位过程:
- 先排除"结构体里的字符串没标 LPWStr"✗ 不是它 ✓
- 再排除 InvariantGlobalization / UseSystemResourceKeys ✗ 也不是 ✓
- 加环境变量 WARDEN_MIN:只建窗口不建子控件 → 活着 ✓ → 定位到子控件段 ✓
- 再加 WARDEN_NOBLUE:跳过 WM_CTLCOLORSTATIC 染蓝 → 活着 ✓ → 找到真凶 ✓
★ 结论:那个"靠 WM_CTLCOLORSTATIC 返回画刷给标题区染蓝"的经典技巧 ✗
在 Native AOT 下会 fail-fast ✗ 换成普通 STATIC + 粗体字即可 ✓
(观感略朴素一点,但稳 ✓ 而且体积没变 ✓)
下载
| 文件 | 说明 |
|---|---|
WARDEN-Setup.exe |
★ 离线安装包(推荐 ✓ 不需要网络) |
WARDEN-Online-Setup.exe |
在线安装器(2.4 MB ✓ 向导窗口 ✓ 校验 SHA256 ✓) |
warden-cli.exe |
命令行 ✓ |
SHA256SUMS.txt |
校验值(★ 装之前对一下 ✗) |
合规
- 本体 AGPL-3.0-or-later ✓ 内嵌 .NET 运行时(MIT ✓)
- 声明随包:
THIRD-PARTY-NOTICES.md+第三方声明\✓ - 应用内:帮助工具「开源许可」章节 ✓(六语言 ✓)
尚未代码签名
SignPath Foundation 申请审核中 ✓ → SmartScreen 会提示"未知发布者"✗
请对照 SHA256SUMS.txt 校验 ✓
WARDEN 0.2.2(Beta 2 合规小修)
WARDEN 0.2.2(Beta 2 合规小修 · 预发布)
这一版改了什么
- 补齐第三方组件声明(合规 ✓)
· 新增THIRD-PARTY-NOTICES.md:逐项列出随包的第三方组件
· 收录 .NET 的 MIT 全文与官方第三方声明原文(第三方声明\)
· ★ 复核时发现两个【微软声明里没点名、但我们确实打进了包】的组件:
- msquic(QUIC 栈 ✓ MIT ✓)
- zlib-ng(System.IO.Compression.Native用 ✓ zlib 许可 ✓)
→ 已在声明里单独列出并注明出处 ✓ - 声明随包:安装后的程序目录里就能看到
THIRD-PARTY-NOTICES.md与第三方声明\(.NET 的 MIT 全文 ✓) - 应用内入口:帮助工具新增「开源许可」章节 ✓(六语言 ✓)
下载
| 文件 | 说明 |
|---|---|
WARDEN-Setup.exe |
★ 离线安装包(推荐 ✓ 不需要网络) |
WARDEN-Online-Setup.exe |
在线安装器(约 5 MB ✓ 校验 SHA256 ✓) |
warden-cli.exe |
命令行 ✓ |
SHA256SUMS.txt |
校验值(★ 装之前对一下 ✗) |
安全与隐私
- 主程序完全不联网 ✓ 不收集数据 ✓ 零 NuGet 依赖 ✓
- 许可证:AGPL-3.0-or-later(本体)✓ MIT(内嵌 .NET 运行时 ✓)
- 安装包尚未代码签名(SignPath Foundation 审核中 ✓)
→ SmartScreen 会提示"未知发布者" ✗ 请对照SHA256SUMS.txt校验 ✓