羽云十六进制编辑器 WIKI

写在前面

  本页面是对WingHexExplorer2的引导页面,通知用户当前的项目情况,提供帮助文档的指引。软件v2.3.0已在2025/10/06发布,v2.3.1已在2025/11/02发布。欢迎感兴趣的同志来参与和贡献代码。

  目前该项目的 GitHub Pages 已初步上线,后续将逐步完善,该博客将作为国内快速访问的简介入口。

   如果你对该软件感兴趣,欢迎加 QQ 群:795491946 ,我会尽快审核通过,请注意遵守群规。

v2.3.0 发现了保存文件能使程序卡死和原文件内容丢失的恶性 Bug,请使用者规避保存功能,请不要使用该版本的软件进行保存。请对自己的数据负责!!!

简介

  一个自由的强大免费的十六进制编辑器,基于 QT C++ 进行开发,作者是寂静的羽夏。

  如有 Bug, 欢迎反馈到 Github 上,如果你访问这有困难的话,也可以反馈到 Gitee 上。如果实在不行,可以通过我的 博客园 上公告栏的任意一种联系方式来告诉我。不过我还是希望你反馈到 Github 上方便我写递交注释的。

  开源不易,也欢迎赞助或者参与代码和文档贡献,我默认会将您放入鸣谢标签的内容进行鸣谢。

  许可证:AGPL-3.0

  该软件经过长时间的迭代,目前成为了一个高自定义性、功能强大的十六进制编辑器。它具有以下功能特点:

  • 基础的十六进制编辑查看编辑功能
  • 支持打开 TB 级别的超大文件 (仅 64 位程序)
  • 支持 标注(颜色标记、书签标记) ,且可以保存为工程文件以下次打开
  • 自由定义布局、保存和导出自己常用布局自由切换 不同布局用于不同分析目的
  • 支持 克隆编辑 ,在 同一时刻对同一个文件 对不同的地方进行浏览和编辑
  • 现代的 Ribbon 菜单 ,方便醒目的找到自己想要的功能
  • 十六进制视图自由缩放(Ctrl+滚轮),对标题、地址栏和解码字符串栏可以自由显示和隐藏
  • 对常见的数据类型进行实时解码
  • 支持校验和计算
  • 极速查找字节和字符串
  • 友好的标注可视化
  • 多选区支持 (按住 Shift 会增加选区,Alt 会裁剪选区。在含有多个选区的情况下,不按住任何键拖放的选区会在鼠标释放按键之后消失。按住 Ctrl 选区会取消原有的选择的内容,同时按住 Shift 和 Alt 视为 Ctrl 的操作)
  • 强大的脚本系统 ,用于批量分析二进制数据(AngelScript)
  • 强大的插件系统 ,实现对软件的较高自由度定制和增强,并提供组件注册和基础的脚本系统函数绑定
  • 内置脚本编辑器 ,自带语言服务器,提供代码填充和调试功能,并且支持代码格式化
  • 内置暗黑和浅色主题

最新发布日志

  该仓库仅提供基于 QT6 的十六进制编辑器安装包,对于 Windows 采用 InnoSetup 安装包。对于 Linux 采用 run 自解压安装文件进行安装,请在终端使用命令行使用 root 权限进行,若要卸载请到/opt/WingHexExlorer2下进入终端使用 root 权限执行uninstall.sh完成卸载。 在 Linux 上,如果你有对应的编译环境,我不推荐使用 run 安装文件方式。 因为为了保证安装包的通用性,我在里面部署了大量的库,包括对应的 glic 和 ld-linux和对可执行文件做了patch,让文件总体积膨胀,这是一个很不划算的事情。建议使用mkinstaller下的pyscript进行安装。

  本软件不会以任何理由主动向你收取费用,你通过下载渠道给的费用一分钱也不会到我这里,请注意。

  如有 Bug ,请到Github或者Gitee提交issue。如果有功能建议,也可以通过issue,不过我更建议 到 Github 的 discussion 区提交

  该工具的定位是对二进制的编辑和分析。欢迎热心的大佬一起共建基础开源工具

  目前只有我一个人开发,我不可能能够把每个功能做好测试,尤其是做 高风险 的操作,点名在 root 权限下操作文件。

  我可能不会对每个 Bug 能够积极响应,不过对大家的建议和需求我会尽可能地尽早回复和评估处理。

