16進制編輯器教程「16進制編輯器」

ImHex火了有一陣子了,像這樣

機器之心:狂攬2500星,開源十六進制編輯器登頂GitHub熱榜365 贊同 · 36 評論文章

ImHex是什麼?

那麼這麼火他到底是個什麼呢?

ImHex是一款功能強大的十六進制編輯器,該工具專為逆向工程分析師、編程開發人員以及那些想好好保護自己眼睛的安全人員所設計。哪怕你每天工作到凌晨三點(雖然不建議),也不會傷害你的眼睛!

為什麼這麼火呢?

首先一定是顏值

上截圖

工具 | 老mac攜Ubuntu20 編譯爆款十六進制編輯器ImHex 指南
工具 | 老mac攜Ubuntu20 編譯爆款十六進制編輯器ImHex 指南

其次,一定是開源特性

ImHex是一款開源的十六進制編輯器。開源地址為

https://github.com/WerWolv/ImHexgithub.com/WerWolv/ImHex

使用C++20編寫,內部使用插件式管理方法加載窗體,其擴展性非常的強,開發上手也很快。

相比之下,一些編輯器如010Edit,作為閉源產品收費較貴,顯然ImHex讓開源社區眼前一亮,都有一種「我也能開發編輯器的感覺」,而且事實上也確實是這樣


下面就讓我們來試試這款 raising star

編譯ImHex

首先系統選擇Ubuntu20.04

不要問問為什麼不是ubuntu18,16,問了就是不符合編譯要求,要麼是這些系統上編譯工具版本低,缺少一些新的特性,要麼就是依賴安裝不上

安裝依賴

apt install -y 
  build-essential       
  gcc-10                
  g++-10                
  lld                   
  ${PKGCONF:-}          
  cmake                 
  make                  
  ccache                
  libglfw3-dev          
  libglm-dev            
  libmagic-dev          
  libmbedtls-dev        
  python3-dev           
  libfreetype-dev       
  libgtk-3-dev          

echo "Please consider this before running cmake (useful on e.g. Ubuntu 20.04):"
echo "export CXX=g++-10"

注意:

在cmake運行前要,export CXX=g++-10,否則彙報有些頭文件找不到的錯誤,例如span頭文件

工具 | 老mac攜Ubuntu20 編譯爆款十六進制編輯器ImHex 指南

拉取倉庫

 git clone --recurse-submodules https://github.com/WerWolv/ImHex.git

上面這個參數–recurse-submodules一定要加,因為該倉庫還引用了一些其他倉庫的代碼,需要同時拉取。

編譯

倉庫拉取完畢之後,就是編譯了,回到項目根目錄

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j

這段編譯得有一段時間,稍等一會。

工具 | 老mac攜Ubuntu20 編譯爆款十六進制編輯器ImHex 指南

在老舊的機器上記得限制一下make的job的數量,例如`make -j4`,反正我年老的mac虛擬機死了很多次

-j [jobs], --jobs[=jobs]
            Specifies the number of jobs (commands) to run simultaneously.  
            If there is more than one -j option, the last one is effective.  If
            the -j option is given without an argument, make will not 
            limit the number of jobs that can run simultaneously.
工具 | 老mac攜Ubuntu20 編譯爆款十六進制編輯器ImHex 指南

這CPU佔用率,可憐了我的老mac

工具 | 老mac攜Ubuntu20 編譯爆款十六進制編輯器ImHex 指南

這CPU佔用率,可憐了我的老mac

截圖

可憐我的老mac,最終還是提出了抗議。

工具 | 老mac攜Ubuntu20 編譯爆款十六進制編輯器ImHex 指南

最終,只能在mac下編譯,成功!

編譯總結

主要工作在處理依賴和拉取子模塊上,需要注意一些細節。

打完收工!

失敗嘗試

使用鏡像站的坑

插曲 都知道github在牆的作用下,異常的慢。小明同學在拉取倉庫的過程中,始終不能成功 作為合法公民的小明同學怎麼能爬梯子呢? 所以使用了鏡像源,https://github.com/ –>
https://github.com.cnpmjs.org/ 把所有的上述字符串進行替換就行了,比如我們的拉取命令 git clone –recurse-submodules https://github.com.cnpmjs.org/WerWolv/ImHex.git 但是問題來了,submodules怎麼辦呢? 不要着急,先拉去ImHex的原來,然後我們找到項目下有個.gitmodules的文件(隱藏文件,直接vim就可以),像這樣完成替換。 vim替換命令拿走不謝

  %s/github.com/github.com.cnpmjs.org/g 
工具 | 老mac攜Ubuntu20 編譯爆款十六進制編輯器ImHex 指南

然後在項目路徑./lib/external/下分別拉取上述源,笨辦法 這裡需要問小夥伴的問題是,我這裡替換了裏面的字符串,為什麼用git submodules update,不管用呢?? 有知道的小夥伴望告知一下,感激不盡!!!
該方案也存在一個問題就是:鏡像站的鏡像可能不是最新的,例如在編譯本項目的過程中

view_disassembler.cpp:305:109: error: use of undeclared identifier ‘CS_MODE_BPF_CLASSIC,在舊的鏡像站中是沒有的,在http://github.com中下載的才有,坑啊!!!

工具 | 老mac攜Ubuntu20 編譯爆款十六進制編輯器ImHex 指南
工具 | 老mac攜Ubuntu20 編譯爆款十六進制編輯器ImHex 指南

唉沒有辦法!

工具 | 老mac攜Ubuntu20 編譯爆款十六進制編輯器ImHex 指南

下載,解壓,重新編譯

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/203619.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-07 12:09
下一篇 2024-12-07 12:10

相關推薦

發表回復

登錄後才能評論