1. 项目基础信息
| 属性 | 说明 |
|---|---|
| 项目名称 | UCCZip(UCanCode Zip / UCCZip 2026) |
| 开发商 | UCanCode Software |
| 官方网站 | https://www.ucancode.net |
| 技术支持 | Support@ucancode.net |
| 产品定位 | Windows 平台专业压缩管理器,对标 WinRAR / 7-Zip / PeaZip 的核心体验,强调内置引擎、Shell 集成与 ZIP 密码恢复 |
| 版本标识 | 资源文件 0.7.0.0;关于对话框显示 V2.0;运行时 applicationVersion = 1.0.0 |
| 许可证 | Copyright (C) 1999–2026 UCanCode Software(项目源码含第三方组件,各自遵循对应开源许可) |
解决的问题:在 Windows 上提供一站式归档管理——无需安装 WinRAR 即可解压 RAR,无需 7z.exe 即可处理 7z/TAR/GZIP/XZ;通过资源管理器右键与 Win11 稀疏包实现系统级集成;对遗忘密码的 ZipCrypto/AES ZIP 提供多策略恢复;支持创建自解压 EXE 与归档样本库管理。
1.1 核心功能一览
- 多格式归档:ZIP、RAR、7z、TAR、GZIP、Unix .Z 等格式的浏览、压缩、解压、测试
- 加密支持:ZIP 传统 ZipCrypto 与 WinZip AES-256 加密/解密
- 双视图文件管理:文件系统树 + 压缩包内虚拟目录浏览,支持拖放、查找、部分解压
- 智能解压:根据压缩包顶层结构自动选择解压到当前目录或同名子文件夹
- Shell 扩展:
UCCZipShell.dll提供经典右键菜单与 Win11 IExplorerCommand 主菜单 - 自解压包 (SFX):将文件夹打包为独立
.exe,内置静态链接的UCCZipSfxStub.exe - 归档库 (Archive Depot):基于 SQLite 的压缩包样本入库、检索与管理
- ZIP 密码破解:字典、掩码、字符集暴力、已知明文 (KPA)、CRC32 短明文枚举等
- 系统集成:文件关联、开机自启、系统托盘、单实例、Mark-of-the-Web (MOTW) 标记
- 国际化:中文(默认)/ 英文界面切换
1.2 归档格式支持矩阵
读取(解压 / 列表 / 测试)
| 格式 | 扩展名示例 | 引擎 | 备注 |
|---|---|---|---|
| ZIP | .zip .zipx .jar .war .apk .epub .cbz … | minizip-ng | 支持 AES 与传统加密 |
| RAR | .rar .r00–.r99 .partN.rar .rev | 内置 UnRAR 库 | 无需安装 WinRAR |
| 7z | .7z | KArchive (K7Zip) | 可选 7z.exe 兜底非常规格式 |
| TAR 系列 | .tar .tar.gz .tgz .tar.bz2 .tar.xz .txz … | KArchive (KTar) | 含 BZIP2、XZ 过滤器 |
| GZIP | .gz(非 tar.gz) | GzipEngine / KArchive | 单文件流 |
| Unix compress | .Z .z | ncompress (UnixZEngine) | 单文件 LZW |
| SFX | .exe(UCCZip 格式) | SfxPayload 检测 | 识别自带 stub 的自解压包 |
创建(压缩)
| 格式 | 内置创建 | 依赖 |
|---|---|---|
| ZIP | ✓ | minizip-ng |
| 7z | ✓ | KArchive K7Zip |
| TAR / .tar.gz / .tar.xz 等 | ✓ | KArchive KTar |
| Unix .Z | ✓ | ncompress(单文件) |
| RAR | ✗ | 需要外部 Rar.exe |
2. 环境与安装
2.0 依赖环境要求
| 组件 | 版本 / 要求 | 说明 |
|---|---|---|
| 操作系统 | Windows 10 19041+ / Windows 11 | Win11 稀疏包用于一级右键菜单 |
| Qt | 5.15.2 | 模块:Core, Gui, Widgets, Concurrent, Network, Sql |
| 编译器 | MinGW 8.1 64-bit (mingw810_64) | 与 Qt 5.15.2 mingw81_64 套件匹配 |
| 构建工具 | qmake, mingw32-make | 推荐 Qt Creator 或命令行 |
| C++ 标准 | C++17 | CONFIG += c++17 |
| PowerShell | 5.0+ | 图标生成、部署、稀疏包注册脚本 |
| 运行时 | Qt5 DLL + MinGW 运行时 | 由 windeployqt 自动收集 |
注意:项目不依赖仓库内
Check/ 目录(仅为参考源码)。所有运行时依赖已 vendoring 在 thirdparty/ 中。可用 tools/verify_no_check_deps.ps1 扫描误引用。
推荐 Qt 安装路径(本项目开发环境)
C:\Qt515\5.15.2\mingw81_64\ # Qt 库与 qmake
C:\Qt515\Tools\mingw810_64\ # MinGW 工具链
可选外部工具
7z.exe— 非常规 .7z 归档兜底(正常使用不需要)UnRAR.exe— RAR 兜底(内置 UnRAR 为默认)Rar.exe— 创建 RAR 归档时必需bkcrack.exe— KPA 攻击可选外部工具(亦内置 bkcrack 静态库)
2.1 本地编译构建
方式 A:Qt Creator(推荐)
- 用 Qt Creator 打开
UCCZip.pro - 选择套件:Desktop Qt 5.15.2 MinGW 64-bit
- 构建配置选 Release 或 Debug
- 点击构建 — qmake 会自动串联编译:
- 应用图标 (
tools/generate_app_icon.ps1) - Shell 扩展 DLL (
shell/UCCZipShell/) - SFX 存根 (
sfx/UCCZipSfxStub/,始终 Release 静态链接) - 主程序
UCCZip.exe
- 应用图标 (
方式 B:命令行
# 设置 PATH
$env:PATH = "C:\Qt515\Tools\mingw810_64\bin;C:\Qt515\5.15.2\mingw81_64\bin;" + $env:PATH
# 创建并进入构建目录
cd d:\Temp2\UCCZip
mkdir build\Desktop_Qt_5_15_2_MinGW_64_bit-release -Force
cd build\Desktop_Qt_5_15_2_MinGW_64_bit-release
# 生成 Makefile 并编译
qmake ..\..\UCCZip.pro -spec win32-g++ "CONFIG+=release"
mingw32-make -j4
构建成功后,Release 产物位于:
build\Desktop_Qt_5_15_2_MinGW_64_bit-release\release\
├── UCCZip.exe
├── UCCZipShell.dll
├── UCCZipSfxStub.exe
├── libwinpthread-1.dll
├── images\
├── Assets\
├── AppxManifest.xml
├── tools\
└── plugins\sqldrivers\qsqlite.dll
主工程
UCCZip.pro 在链接前自动执行 windeployqt --compiler-runtime --no-translations,将 Qt 运行时 DLL 复制到输出目录,实现「qmake + make 即可运行」的自包含构建。
2.2 部署与安装
一键部署到 C:\UCCRelease
powershell -ExecutionPolicy Bypass -File "d:\Temp2\UCCZip\tools\deploy_uccrelease.ps1" `
-BuildReleaseDir "d:\Temp2\UCCZip\build\Desktop_Qt_5_15_2_MinGW_64_bit-release\release" `
-DestDir "C:\UCCRelease"
部署脚本自动完成:
- 复制核心二进制与资源到目标目录
- 运行
windeployqt收集 Qt / MinGW 运行时 - 复制 SQLite 驱动 (
qsqlite.dll) - 复制 Win11 稀疏包清单与图标资源
- 复制
password_list.txt密码字典(若存在) - 执行
UCCZip.exe --shell-register注册右键菜单与稀疏包
手动安装步骤
- 将完整发布目录(含上述所有文件)复制到目标位置,例如
C:\UCCRelease - 以该目录为工作目录,运行:
UCCZip.exe --shell-register - (可选)在设置中启用文件关联、开机自启、系统托盘
- 首次启动会自动尝试注册 Win11 稀疏包;也可手动执行
tools\register_win11_sparse_package.ps1
卸载 Shell 集成
UCCZip.exe --shell-unregister
3. 使用指南
3.1 主界面操作
主窗口 (MainWindow) 提供双模式视图:
- 文件系统视图:浏览本地目录,双击压缩包进入归档视图
- 归档视图:在压缩包内导航子目录,支持地址栏、后退/前进、上级目录
工具栏 / 菜单核心操作
| 操作 | 功能 |
|---|---|
| 打开压缩包 | 选择归档文件,自动检测格式;加密包弹出密码对话框 |
| 打开文件夹 | 浏览本地文件系统 |
| 添加文件 | 向已打开的 ZIP 追加文件(AddToExisting 模式) |
| 解压 | 打开解压对话框,可选目标路径、覆盖策略、选定条目 |
| 快速解压 | 按设置中的默认路径规则一键解压 |
| 智能快速解压 | 启用 SmartExtract 策略自动决定解压目录结构 |
| 测试压缩包 | 校验归档完整性 |
| 压缩 | 打开压缩对话框:格式、级别、密码、AES、包含根目录等 |
| 加密压缩包 | 为已有 ZIP 设置密码 |
| 创建自解压包 | 打开 SFX 对话框,生成 .exe 自解压程序 |
| 归档库 | 将选中压缩包导入样本库 |
| ZIP 密码破解 | 打开 ZipCracker 对话框(工具菜单) |
| 查找 | 在当前视图内搜索文件名 |
| 拖放 | 拖入文件/文件夹可打开压缩包或触发压缩 |
设置项(选项对话框)
- 默认解压位置:压缩包旁 / 同名子文件夹 / 自定义目录
- 压缩默认:格式、压缩级别、AES 加密、覆盖策略
- 智能解压开关、解压后打开文件夹、MOTW 标记模式
- 多线程解压线程数(LZMA2 / .xz,0 = 自动)
- Shell 右键菜单集成、文件关联
- 单实例模式、系统托盘、关闭到托盘、开机自启
- 界面语言:中文 / English
3.2 Shell 右键菜单
通过 UCCZipShell.dll 与注册表/IExplorerCommand 集成到 Windows 资源管理器。支持 Win10 经典菜单与 Win11 一级上下文菜单(稀疏包 AppxManifest.xml)。
可用 Shell 命令(动词)
| 动词 | 说明 |
|---|---|
extract | 打开解压对话框 |
extract-here | 解压到当前目录 |
extract-here-smart | 智能解压到当前目录 |
extract-default | 按默认设置解压 |
compress | 打开压缩对话框 |
compress-quick | 快速压缩为 .zip(支持多选合并) |
compress-7z | 快速压缩为 .7z |
create-sfx | 创建自解压包 |
test | 测试压缩包完整性 |
archive-depot | 导入归档库 |
archive-depot-manager | 打开归档库管理器 |
多选压缩时,资源管理器会为每个选中项启动独立进程;UCCZip 通过 --shell-coalesce 机制合并为一次压缩操作。
3.3 命令行参数
维护参数
UCCZip.exe --shell-register # 注册 Shell 扩展与稀疏包
UCCZip.exe --shell-unregister # 卸载 Shell 扩展
Shell 调用格式
UCCZip.exe --shell <verb> ["path1" "path2" ...]
UCCZip.exe --shell compress-quick --shell-coalesce "D:\file1.txt"
UCCZip.exe --shell archive-depot-manager
开发与测试参数
| 参数 | 用途 |
|---|---|
--sfx-smoke <folder> <output.exe> | SFX 构建冒烟测试 |
--compress-smoke <folder> <out.zip> [pwd] | 压缩冒烟测试 |
--zip-pwd-test <zip> <correct> <wrong> | 密码校验测试 |
--zip-crack-analyze <zip> | 分析 ZIP 加密特征 |
--zip-crack-open-smoke <zip> [phase] | ZipCracker 对话框启动测试 |
直接打开文件
UCCZip.exe "D:\archive.zip" # 打开指定压缩包
UCCZip.exe "D:\folder" # 浏览文件夹
3.4 ZIP 密码破解
通过 工具 → ZIP 密码破解 打开 ZipCrackerDialog。实现参考 ZipCracker 项目,支持 ZipCrypto 与 WinZip AES。
攻击方式(按顺序执行)
- 伪加密检测与修复(成功则直接解压,无需密码)
- 短明文 CRC32 枚举(1–6 字节,可选)
- 常见弱口令 / 密码字典(单文件或目录内全部 .txt)/ 数字字典 / 字符集暴力
- 掩码攻击(
?d数字、?l小写、?u大写、?s符号等) - 已知明文攻击 KPA(仅 ZipCrypto;内置 png/zip/exe 模板)
性能参数
| 参数 | 默认值 |
|---|---|
| 线程数 | min(128, CPU×4),UI 可覆盖 |
| 批大小 | max(1024, 线程×128),上限 8192 |
| 环境变量 | ZIPCRACKER_THREADS、ZIPCRACKER_BATCH_SIZE、ZIPCRACKER_PREFETCH_BATCHES |
合法使用:仅对您有权测试的归档进行密码恢复。禁止用于未授权访问他人数据。
3.5 归档库 (Archive Depot)
归档库用于管理压缩包样本集合,数据存储在 SQLite 数据库中(ArchiveDepotDatabase)。
- 导入:通过右键「导入归档库」或主界面工具菜单,将压缩包复制到库目录并记录元数据
- 管理:打开归档库管理器,按库路径浏览、搜索、编辑备注、删除记录
- 字段:文件名、存储路径、源路径、格式、大小、备注、创建/更新时间
3.6 自解压包 (SFX)
通过 SfxBuilder 将文件夹打包为独立可执行文件:
- 使用
UCCZipSfxStub.exe作为存根(静态链接 zlib + minizip,无 Qt 依赖) - 支持设置解压目标(如
%EXEDIR%)、压缩级别、AES 加密、自定义图标 - 可配置解压后运行程序、创建开始菜单快捷方式、解压后打开文件夹
- 构建时自动将 payload 附加到 stub 末尾
4. 技术架构
4.1 代码目录结构
UCCZip/
├── UCCZip.pro # 主工程文件
├── main.cpp # 程序入口、Shell/测试模式分发
├── mainwindow.cpp/.h # 主窗口 UI 与业务编排
├── chmiaboutdlg.* # 关于对话框
├── ucczip.qrc # Qt 资源(图标等)
├── UCCZip_manifest.rc # Windows 版本资源
│
├── core/ # 核心业务逻辑
│ ├── archive_types.h # 归档类型、任务、条目定义
│ ├── archivedetector.* # 格式检测(扩展名 + 文件头签名)
│ ├── archivesignatures.* # 魔数签名表
│ ├── archiverouter.* # 多引擎路由与能力查询
│ ├── archivemanager.* # 异步任务调度(压缩/解压/测试/SFX)
│ ├── zipengine.* # ZIP 引擎 (minizip-ng)
│ ├── rarengine.* # RAR 引擎 (UnRAR)
│ ├── karchiveengine.* # 7z/TAR/GZIP 引擎 (KArchive)
│ ├── unixzengine.* # Unix .Z 引擎 (ncompress)
│ ├── gzipengine.* # GZIP 单文件引擎
│ ├── archivelock.* # 归档文件锁
│ ├── appsettings.* # 应用设置 (QSettings)
│ ├── applocalization.* # 中英文切换
│ ├── applog.* # 日志
│ ├── autostart.* # 开机自启
│ ├── singleinstance.* # 单实例 IPC
│ ├── shellcommandline.* # Shell/CLI 参数解析
│ ├── shellcontextmenu.* # 右键菜单注册
│ ├── shellcompresscoalesce.* # 多选压缩合并
│ ├── fileassociations.* # 文件类型关联
│ ├── sparsepackageregistration.* # Win11 稀疏包
│ ├── sfxbuilder.* / sfxpayload.* / sfxuninstallscript.* # SFX 构建
│ ├── archivedepotdatabase.* / archivedepotservice.* # 归档库
│ └── zipcracker*.* # ZIP 密码破解全套模块
│
├── ui/ # 对话框与自定义控件
│ ├── compressdialog.* # 压缩选项
│ ├── extractdialog.* # 解压选项
│ ├── passworddialog.* # 密码输入
│ ├── progressdialog.* # 进度显示
│ ├── settingsdialog.* # 设置
│ ├── sfxdialog.* # 自解压包创建
│ ├── zipcrackerdialog.* # 密码破解
│ ├── archivedepotdialog.* / archivedepotmanager.* # 归档库
│ └── ...
│
├── models/ # Qt Model/View 数据模型
│ ├── archivefilemodel.* # 压缩包内文件列表
│ ├── directorylistmodel.*# 文件系统列表
│ └── filefilterproxymodel.* # 搜索过滤代理
│
├── utils/ # 工具函数
│ ├── smartextract.* # 智能解压路径决策
│ ├── shellutils.* # Shell 交互
│ ├── motw_win.* # Mark-of-the-Web
│ ├── qtsqlsetup.* # SQLite 插件路径
│ └── ...
│
├── shell/UCCZipShell/ # Shell 扩展 DLL (COM, 无 Qt)
│ ├── contextmenu.* # 经典上下文菜单
│ ├── explorercommand*.* # Win11 IExplorerCommand
│ ├── commandstore_*.* # 命令存储注册
│ └── ucc_subcommands.* # 子命令定义
│
├── shell/UCCZipSparsePackage/ # Win11 稀疏包清单
│ └── AppxManifest.xml
│
├── sfx/UCCZipSfxStub/ # 自解压存根 (静态编译, 无 Qt)
│
├── thirdparty/ # 第三方源码(全部内置)
│ ├── minizip/ # minizip-ng (ZIP)
│ ├── karchive/ # KArchive (7z/TAR/GZIP)
│ ├── unrar/ # UnRAR 库
│ ├── unixcompress/ # ncompress (.Z)
│ ├── zlib-1.3.1/ # zlib (SFX stub)
│ ├── xz-5.6.3/ # liblzma
│ ├── bkcrack-src/ # bkcrack (KPA)
│ └── ...
│
├── tools/ # 构建/部署/测试脚本
│ ├── deploy_uccrelease.ps1
│ ├── register_win11_sparse_package.ps1
│ └── generate_app_icon.ps1
│
├── images/ # 应用图标与 Shell 图标
├── docs/ # 项目文档
└── Check/ # 参考项目(不参与构建)
4.2 核心模块说明
4.2.1 归档引擎层
ArchiveRouter 根据 ArchiveFormat 将操作分发到对应引擎,并通过 ArchiveCapabilities 查询各格式的 List/Extract/Test/Compress 能力。
| 类 | 职责 |
|---|---|
ArchiveDetector | 扩展名 + 文件头签名双重检测格式 |
ArchiveRouter | 统一 list/runTask 入口,路由到具体引擎 |
ArchiveManager | 持有全部引擎实例,通过 QFutureWatcher 异步执行任务,发射 progress/finished 信号 |
ZipEngine | ZIP 压缩/解压/列表/密码测试,基于 minizip-ng |
RarEngine | RAR 解压/列表,基于 UnRAR 源码 |
KArchiveEngine | 7z、TAR、GZIP、BZIP2、XZ 处理 |
UnixZEngine | Unix compress (.Z) 单文件 |
GzipEngine | 独立 .gz 单文件流处理 |
4.2.2 表示层 (MainWindow)
主窗口是整个应用的编排中心:
- 管理双视图切换(文件系统 / 归档内浏览)
- 处理用户操作 → 构建
ArchiveTask/SfxTask→ 提交ArchiveManager - 处理 Shell 模式(
m_shellMode):无界面或最小化执行右键命令后退出 - 维护导航历史、最近文件、剪贴板操作、拖放、临时解压缓存
4.2.3 Shell 集成层
| 组件 | 技术 | 职责 |
|---|---|---|
UCCZipShell.dll | COM InprocServer / IExplorerCommand | 资源管理器右键菜单 UI 与命令派发 |
ShellContextMenu | 注册表 + Sparse Package | 菜单注册/卸载、Win11 一级菜单 |
ShellCommandLine | 命令行解析 | --shell <verb> → ShellCommand 枚举 |
ShellCompressCoalesce | 跨进程 IPC | 合并 Explorer 多选压缩请求 |
FileAssociations | IApplicationAssociationRegistration | 注册 .zip/.rar/.7z 等文件关联 |
4.2.4 ZIP 密码破解子系统
ZipCrackerDialog→
ZipCrackerWorkflow→
ZipCrackerWorker→
ZipCrackerVerify
ZipCrackerVerify— 归档分析、快速密码筛选(ZipCrypto 12 字节头校验)ZipCrackerWorker— 多线程字典/暴力枚举,专用QThreadPoolZipCrackerMask— 掩码密码生成ZipCrackerKpa/ZipKpaEngine— 已知明文攻击(集成 bkcrack 库)ZipCryptoFast— ZipCrypto 快速解密校验ZipCrackerSession— QSettings 会话持久化
4.2.5 归档库子系统
ArchiveDepotDatabase— SQLite 本地数据库,管理ArchiveDepotRecordArchiveDepotService— 导入逻辑:复制文件到库目录 + 写入记录ArchiveDepotManager— UI 管理界面
4.2.6 SFX 子系统
SfxBuilder— 编排 stub + payload 拼接SfxPayload— payload 格式与 SFX 检测UCCZipSfxStub— 独立 C++ 项目,运行时自解压(静态链接,无 Qt DLL)
4.3 数据流与启动流程
应用启动流程
main()检查测试/冒烟参数 → 否则创建QApplication- 初始化日志、清理 7 天前的临时目录 (
%TEMP%/UCCZip) - 加载
AppSettings,安装翻译器,配置 SQLite 插件路径 - 解析
--shell-register/unregister→ 注册/卸载后退出 ShellContextMenu::syncFromSettings()同步右键菜单状态SingleInstance检测:若已有实例则转发命令后退出- 解析
--shell <verb>:Shell 模式或普通模式启动MainWindow
压缩/解压任务流
- 用户操作 / Shell 命令 →
MainWindow构建ArchiveTask ArchiveManager::compress/extract/test在QThreadPool中异步执行ArchiveRouter::runTask()按格式路由到具体 Engine- Engine 通过回调报告进度 →
ArchiveManager::progress信号 →ProgressDialog - 完成后发射
finished(success, message)
关键数据结构
// archive_types.h
enum class ArchiveFormat { Unknown, Zip, Rar, SevenZip, Tar, GZip, UnixZ, Sfx };
enum class ArchiveOperation { None, Compress, Extract, Test, List };
struct ArchiveEntry {
QString name, path;
qint64 compressedSize, uncompressedSize;
QDateTime modified;
bool isDirectory, encrypted, usesAes;
int compressionMethod;
quint32 crc32;
};
struct ArchiveTask {
ArchiveOperation operation;
ArchiveFormat format;
QString archivePath, destinationPath;
QStringList sourcePaths;
QString password;
int compressionLevel;
bool useAes, overwrite, includeRoot, extractSelectedOnly;
QList<ArchiveEntry> prefetchedEntries;
SmartExtractPolicy smartExtractPolicy;
CompressArchiveMode compressMode;
};
4.4 第三方依赖
| 组件 | 路径 | 用途 | 许可 |
|---|---|---|---|
| minizip-ng | thirdparty/minizip/ | ZIP 读写 | zlib-style |
| zlib 1.3.1 | thirdparty/zlib-1.3.1/ | SFX stub 压缩 | zlib license |
| KArchive | thirdparty/karchive/ | 7z/TAR/GZIP/BZIP2/XZ | LGPL-2.0+ |
| liblzma | thirdparty/xz-5.6.3/ | XZ/LZMA2 解压 | Public domain / LGPL |
| ncompress | thirdparty/unixcompress/ | Unix .Z | Public domain |
| UnRAR | thirdparty/unrar/ | RAR 解压 | UnRAR license |
| bkcrack | thirdparty/bkcrack-src/ | ZIP 已知明文攻击 | 开源 |
5. 法律声明
- UCCZip 的 ZIP 密码破解功能仅可用于恢复您拥有合法权限的归档密码。
- 内置 UnRAR 库仅支持解压,创建 RAR 需 RARLab 授权的
Rar.exe。 - 第三方组件各有独立许可证,分发时需遵守相应条款(尤其 LGPL 的 KArchive)。
- Copyright (C) 1999–2026 UCanCode Software. All rights reserved.