插件版本兼容性

  软件版本分为三个部分,对插件重点关注中间的数字,也就是次版本号。当数字发生变化时,那说明插件的 API 发生改变,已经不兼容。

更新内容

  本次更新版本号为2.3.1,包含大量 Bug 修复和一些小功能调整优化。本次软件得到了作者本人比较完整的测试,下面是更新日志:

十六进制编辑相关

  • 【严重】保存文件能使程序卡死和原文件内容丢失的恶性缺陷
  • 【严重】修复搜索结果数据中清空数据下拉崩溃
  • 【严重】由于书签和元数据关联的文档已被释放导致的程序关闭崩溃
  • 【严重】文本预览的关闭崩溃
  • 【中等】修复 QHexRegionObject 相关问题(选区和元数据相关)
  • 【中等】修复十六进制连续编辑同一个字节高低位然后撤销高字节位未恢复的问题
  • 【中等】修复错误的字符串的大小端处理转化
  • 【中等】修复工作区和设备驱动重新加载问题(项目文件打开重载不再是项目文件)
  • 【中等】修复标注在被分段的情况下不同步丢失问题
  • 【中等】修复布局保存不正确和优化布局相关功能
  • 【中等】修复另存为之后标题名不变
  • 【轻微】打开历史如果文件不存在点击无法移除
  • 【轻微】修复另存为需要转化图标但无变化
  • 【轻微】优化十六进制编辑文档的基址支持
  • 【轻微】拖拽到 Ribbon 工具栏打开文件不会加入打开历史记录的问题
  • 【轻微】通过非点击打开文件按钮方式十六进制打开文件有错不报告的问题
  • 【轻微】修复记忆最后一次使用的打开目录不保存的问题
  • 【轻微】修复在插入模式下如果当前位置无字节就不显示光标
  • 【轻微】修复工作区导出之后图标显示不正确的问题
  • 【轻微】新增对设备驱动相关打开的历史记录支持
  • 【轻微】补充 粘贴(十六进制) 失败提示
  • 【轻微】修复输出后台脚本输出的文本颜色不正确
  • 【轻微】优化和修复解码字符串的可视化问题
  • 【轻微】十六进制编辑 Delete 功能缺失
  • 【轻微】十六进制编辑 beginMarco 的提示文本相关格式未统一
  • 【调整】通过拖拽打开的文件所在的文件夹路径会被记录到上一次打开位置
  • 【调整】状态新增编辑区(十六进制/字符串)指示
  • 【调整】更安全的保存文件策略(QSaveFile)
  • 【调整】十六进制文件读写方式由共享变为独占,移除十六进制文件编辑的文件重载监听
  • 【调整】优化程序的文件保存功能,减少不必要的操作
  • 【调整】禁止不支持随机访问的 IO 文件设备的打开
  • 【调整】打开普通文件禁止非常规文件打开
  • 【调整】新增查找结果窗体可以显示/隐藏解码文本
  • 【调整】新增元数据可以自定义显示/隐藏表头项目
  • 【调整】优化新增保存/导出相关文件名的默认值
  • 【调整】在 Linux 的 root 下保存文件权限将不再尝试调整

插件系统

  • 【中等】设备插件服务无法调用
  • 【中等】在注册脚本全局非安全函数中对 void* 进行区分,分为引用对象指针和值对象指针,以防止值对象作为非安全函数注册返回值内存泄漏的问题
  • 【调整】插件系统 ID 相关比较不再区分大小写
  • 【调整】标签页未激活且正在运行脚本会有图标指示

