- ImHex는 리버스 엔지니어, 프로그래머, 심야 작업자를 대상으로 한 헥스 에디터이며, 파일 내용을 분석·수정·시각화하는 기능을 한 도구에 모음
- 핵심 기능은 C 유사 패턴 언어로 구조와 데이터 타입을 정의해 파일 내용을 파싱·하이라이트하고, MIME 타입과 magic 값 기반 자동 로딩을 지원하는 점임
- 로컬 파일, raw disk, GDB Server, UDP 패킷, 프로세스 메모리, SSH/SFTP 원격 파일 등 여러 데이터 소스를 열 수 있고, Capstone 기반 디스어셈블러와 YARA rule 스캔도 포함함
- 사용 조건은 OpenGL 3.0 이상 GPU가 기본이며,
-NoGPU소프트웨어 렌더링 릴리스는 GPU 없이 쓸 수 있지만 GPU 가속 버전보다 훨씬 느릴 수 있음 - 플러그인은
libimhex, ImHex API, Content Registry를 통해 개발하며, 대부분은 GPLv2-only지만/lib/libimhex와/plugins/ui는 LGPLv2.1로 제공돼 proprietary 플러그인 개발을 허용함
ImHex가 제공하는 기본 역할
- ImHex는 리버스 엔지니어, 프로그래머, 그리고 새벽 3시에 작업해도 눈이 덜 피로한 도구를 원하는 사람을 위한 헥스 에디터임
- 최신 릴리스 다운로드, nightly pre-release, 웹 버전, 문서가 별도로 제공됨
헥스 뷰와 데이터 편집
- 헥스 뷰는 byte patching, patch management, 무제한 undo/redo를 지원함
- 바이트 복사는 여러 형식으로 가능함
- bytes
- hex string
- C, C++, C#, Rust, Python, Java, JavaScript 배열
- ASCII-Art hex view
- HTML self-contained div
- 검색과 이동 기능은 단순 string/hex search, 시작·끝·현재 커서 기준 goto를 포함함
- 하이라이트는 전경 규칙 설정, 패턴·검색 결과·북마크 기반 배경 하이라이트를 지원함
- 데이터 표시는 여러 타입을 지원함
- 8/16/32/64비트 hexadecimal integer
- 8/16/32/64비트 signed/unsigned decimal integer
- 16/32/64비트 float
- RGBA8 color, HexII, binary
- 인코딩은 ASCII와 사용자 정의 인코딩을 처리하며, UTF-8, UTF-16, ShiftJIS, 대부분의 Windows 인코딩 등을 기본 지원함
- paged data view를 제공함
패턴 언어와 데이터 구조 해석
- Pattern Language는 ImHex용으로 개발된 완전한 사용자 정의 프로그래밍 언어임
- C와 유사한 문법으로 구조와 데이터 타입을 정의하고, 이를 사용해 파일 내용을 파싱하고 하이라이트할 수 있음
- 패턴 언어는 MIME 타입과 magic 값에 기반한 자동 로딩을 지원함
- 지원 요소는 arrays, pointers, structs, unions, enums, bitfields, namespaces, little/big endian, conditionals 등을 포함함
- 오류 메시지, syntax highlighting, error marking을 제공함
- 데이터 시각화 대상은 images, audio, 3D models, coordinates, time stamps 등을 포함함
- 관련 자료:
- Pattern Language Source Code
- Pattern Language Documentation
- ImHex-Patterns: format patterns, libraries, magic, constant files 저장소
데이터 검사, 전처리, 검색
- Data Inspector는 endianness, decimal, hexadecimal, octal, bit inversion을 포함해 데이터를 다양한 타입으로 해석함
- unsigned/signed integer: 8/16/24/32/48/64비트
- float: 16/32/64비트
- signed/unsigned LEB128
- ASCII, Wide, UTF-8 characters and strings
time32_t,time64_t, DOS date/time- GUID, RGBA8, RGB65 colors
- inspector를 통해 byte 복사와 수정이 가능하고, 패턴 언어로 새 데이터 타입을 추가할 수 있음
- node-based data pre-processor는 헥스 에디터에 표시되기 전에 데이터를 수정·복호화·디코딩할 수 있음
- underlying source를 건드리지 않고 데이터 수정 가능
- custom node 추가 지원
- 데이터 검색은 전체 파일 또는 선택 영역을 대상으로 수행할 수 있음
- 문자열 추출은 최소 길이, 문자 집합, 인코딩 옵션을 제공함
- sequence search는 byte 또는 character sequence를 찾고 대소문자 무시 옵션을 제공함
- regex search, binary pattern wildcard search, numeric value/range search를 지원함
- numeric search는 size, endianness, unaligned value 무시 옵션을 포함함
데이터 소스와 분석 기능
- ImHex는 여러 데이터 소스에서 데이터를 로드할 수 있음
- 로컬 파일: 큰 파일의 빠르고 효율적인 로딩 지원
- raw disks: raw disk와 partition 로딩
- GDB Server: 실행 중인 프로세스 또는 embedded device의 RAM 접근
- Intel Hex, Motorola SREC
- Base64 encoded data
- UDP packets
- process memory: 실행 중인 프로세스의 전체 address space 검사
- SSH/SFTP 원격 파일
- 데이터 분석·시각화는 file magic 기반 file parser와 MIME type database를 포함함
- 그래프와 통계는 byte type distribution, entropy graph, highest/average entropy, digram, layered distribution graph를 제공함
- encrypted/compressed file detection 기능이 있음
- diffing은 서로 다른 데이터 소스를 비교하고, 차이 하이라이트와 table view를 제공함
디스어셈블리, YARA, 해시
- 내장 디스어셈블러는 Capstone이 지원하는 모든 아키텍처를 지원함
- ARM32, ARM64, MIPS, x86 16/32/64-bit, PowerPC, SPARC, IBM SystemZ, xCORE, M68K, TMS320C64X, M680X, Ethereum, RISC-V, WebAssembly, MOS65XX, Berkeley Packet Filter
- 자체 아키텍처용 custom disassembler 작성도 지원함
- YARA Rule 지원은 official yara rules로 파일을 스캔하고, match를 헥스 에디터에서 하이라이트하며, match로 이동하고, 여러 rule을 한 번에 적용할 수 있음
- 해싱은 특정 데이터 영역과 임의 문자열을 대상으로 수행할 수 있음
- 지원 해시에는 CRC8/16/32, MD5, SHA-1/SHA-224/SHA-256/SHA-384/SHA-512, Adler32, Murmur, SipHash, XXHash, Tiger, Blake2B, Blake2S 등이 포함됨
UI, 테마, 가져오기·내보내기
- 테마는 기본 dark mode를 제공하며 light mode도 사용 가능함
- 공유 가능한 theme file로 모든 UI 요소의 색상과 스타일을 커스터마이즈할 수 있고 custom font를 지원함
- modern interface는 multiple workspaces, custom layouts, detachable windows를 지원함
- import/export는 Base64 files, IPS/IPS32 patches, Markdown reports, 여러 프로그래밍 언어용 binary arrays를 지원함
- bookmarks는 custom name/color, 헥스 에디터 내 region highlight, jump, 새 탭에서 bookmark content 열기, comment 추가를 지원함
- 내장 content updater는 데이터베이스의 파일을 ImHex 내부에서 다운로드할 수 있음
- pattern files
- pattern language libraries
- magic files
- custom data processor nodes
- custom encodings
- custom themes
- Yara rules
도구와 온보딩
- Helpful tools에는 LLVM 기반 Itanium, MSVC, Rust, D-Lang demangler가 포함됨
- 기타 도구는 ASCII table, regex replacer, mathematical expression evaluator, graphing calculator, hexadecimal color picker, base converter, byte swapper, UNIX permissions calculator, Wikipedia term definition finder 등을 포함함
- file utilities는 file splitter, file combiner, file shredder를 제공함
- TCP Client/Server, HTTP Requests, IEEE754 Float visualizer, Euclidean algorithm calculator 등도 포함됨
- 시작을 돕는 기능으로 다국어 지원, beginner용 simplified mode, extensive documentation, database의 example files, achievements, interactive tutorials가 있음
시스템 요구사항과 빌드 조건
- GPU는 일반적으로 OpenGL 3.0 이상이 필요함
-NoGPUsuffix 릴리스는 software rendered 방식이라 GPU 없이 실행 가능하지만 GPU accelerated 버전보다 훨씬 느릴 수 있음- 가능하면 integrated GPU 대신 dedicated GPU를 쓰는 것이 권장됨
- Windows의 일부 Intel HD GPU driver는 graphical artifacts를 일으키는 것으로 알려져 있음
- OS 지원:
- Windows 7 이상, Windows 10/11 권장
- macOS 15 Sequoia 이상
- 낮은 버전도 직접 컴파일하면 동작할 수 있지만, GitHub에 macOS 15 이하 CI runner가 없어 release binary는 동작하지 않음
- macOS build는 signed 상태가 아니므로 Security & Privacy 설정에서 수동 허용이 필요함
- Linux는 Ubuntu/Debian, Fedora, RHEL/AlmaLinux, Arch Linux용 official release가 있고, 다른 distro는 AppImage, Flatpak, Snap으로 지원됨
- FreeBSD 14.3에서 테스트됨
- CPU는 x86, AMD64, ARM64를 공식 지원하며, Little Endian CPU라면 동작해야 함
- RAM은 약 50MiB가 필요하고, 더 복잡한 분석에는 더 많은 메모리가 필요함
- 저장공간은 약 100MiB가 필요함
- 컴파일에는 C++23 이상을 지원하는 GCC 또는 Clang이 필요함
- Windows와 Linux release는 최신 available GCC로 빌드됨
- macOS release는 최신 available LLVM Clang으로 빌드됨
- MSVC와 AppleClang은 지원되지 않음
- 설치와 컴파일 문서:
플러그인 개발과 라이선스
- 플러그인 개발은 template project로 시작할 수 있으며,
libimhex, ImHex API, Content Registry에 접근해 ImHex와 상호작용하거나 새 content를 추가할 수 있음 - 플러그인을 빌드하려면 SDK가 필요함
- 로컬 SDK 빌드 절차:
cmake -G Ninja -DIMHEX_BUNDLE_PLUGIN_SDK=ON -B buildcd buildDESTDIR=install ninja install- SDK 경로는
install/usr/local/share/imhex/sdk가 되며,IMHEX_SDK_PATH를 해당 absolute path로 설정해야 함
- GitHub Actions CI에서는 imhex-download-sdk action으로 SDK를 자동 다운로드할 수 있음
- 플러그인 시작점으로 ImHex Plugin Template이 제공됨
- 라이선스는 대부분 GPLv2-only임
/lib/libimhex는 LGPLv2.1/plugins/ui는 LGPLv2.1- 이 예외는 proprietary plugin 개발을 허용하기 위한 것임
- code signing policy는 사용자가 명시적으로 요청하거나 설치·운영자가 요청하지 않는 한 다른 네트워크 시스템으로 정보를 전송하지 않는다고 밝힘