ImHex火了有一阵子了,像这样
机器之心:狂揽2500星,开源十六进制编辑器登顶GitHub热榜365 赞同 · 36 评论文章
(资料图片仅供参考)
ImHex是什么?那么这么火他到底是个什么呢?
ImHex是一款功能强大的十六进制编辑器,该工具专为逆向工程分析师、编程开发人员以及那些想好好保护自己眼睛的安全人员所设计。哪怕你每天工作到凌晨三点(虽然不建议),也不会伤害你的眼睛!
为什么这么火呢?首先一定是颜值上截图
其次,一定是开源特性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头文件
拉取仓库 git clone --recurse-submodules https://github.com/WerWolv/ImHex.git
上面这个参数–recurse-submodules一定要加,因为该仓库还引用了一些其他仓库的代码,需要同时拉取。
编译仓库拉取完毕之后,就是编译了,回到项目根目录
mkdir buildcd buildcmake -DCMAKE_BUILD_TYPE=Release ..make -j
这段编译得有一段时间,稍等一会。
在老旧的机器上记得限制一下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.
这CPU占用率,可怜了我的老mac
这CPU占用率,可怜了我的老mac
截图可怜我的老mac,最终还是提出了抗议。
最终,只能在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
然后在项目路径./lib/external/下分别拉取上述源,笨办法 这里需要问小伙伴的问题是,我这里替换了里面的字符串,为什么用git submodules update,不管用呢?? 有知道的小伙伴望告知一下,感激不尽!!!
该方案也存在一个问题就是:镜像站的镜像可能不是最新的,例如在编译本项目的过程中
view_disassembler.cpp:305:109: error: use of undeclared identifier ‘CS_MODE_BPF_CLASSIC,在旧的镜像站中是没有的,在http://github.com中下载的才有,坑啊!!!
唉没有办法!
下载,解压,重新编译