脚本相关

  • 【严重】控制台多行输入窗口 double free 问题导致的崩溃
  • 【严重】代码填充对于非函数填充无法插入文本的问题
  • 【严重】经自动调整为下一行为要执行的非代码行的断点失效而崩溃
  • 【严重】修复死循环卡死程序
  • 【中等】多行控制台和终止脚本运行冲突
  • 【中等】修复一些脚本 API 调用绑定问题,比如错误的 QColor::name 注册
  • 【中等】终止脚本 Action 无效问题
  • 【中等】脚本对象运算器获取对象名解析错误
  • 【中等】控制台频繁初始化全局变量导致重复执行操作的问题
  • 【中等】脚本引擎配置失败导致访问空填充对象导致的程序崩溃
  • 【中等】增强后的预处理器不支持 Unicode 的问题
  • 【中等】脚本 array 数组可视化以及 print 错误
  • 【中等】修复 println 脚本函数的调试/信息/错误相关只有第一行有头信息
  • 【轻微】脚本编辑器在调试时如果窗口过小会光标会乱跳行
  • 【轻微】弥补缺失的颜色、正则表达式的脚本对象函数
  • 【轻微】修复脚本编辑器的注释/反注释代码快捷键无效和错误问题
  • 【轻微】高显示分辨率下脚本编辑器打开脚本文件左侧会裁切部分文本的问题
  • 【轻微】修复 beautify 格式化数组/字典转化的字符串成员顺序与原来不保持一致的问题
  • 【轻微】弥补正则表达式的 regex::globalMatch 缺失
  • 【轻微】增加脚本对象运算器的健壮性,避免插件不合法使用运算器导致程序崩溃
  • 【轻微】修复 print 和 input 系列函数向下文模式可能不及时更新的问题
  • 【轻微】在脚本编辑器存在未保存的脚本,关闭主程序,然后点击丢弃导致脚本打开历史记录不保存的问题
  • 【轻微】将和 QFlag 绑定修改为 int 避免脚本书写冗余
  • 【调整】优化控制台历史记录
  • 【调整】移除无用的 ModelIndex 类
  • 【调整】脚本调试中,为颜色类型增加了可视化色块
  • 【调整】禁止脚本编辑器打开非 AngelScript 代码文件
  • 【调整】新增脚本对象 string 支持 foreach 和对应调试对象展开
  • 【调整】新增脚本对象 JsonArray 支持 foreach
  • 【调整】自定义运算器在 IWingAngel::EvalMode::Expand 模式下,如果使用 QHash<QString, WingHex::IWingAngel::ExpandResult> 解析为类字典输出默认不会被双引号包裹
  • 【调整】完善了CScriptDictValue::Get未实现的隐式转化
  • 【调整】更多样的 print 函数:警告、错误、信息
  • 【调整】将脚本函数 getInput 重新命名为 input,统一风格
  • 【调整】为脚本对象增加 invokeService 支持(仅支持基础对象和字符串)
  • 【调整】string::compare 全局函数移除,因为无法调用
  • 【调整】数学相关的函数转到 math 命名空间
  • 【调整】移除脚本编辑器的保存按钮响应指示文件是否已保存
  • 【调整】废弃 currentDocFilename,更改为 currentDocFile 且返回的是 URL 而不是文件名

WingCStruct

  • 【中等】修复脚本对象转化的内存泄露
  • 【中等】修复错误的大小端处理转化
  • 【中等】修复 getData 的 QVariant 隐式转化导致的类型错误
  • 【中等】修复错误的类型转化
  • 【中等】修复服务函数签名不正确的问题
  • 【轻微】修复内置 C 头文件解析器的数组可以使用位域的问题
  • 【调整】新增脚本对象 IntType 和脚本函数以简化函数调用和潜在的错误
  • 【调整】内置 C 头文件解析器对于含有位域的结构体采用激进的压缩策略,不再尝试遵守任何一个编译器的内部规则
  • 【调整】新增 dump 相关函数,方便查阅已经被解析的内容

软件设置

  • 【中等】修复当重置当前页为第一个时无法重置的问题
  • 【中等】修复错误的解码字符串限制的触发信号函数
  • 【中等】修复脚本设置中编辑和控制台设置不自动更新的问题
  • 【中等】修复解码字符串限制 MB 实际是 KB
  • 【中等】修复禁用脚本功能关闭程序的崩溃
  • 【中等】脚本超时时长为设置的 1/10 倍率问题
  • 【中等】修复 Angel 语言服务器重启无法恢复原有文档代码的填充功能
  • 【中等】Angel 语言服务器被禁用无法通过勾选启用
  • 【轻微】修复禁用/启用脚本功能没有提示
  • 【轻微】修复不显示 splash 启动窗体点击无提示重启问题
  • 【轻微】优化外部环境变量控制对应设置相应可视化
  • 【调整】优化插件和脚本禁用的可视化
  • 【调整】更好的用户提示
  • 【调整】新增打开软件的配置文件夹目录
  • 【调整】增加重置设置完成的提示

