Como Fazer Engenharia Reversa com ImHex e esconder seus assets

Esconda os assets dos seus Jogos e Projetos em geral transformando em Hex!


Como Fazer Engenharia Reversa com ImHex e esconder seus assets


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

No Gentoo:

emerge -n yara mbedtls ccache nlohmann-json glfw fmt gtk

No MSYS2

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


Códigos criados no vídeo

💫 Clique aqui para ver o img.hpp

💫 Clique aqui para ver o font.hpp

💻 Código C++ SFML com os data:

#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


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!