当前简讯:16进制编辑器 ImHex:专为逆向工程分析师等人员设计

ImHex火了有一阵子了,像这样

机器之心:狂揽2500星,开源十六进制编辑器登顶GitHub热榜365 赞同 · 36 评论文章


(资料图片仅供参考)

ImHex是什么?

那么这么火他到底是个什么呢?

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头文件

拉取仓库
 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中下载的才有,坑啊!!!

唉没有办法!

下载,解压,重新编译

推荐DIY文章
在电脑上浏览网页显示“网页上有错误” 修复浏览器组件的方法来了-世界聚焦
win7网页看不了视频的解决方法 原因有可能是网速很低所以播放不了
为什么桌面的ie图标删不掉 有遇到同样情况的可以参考这个方法来处理
全球即时:windows10系统下移动硬盘读不出来的三种解决方案 以及如何才能避免线头损坏
世界热点!win10系统下将百度浏览器设为默认浏览器的方法 想更改的用户快按照这些步骤手动操作看看
全球播报:解析windows xp系统设置共享wifi热点的方法 其实设置的方法不难很容易学
精彩新闻

超前放送