其他

  • 【严重】修复共享内存设备驱动并可用
  • 【严重】更新 AngelScript 上游,并修复全局变量的 storage 未初始化导致的崩溃
  • 【轻微】在 Qt 6.10.0 下无法通过编译的问题
  • 【轻微】浅色模式下后台脚本输出主题异常
  • 【轻微】用户脚本图标和系统脚本图标大小不统一
  • 【调整】优化 Linux 下符号编译体积
  • 【调整】移除日志文件内容受过滤器的影响,并新增 Qt log 的内部日志文件
  • 【调整】导出日志功能的路径由自动生成转为手动选择
  • 【调整】新增软件测试模式(和软件编译相关)
  • 【调整】对 Toast 的过长文本进行截断,最大宽度优化
  • 【调整】文本编辑器相关跳转不再是某行的最后一个字符,而是首行

  如果发现有 Bug 月更,如果没有充足热度和赞助将停止功能性更新。

已知问题或缺陷

  软件有些是已知问题,由于影响不大且不好解决的或者不提供支持维护的,就会被列到这里面。我不会主动去尝试修复它,因为我只要列到这里面,对于很多问题,我已经做了大量的尝试,但没有很好的解决。如果是上游问题,等上游解决之后,我有时间的时候同步一下就解决了。如果不是,那就等热心大佬 PR 吧。

对于第 2-3 问题,你可以通过非安全的注册方式来实现,但是,你需要很清楚 AngelScript 的通用调用机制,并且确保你对类型的转化和解引用操作都是正确的,确保返回值指针有效性,因为这个模式下不会有任何检查,否则指针会让你飞起来(感兴趣可以阅读WingAngelAPI::script_call相关代码)。

  1. 32 位程序下运行使用如果有问题:不提供支持,但如果解决,可 PR 。
  2. 脚本安全注册方式返回值不支持数组和列表:是这样的,这个实现太麻烦了,如果要支持,我只能支持 QVariantList 作为返回值容器,但是,我不一定知道 QVariantList 装的东西是什么,进一步校验和转化也是很麻烦的问题。
  3. 脚本安全注册方式不支持引用:是这样的,实现方式不支持引用,要引用就需要指针,但我没有提供这个机制,反射也反射不出来。

后面更新

  我将会根据知名度我会酌情偏向更新文档内容(目前没啥知名度和赞助,暂停)。

  下一个缺陷修复版本号为2.3.2,这次更新预计在2025/11/30发布,如果有比较高的热度或者赞助,将会一周或者两周后更新,下面是修复日志:

  • 【严重】修复使用克隆页保存转为工作区之后关闭崩溃
  • 【中等】修复插件系统错误的文档状态的实现
  • 【中等】修复优化 WingEditorViewWidget 相关内容
  • 【中等】修复十六进制编辑视图组件无法调用服务的问题
  • 【调整】为十六进制编辑视图增加了交互提示图标
  • 【调整】现在鼠标的 XButton 、Ctrl + 左右方向键 、 在标签页上按住 Ctrl 键 + 鼠标滚轮 都可以很方便的切换十六进制的编辑视图
  • 【调整】优化书签的可视化显示
  • 【调整】脚本管理允许更好的语言本地化以及图标自定义
  • 【调整】处理非需调试脚本在执行每行代码过度让出时间片处理主程序的事件(在 Release 版本下没啥问题,但是在 Win 的 Debug 模式下,会导致脚本几乎不执行),调整为至少为 50 ms 会触发主程序的事件处理以提供随时中断脚本的能力
  • 【调整】移除脚本只执行但不显示额外信息的打扰
  • 【调整】移除代码填充光标字符串检测的 workaround,因 angel-lsp 已经修复了问题
  • 【调整】所有和该主项目和插件代码编译相关的宏前面都带有WINGHEX_前缀
  • 【调整】启用 QT 中的一些编译选项保证代码安全性和可维护性
  • 【调整】废弃插件监视器插件(感觉没啥用)
  • 【调整】修复 Qt-Advanced-Docking-System 在 wayland 下 dock 拖拽不可用问题,目前该软件在 wayland 下可以完全不依赖 xwayland 运行
  • 【调整】新增脚本对象 url,是 QUrl 的简单绑定
  • 【调整】currentDocFile 目前返回值类型为 QUrl,如果获取字符串类型请调用 currentDocFileName,新增获取工作区文件路径的 API

  下一次含有功能更新版本号为2.3.11,这次更新内容的完成度将会与用户量和赞助密切相关,但以下内容可能不会完全实现:

  • 更加充分支持 angel-lsp 的功能,而不是仅仅代码填充和报错诊断
  • 实现脚本的帮助系统
  • 调试器支持 DAP ?

