ubuntu上面难道就没有一个好用的16进制编辑器吗?

泛旅传媒 2023-08-21 18:48 编辑:admin 228阅读

大家好,我是明说网络的小明同学。

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

狂揽2500星,开源十六进制编辑器登顶GitHub热榜

ImHex是什么?

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

ImHex是一款功能强大的十六进制编辑器,该工具专为逆向工程分析师、编程开发人员以及那些想好好保护自己眼睛的安全人员所设计。哪怕你每天工作到凌晨三点(虽然不建议),也不会伤害你的眼睛!

为什么这么火呢?

首先一定是颜值

上截图

其次,一定是开源特性

ImHex是一款开源的十六进制编辑器。开源地址为

https://github.com/WerWolv/ImHex

使用C++20编写,内部使用插件式管理方法加载窗体,其扩展性非常的强,开发上手也很快。

相比之下,一些编辑器如010Edit,作为闭源产品收费较贵,显然ImHex让开源社区眼前一亮,都有一种“我也能开发编辑器的感觉”,而且事实上也确实是这样


下面就让我们来试试这款 raising star

编译ImHex

首先系统选择Ubuntu20.04

不要问问为什么不是ubuntu18,16,问了就是不符合编译要求,要么是这些系统上编译工具版本低,缺少一些新的特性,要么就是依赖安装不上

安装依赖

在项目根目录下的dict目录你可以找到对应平台如何安装依赖。以下是ubuntu系统需要安装的依赖

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"

需要注意的是,该项目使用了很多C++20的特性,如concept、span等,因此在编译之前,确保使用了支持最新C++20的编译器:

在cmake运行前要,export CXX=g++-10,否则汇报有些头文件找不到的错误,例如span头文件

macos:

 CC=$(brew --prefix llvm)/bin/clang
 CXX=$(brew --prefix llvm)/bin/clang++ 
 PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig":"$(brew --prefix)/lib/pkgconfig" 
 cmake -DCMAKE_BUILD_TYPE=Release ..
 make -j

拉取仓库

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

上面这个参数--recurse-submodules一定要加,因为该仓库还引用了一些其他仓库的代码,需要同时拉取。

编译

仓库拉取完毕之后,就是编译了,回到项目根目录

mkdir build
cd build
cmake -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下编译,成功!


编译总结

主要工作在处理依赖和拉取子模块上,需要注意一些细节。

打完收工!



增加插件

工具|如何给爆款编辑器ImHex增加插件窗口

灰度图显示插件

工具|为爆款十六进制编辑器ImHex增加实时灰度图显示

以下为采坑记录,无兴趣可忽略,划走

失败尝试

--2022.2.8

有时候代码出现问题,也不一定是自己的代码出现了问题,也有可能是开源的代码有问题!!!

在开发插件的过程中,出现了bug,一度以为自己的代码出了问题,调试了很久,甚至自己看了一遍引用库的代码,最后发现,该项目没有使用最新的sbt_image.h,在使用的旧版本的库中, stbi_load_from_memory函数在加载内存中的BMP图像时出现错误!这个bug,调试了很久!

最终的解决方案,下载最新的sbt_image.h,然后重新编译,解决问题!

使用镜像站的坑

插曲 都知道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中下载的才有,坑啊!!!
唉没有办法!
下载,解压,重新编译




以下为失败案例,想要在ubuntu 系统上安装pacman编译ImHex,太难了!

pacman安装

To install deb-pacman open the terminal and type:

cd ~/Desktop/
wget https://gitlab.com/TriVoxel/deb-pacman/uploads/9f716f95c66cd90e65157773d6dea05b/deb-pacman_1.0-0.deb  
sudo apt update  
sudo apt install ./deb-pacman_1.0-0.deb
# from:https://askubuntu.com/questions/1263200/can-i-use-pacman-package-manager-instead-of-apt-in-ubuntu#:~:text=You%20can%20simply%20invoke%20pacman%20instead%20of%20apt,To%20install%20deb-pacman%20open%20the%20terminal%20and%20type%3A



sudo pacman -S glfw file openssl capstone llvm llvm-libs nlohmann-json python3

glfw capstone llvm-libs 找不到数据包

顶一下
(0)
0%
踩一下
(0)
0%