羽云十六进制编辑器 WIKI

写在前面

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

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

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

简介

  一个自由的强大免费的十六进制编辑器,基于 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 能够积极响应,不过对大家的建议和需求我会尽可能地尽早回复和评估处理。

更新内容

  本次更新版本号为2.3.4,包含少量的 Bug 修复和一些小功能调整优化,下面是更新日志:

  • 【严重】修复错误的脚本类型注册,比如filefilesystem
  • 【中等】修复软件状态栏右边图标双击无法修改文件锁定和大小限定状态的问题
  • 【中等】更新上游仓库,其中 AngelScript 和 qwindowkit 会有功能性更新和缺陷修复
  • 【中等】修复控制台对于类似非内置类型单行声明全局变量不生效的问题
  • 【中等】修复控制台文本可以被拖拽的问题,现在已完全禁用
  • 【中等】修复 SDK 中注册函数装箱宏问题
  • 【轻微】更友好的脚本编译报错
  • 【轻微】修复了脚本编辑对于科学记数法数字和单引号包裹的字符串中转译字符的高亮问题
  • 【调整】脚本新增对printf充分支持,参考格式见 此链接 ,对于脚本对象和非字符串类将会转化为字符串作为输入
  • 【调整】对于打印数组或者将数组转为字符串,则采用[]包裹而非{},并且不采用字典的样式
  • 【调整】增加string toString() const作为通用方法,该方法影响到所有打印和stringify的行为,如果不含有此方法,则默认为打印类型名+地址,比如myclass<#123456>
  • 【调整】新增uint64 debug::elapsedTime()函数用于获取脚本运行时间
  • 【调整】在暗色模式下链接显示会更加清晰
  • 【调整】更好的代码提示,我对 angel-lsp 使用 AI 辅助做了一些 patch 修复了很多问题
  • 【调整】优化在打开无需保存脚本的脚本编辑器的主程序退出
  • 【调整】移除在文件信息中对 MD5 的计算
  • 【调整】对于工作区文件,会增加对实际打开文件的指纹计算,如果出现不一致会警告提醒指向的文件绑定不正确

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

已知问题或缺陷

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

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

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

后面更新

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

  下一次更新版本号为2.3.5,主要包含缺陷修复和调整:

  • 【严重】修复运行脚本如果含有大量字符串会崩溃的问题
  • 【严重】修复 WingCStruct 声明非法自递归结构体导致的程序崩溃
  • 【中等】修复脚本引用类型构造的代码提示错误缺失和符号显示缺失
  • 【轻微】再修复 Toast 在窗口模式下位置偏移和动画不生效问题
  • 【轻微】修复 angel-lsp 的字符串错误的警告
  • 【轻微】修复处于非编辑状态下,视图-窗体-编辑器的状态依旧不是禁用问题
  • 【轻微】修复脚本编辑器运行结果控制台在运行第二遍之后始终有空行的问题
  • 【轻微】修复新建脚本的文件不会添加到历史记录的问题
  • 【轻微】修复脚本文件选项卡右键菜单没有“显示包含目录”的问题
  • 【调整】废弃所有脚本函数的 Generic 调用绑定支持,仅支持 Native 绑定,一定程度上略微降低编译体积和编译时间
  • 【调整】脚本编辑器的诊断选项现在可以双击快速到某一行
  • 【调整】WingCStruct 获取大小的类型降级为int64,并限制所有结构体和联合体的总大小不能够超过 100 KB,每个成员个数不超过 4294967295 个
  • 【调整】WingCStruct 增加readMemberreadMembers函数,以支持读取结构体中的部分成员内容,并支持typedef的链式别名声明
  • 【调整】WingCStruct 不再是全局单例,对于服务函数已经和插件唯一标识相关,脚本相关的已变成一个类对象,相关pragma预处理已不再受支持
  • 【调整】脚本新增reflect模块,以支持对类型的简单的反射支持
  • 【调整】脚本新增optbox类,可以通过json字符串或者模块生成对应的简单设置页窗体,用于简单的 UI 交互,获取用户输入配置
  • 【调整】和json相关的脚本模块已完全简化命名,增强可读性和方便输入,这是一个破坏性改动
  • 【调整】脚本any对象现在可以存储任意类型,不再使用官方的any扩展
  • 【调整】将绝大部分脚本类型的 ID,以提升脚本执行速度
  • 【调整】移除 beautify 函数,该函数仅用于格式化字典格式字符串,如果确实需要对齐格式化打印请用printf("{:h}", dic),用于格式化输出字典类型的内容

  下一次含有大功能更新版本号为2.3.11,该更新内容的完成度将会与用户量和赞助密切相关,但以下内容可能不会完全实现(目前没啥知名度和赞助,不实现):

  • 更加充分支持 angel-lsp 的功能,而不是仅仅代码填充和报错诊断
  • 实现脚本的帮助系统
  • 调试器支持 DAP ?
  • 实现单独的 Headless 模式运行脚本进行批量分析?
  • 支持 bundle 插件加载器,让单一插件文件支持多外部依赖自动加载打包和跨操作系统以及跨 CPU 平台加载?
  • 实现 diff/patch 支持以及可视化显示?

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. 外部可自定义主题以及可更换图标。(100 RMB)
  4. 提供完全的 Generic Call 支持。(100 RMB)
  5. 脚本编辑器的代码片段管理器支持。(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  寂静的羽夏  阅读(931)  评论(0)    收藏  举报