FAQ

  1. 为啥不在搜索结果增加筛选排列功能(其他表格类控件同理):
    答:功能很好,但是在数据量很大的情况下,很卡,但我没有精力和经验来处理这个事情。

  2. 该软件和 WingHexExplorer 有什么区别,我还可以继续使用 WingHexExplorer 这个软件吗?
    答:新版软件具有更强大的布局组件、跨平台和 UI 统一性。功能上自带 AngelScript 脚本引擎,相比于 Python 可能会有更好的 API 兼容性和速度(未测试),并且可以具有更好的 API 权限管控,会更安全一些。还有它更擅长处理多文件编辑,你可以对同一个文件同时在不同位置进行预览/编辑,这就是“克隆”功能。十六进制编辑器还增加了 Ctrl + 鼠标滚轮原生缩放支持。该软件对任意编辑中的文件窗体隐藏,哈希值计算,对书签更好的可视化以及标记的可视化和更好的插件支持,以及进一步的 Bug 修复。在 v2.0.0 规划完成发布之后,还会有深度配合的代码编辑器和调试器,正好是一个小型的 AngelScript IDE。这些都是 WingHexExplorer 软件所不具备的功能,这里还有很多小细节没说,这个软件会更加专业,也会更加好用。
    WingHexExplorer 这个软件仍旧是能用的,但还是有点小 Bug,只要你不是深度使用是不会有问题的,比如预览和简单的编辑普通文件。但它有 Bug,我也不会去修了。

  3. 该软件和 WingHexExplorer 兼容吗?
    答:项目文件是可以兼容的,但插件还是按照老约定,采用不兼容处理,因为变化太大了。

版本规划

  当收到的指定赞助金额满足一定程度来开发以下列出的功能时,我将主动花费我的业余时间来完成这件事情。当然 PR 也是可以算作“赞助内容”,毕竟是贡献代码,以下所有的功能都接受 PR 。如果你想要通过赞助金额来支持该项目来开发功能的话,请注明备注该任务名称,我将会在该篇日志更新,金额达到之后就开始进入排队开发。如果注明仅 PR 的,则不接受金额赞助开发。一旦受赞助的功能开始开发,原则上不退款。这些赞助内容将会以 AGPL-3.0 开源发布。 目前考虑到的内容如下:

  1. 尝试增加 AngelScript 对 QT 用户界面组件的绑定尝试,可以通过脚本实现插件。(若指明赞助该功能 450 RMB,增加窗体、标签、按钮、文本框支持,其他暂不支持,除非 PR)
  2. 为脚本解释器增加 JIT。(目前仅 PR)
  3. 更多的 AngelScript 脚本模块标准库。(仅 PR)
  4. 外部可自定义主题以及可更换图标。(100 RMB)
  5. 该软件提供的 AngelScript addon 提供完全的 Generic Call 支持。(100 RMB)
  6. 插件注册脚本函数更强大的类型支持。(200 RMB)
  7. 脚本编辑器的代码片段管理器支持。(100 RMB)

  当然也可以通过赞助来让我开发插件,插件可以选择开源和闭源,但如果赞助低于 500 RMB的,插件仅可选择开源,但可以自选开源基金会认可的开源协议。

帮助文档

  目前推荐 Github,不过目前仍处于编辑开发状态,还是不全。Gitee 我也同步上去了,但是,若图显示不出来,请启用Github加速工具(比如Watt ToolKit或者devSideCar等),因为图片链接来源于Github

发行版下载

  Github: https://github.com/Wing-summer/WingHexExplorer2/releases

  Gitee: https://gitee.com/wing-cloud/WingHexExplorer2/releases

posted @ 2024-07-05 18:33  寂静的羽夏  阅读(828)  评论(0)    收藏  举报