ImHex é um editor hexadecimal, escrito em C++ , para engenheiros reversos, programadores e pessoas que valorizam suas retinas quando trabalham às 3 da manhã . 😃
Há uma infinidade de coisas que podem ser feitas com ImHex. Nesse vídeo veremos como ele pode ser útil, por exemplo, para “esconder ” os assets(imagens, fonts, áudios, …) dos seus games transformando em Hex!
Como exemplo mostraremos como implementar em Desenvolvimento de Games mais precisamente em SFML .
💾 Como instalar o ImHex
Você pode usar pacotes binários compactados disponíveis em Releases no repositório no GitHub do ImHex .
Há pacotes para: Windows com MSYS2, macOS , Debian(serve para Ubuntu, Mint e entre outros), Arch e Fedora.
Após baixado você pode exercutar o pacote. Exemplo no Ubuntu :
wget -q https://github.com/WerWolv/ImHex/releases/download/v1.31.0/imhex-1.31.0-Ubuntu-23.04-x86_64.deb
sudo apt install ./imhex-1.31.0-Ubuntu-23.04-x86_64.deb
Ou você também pode compilar o ImHex do zero, que foi como eu fiz…
🚀 Como Compilar e Instalar
Antes de tudo certifique-se de possuir as dependências:
No Ubuntu , Debian, Mint:
apt install -y build-essential gcc-12 g++-12 lld ${ PKGCONF :-} cmake ccache \
libglfw3-dev libglm-dev libmagic-dev libmbedtls-dev libfreetype-dev \
libdbus-1-dev libcurl4-gnutls-dev libgtk-3-dev ninja-build
No Arch:
pacman -S $@ --needed cmake gcc lld glfw file mbedtls freetype2 dbus gtk3 curl fmt \
yara nlohmann-json ninja
No Fedora:
dnf install -y cmake dbus-devel file-devel freetype-devel libcurl-devel gcc-c++ git \
mesa-libGL-devel glfw-devel lld mbedtls-devel gtk3-devel
emerge -n yara mbedtls ccache nlohmann-json glfw fmt gtk
pacman -S --needed --noconfirm \
mingw-w64-x86_64-gcc \
mingw-w64-x86_64-lld \
mingw-w64-x86_64-cmake \
mingw-w64-x86_64-ccache \
mingw-w64-x86_64-glfw \
mingw-w64-x86_64-file \
mingw-w64-x86_64-curl-winssl \
mingw-w64-x86_64-mbedtls \
mingw-w64-x86_64-freetype \
mingw-w64-x86_64-dlfcn \
mingw-w64-x86_64-ninja \
mingw-w64-x86_64-capstone
Agora clone o repositório de forma recursiva, compile e instale com os comandos abaixo:
git clone --recurse-submodules https://github.com/WerWolv/ImHex
cd ImHex
mkdir build && cd build
CC = gcc CXX = g++ cmake -DCMAKE_BUILD_TYPE = Release -DCMAKE_INSTALL_PREFIX = "/usr" \
-DCMAKE_C_COMPILER_LAUNCHER = ccache -DCMAKE_CXX_COMPILER_LAUNCHER = ccache \
-DCMAKE_C_FLAGS = "-fuse-ld=lld" -DCMAKE_CXX_FLAGS = "-fuse-ld=lld" \
-DCMAKE_OBJC_COMPILER_LAUNCHER = ccache -DCMAKE_OBJCXX_COMPILER_LAUNCHER = ccache ..
sudo make install
Clique aqui para ver o caminho onde os arquivos são instalados
Após instalação, já pode remover o repositório clonado:
cd ../..
rm -rf ImHex/
🎥 Assista ao vídeo
VIDEO
Códigos criados no vídeo
#include <SFML/Graphics.hpp>
#include <cstdint>
#include <array>
#include "img.hpp"
#include "font.hpp"
int main (){
sf :: RenderWindow window ( sf :: VideoMode ( 1280 , 720 ), "SFML::Terminal Root" );
sf :: Image img ;
img . loadFromMemory ( img_data . data (), img_data . size ());
sf :: Texture texture ;
texture . loadFromImage ( img );
sf :: Sprite sprite ( texture );
sf :: Font font ;
font . loadFromMemory ( data . data (), data . size ());
sf :: Text text ( "Terminal Root" , font , 100 );
text . setFillColor ( sf :: Color :: White );
text . setOutlineColor ( sf :: Color :: Black );
text . setOutlineThickness ( 4 );
text . setPosition ( 100. f , 10. f );
while ( window . isOpen () ){
sf :: Event event ;
while ( window . pollEvent ( event )){
if ( event . type == sf :: Event :: Closed ){
window . close ();
}
}
window . clear ( sf :: Color ( 55 , 44 , 77 ));
window . draw ( text );
window . draw ( sprite );
window . display ();
}
return EXIT_SUCCESS ;
}
// g++ main.cpp -lsfml-graphics -lsfml-window -lsfml-system
📌 Link úteis
cpp
webhacker
Marcos Oliveira
Desenvolvedor de software