羽云十六進制編輯器 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相關代碼)。
- 32 位程序下運行使用如果有問題:不提供支持,但如果解決,可 PR 。
- 腳本安全注冊方式返回值不支持數組和列表:是這樣的,這個實現太麻煩了,如果要支持,我只能支持 QVariantList 作為返回值容器,但是,我不一定知道 QVariantList 裝的東西是什么,進一步校驗和轉化也是很麻煩的問題。
- 腳本安全注冊方式不支持引用:是這樣的,實現方式不支持引用,要引用就需要指針,但我沒有提供這個機制,反射也反射不出來。
后面更新
??我將會根據知名度我會酌情偏向更新文檔內容(目前沒啥知名度和贊助,暫停)。
??下一個缺陷修復版本號為2.3.2,這次更新預計在2025/11/30發布,如果有比較高的熱度或者贊助,將會一周或者兩周后更新,下面是修復日志:
- 【嚴重】修復使用克隆頁保存轉為工作區之后關閉崩潰
- 【中等】修復插件系統錯誤的文檔狀態的實現
- 【中等】修復優化 WingEditorViewWidget 相關內容
- 【調整】為十六進制編輯視圖增加了交互提示圖標
- 【調整】現在鼠標的 XButton 、Ctrl + 左右方向鍵 、 在標簽頁上按住 Ctrl 鍵 + 鼠標滾輪 都可以很方便的切換十六進制的編輯視圖
??下一次含有功能更新版本號為2.3.11,這次更新內容的完成度將會與用戶量和贊助密切相關,但以下內容可能不會完全實現:
- 更加充分支持 angel-lsp 的功能,而不是僅僅代碼填充和報錯診斷
- 實現腳本的幫助系統
- 調試器支持 DAP ?
FAQ
-
為啥不在搜索結果增加篩選排列功能(其他表格類控件同理):
答:功能很好,但是在數據量很大的情況下,很卡,但我沒有精力和經驗來處理這個事情。 -
該軟件和 WingHexExplorer 有什么區別,我還可以繼續使用 WingHexExplorer 這個軟件嗎?
答:新版軟件具有更強大的布局組件、跨平臺和 UI 統一性。功能上自帶 AngelScript 腳本引擎,相比于 Python 可能會有更好的 API 兼容性和速度(未測試),并且可以具有更好的 API 權限管控,會更安全一些。還有它更擅長處理多文件編輯,你可以對同一個文件同時在不同位置進行預覽/編輯,這就是“克隆”功能。十六進制編輯器還增加了 Ctrl + 鼠標滾輪原生縮放支持。該軟件對任意編輯中的文件窗體隱藏,哈希值計算,對書簽更好的可視化以及標記的可視化和更好的插件支持,以及進一步的 Bug 修復。在 v2.0.0 規劃完成發布之后,還會有深度配合的代碼編輯器和調試器,正好是一個小型的 AngelScript IDE。這些都是 WingHexExplorer 軟件所不具備的功能,這里還有很多小細節沒說,這個軟件會更加專業,也會更加好用。
WingHexExplorer 這個軟件仍舊是能用的,但還是有點小 Bug,只要你不是深度使用是不會有問題的,比如預覽和簡單的編輯普通文件。但它有 Bug,我也不會去修了。 -
該軟件和 WingHexExplorer 兼容嗎?
答:項目文件是可以兼容的,但插件還是按照老約定,采用不兼容處理,因為變化太大了。
版本規劃
??當收到的指定贊助金額滿足一定程度來開發以下列出的功能時,我將主動花費我的業余時間來完成這件事情。當然 PR 也是可以算作“贊助內容”,畢竟是貢獻代碼,以下所有的功能都接受 PR 。如果你想要通過贊助金額來支持該項目來開發功能的話,請注明備注該任務名稱,我將會在該篇日志更新,金額達到之后就開始進入排隊開發。如果注明僅 PR 的,則不接受金額贊助開發。一旦受贊助的功能開始開發,原則上不退款。這些贊助內容將會以 AGPL-3.0 開源發布。 目前考慮到的內容如下:
- 嘗試增加 AngelScript 對 QT 用戶界面組件的綁定嘗試,可以通過腳本實現插件。(若指明贊助該功能 450 RMB,增加窗體、標簽、按鈕、文本框支持,其他暫不支持,除非 PR)
- 為腳本解釋器增加 JIT。(目前僅 PR)
- 更多的 AngelScript 腳本模塊標準庫。(僅 PR)
- 外部可自定義主題以及可更換圖標。(100 RMB)
- 該軟件提供的 AngelScript addon 提供完全的 Generic Call 支持。(100 RMB)
- 插件注冊腳本函數更強大的類型支持。(200 RMB)
- 腳本編輯器的代碼片段管理器支持。(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
本文來自博客園,作者:寂靜的羽夏 ,一個熱愛計算機技術的菜鳥
轉載請注明原文鏈接:http://www.rzrgm.cn/wingsummer/p/18286419



浙公網安備 33010602011771號