知乐空间

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 指南

下载,解压,重新编译

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 ZLME@ZLME.COM 举报,一经查实,立刻删除。

留言与评论(共有 0 条评论)
验证码: