🔍 A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.

🔍 ImHex

A Hex Editor for Reverse Engineers, Programmers and people who value their retinas when working at 3 AM.

'Build' workflow Status Discord Server Total Downloads

Supporting

If you like my work, please consider supporting me on GitHub Sponsors, Patreon or PayPal. Thanks a lot!

GitHub donate button Patreon donate button PayPal donate button

Screenshots

Hex editor, patterns and data information Bookmarks, disassembler and data processor

Features

  • Featureful hex view
    • Byte patching
    • Patch management
    • Copy bytes as feature
      • Bytes
      • Hex string
      • C, C++, C#, Rust, Python, Java & JavaScript array
      • ASCII-Art hex view
      • HTML self contained div
    • String and hex search
    • Colorful highlighting
    • Goto from start, end and current cursor position
  • Custom C++-like pattern language for parsing highlighting a file's content
    • Automatic loading based on MIME type
    • arrays, pointers, structs, unions, enums, bitfields, namespaces, little and big endian support, conditionals and much more!
    • Useful error messages, syntax highlighting and error marking
  • Data importing
    • Base64 files
    • IPS and IPS32 patches
  • Data exporting
    • IPS and IPS32 patches
  • Data inspector allowing interpretation of data as many different types (little and big endian)
  • Huge file support with fast and efficient loading
  • String search
    • Copying of strings
    • Copying of demangled strings
  • File hashing support
    • CRC16 and CRC32 with custom initial values and polynomials
    • MD4, MD5
    • SHA-1, SHA-224, SHA-256, SHA-384, SHA-512
  • Disassembler supporting many different architectures
    • ARM32 (ARM, Thumb, Cortex-M, AArch32)
    • ARM64
    • MIPS (MIPS32, MIPS64, MIPS32R6, Micro)
    • x86 (16-bit, 32-bit, 64-bit)
    • PowerPC (32-bit, 64-bit)
    • SPARC
    • IBM SystemZ
    • xCORE
    • M68K
    • TMS320C64X
    • M680X
    • Ethereum
  • Bookmarks
    • Region highlighting
    • Comments
  • Data Analyzer
    • File magic-based file parser and MIME type database
    • Byte distribution graph
    • Entropy graph
    • Highest and average entropy
    • Encrypted / Compressed file detection
  • Built-in Content Store
    • Download all files found in the database directly from within ImHex
  • Yara Rules support
    • Quickly scan a file for vulnearabilities with official yara rules
  • Helpful tools
    • Itanium and MSVC demangler
    • ASCII table
    • Regex replacer
    • Mathematical expression evaluator (Calculator)
    • Hexadecimal Color picker
    • Base converter
    • UNIX Permissions calculator
    • Anonfiles File upload tool
    • Wikipedia term definition finder
    • File utilities
      • File splitter
      • File combiner
      • File shredderer
  • Built-in cheat sheet for pattern language and Math evaluator
  • Doesn't burn out your retinas when used in late-night sessions

Pattern Language

The custom C-like Pattern Language developed and used by ImHex is easy to read, understand and learn. A guide with all features of the language can be found on the docs page.

Plugin development

To develop plugins for ImHex, use one of the following two templates projects to get startet. You then have access to the entirety of libimhex as well as the ImHex API and the Content Registry to interact with ImHex or to add new content.

Additional Files

For format patterns, includable libraries and magic files, check out the ImHex-Patterns repository. Feel free to PR your own files there as well!

Nightly builds

Nightlies are available via GitHub Actions here.

Compiling

You need a C++20 compatible compiler such as GCC 10.2.0 to compile ImHex.

Many dependencies are bundled into the repository using submodules so make sure to clone it using the --recurse-submodules option. All dependencies that aren't bundled, can be installed using the dependency installer scripts found in the /dist folder.

For working examples

Windows

On Windows, ImHex is built through msys2 / mingw. To install all dependencies, open a mys2 window and run the PKGCONFIG script in the (dist/msys2)[dist/msys2] folder. After all the dependencies are installed, run the following commands to build ImHex:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j

To create a standalone zipfile on Windows, get the Python standard library (e.g. from https://github.com/python/cpython/tree/master/Lib) and place the files and folders in lib/python3.8 next to your built executable. Don't forget to also copy the libpython3.8.dll and libwinpthread-1.dll from your mingw setup next to the executable.

  • Copy the files from python_libs in the lib folder next to your built executable.
  • Place your magic databases in the magic folder next to your built executable
  • Place your patterns in the pattern folder next to your built executable
  • Place your include pattern files in the include folder next to your built executable

macOS

To build ImHex on macOS, run the following commands:

brew bundle --no-lock --file dist/Brewfile
mkdir build
cd build
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

Install the ImHex executable as well as libimhex.dylib to wherever ImHex should be installed.

All other files belong in ~/Library/Application Support/imhex:

Patterns: ~/Library/Application Support/imhex/patterns
Pattern Includes: ~/Library/Application Support/imhex/includes
Magic files: ~/Library/Application Support/imhex/magic
Python: ~/Library/Application Support/imhex/lib/pythonX.X
Plugins: ~/Library/Application Support/imhex/plugins
Configuration: ~/Library/Application Support/imhex/config
Resources: ~/Library/Application Support/imhex/resources

Linux

Dependency installation scripts are available for many common Linux distributions in the (/dist)[dist] folder. After all the dependencies are installed, run the following commands to build ImHex:

mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j

Put the ImHex executable into the /usr/bin folder. Put libimhex.so into the /usr/lib folder. Configuration files go to /etc/xdg/imhex or ~/.config/imhex. All other files belong in /usr/share/imhex or ~/.local/share/imhex:

Patterns: /usr/share/imhex/patterns
Pattern Includes: /usr/share/imhex/includes
Magic files: /usr/share/imhex/magic
Python: /usr/share/imhex/lib/pythonX.X
Plugins: /usr/share/imhex/plugins
Configuration: /etc/xdg/imhex/config
Resources: /usr/share/imhex/resources

All paths follow the XDG Base Directories standard, and can thus be modified with the environment variables XDG_CONFIG_HOME, XDG_CONFIG_DIRS, XDG_DATA_HOME and XDG_DATA_DIRS.

Credits

Contributors

  • Mary for her immense help porting ImHex to MacOS and help during development
  • Roblabla for adding MSI Installer support to ImHex
  • jam1garner and raytwo for their help with adding Rust support to plugins
  • All other people that have been reporting issues on Discord or GitHub that I had great conversations with :)

Libraries

  • Thanks a lot to ocornut for their amazing Dear ImGui which is used for building the entire interface
    • Thanks to ocornut as well for their hex editor view used as base for this project.
    • Thanks to BalazsJako for their incredible ImGuiColorTextEdit used for the pattern language syntax highlighting
  • Thanks to nlohmann for their json library used for project files
  • Thanks to aquynh for capstone which is the base of the disassembly window
  • Thanks to vitaut for their libfmt library which makes formatting and logging so much better
  • Thanks to rxi for microtar used for extracting downloaded store assets
Owner
WerWolv
I'm a 23 year old embedded systems electronics engineer. Mostly interested in reverse engineering, low-level coding and homebrew development
WerWolv
Comments
  • [Bug] Cursor not aligned with interface

    [Bug] Cursor not aligned with interface

    Operating System

    Windows

    What's the issue you encountered?

    The cursor doesn't line up with the interface. I counted the pixels and the cursor needs to be 31 pixels up and 9 pixels left when in window mode and 23 pixels up when in full screen mode, in order to select the edge of menu item or the window controls (minimize, ,maximize, close). I'm running Windows 10 Pro 21H1 (OS Build 19043.1165).

    How can the issue be reproduced?

    Just running the software. It happens in the latest version 1.9.0 with both the Windows MSI installer and Portable version.

    ImHex Version

    1.9.0

    Additional context?

    • Additional information about your environment.
    • If possible and useful, please upload the binary you've been editing when the bug occured.
  • Mac support request

    Mac support request

    Is there any plan to support mac os?

    I've tried some build and got this.

    [  2%] Building CXX object CMakeFiles/ImHex.dir/source/window.cpp.o
    [  5%] Building CXX object CMakeFiles/ImHex.dir/source/main.cpp.o
    [ 13%] Building CXX object CMakeFiles/ImHex.dir/source/helpers/crypto.cpp.o
    [ 13%] Building CXX object CMakeFiles/ImHex.dir/source/helpers/patches.cpp.o
    [ 13%] Building CXX object CMakeFiles/ImHex.dir/source/helpers/math_evaluator.cpp.o
    [ 16%] Building CXX object CMakeFiles/ImHex.dir/source/helpers/loader_script_handler.cpp.o
    [ 19%] Building CXX object CMakeFiles/ImHex.dir/source/lang/lexer.cpp.o
    [ 22%] Building CXX object CMakeFiles/ImHex.dir/source/providers/file_provider.cpp.o
    [ 27%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_hexeditor.cpp.o
    [ 27%] Building CXX object CMakeFiles/ImHex.dir/source/lang/evaluator.cpp.o
    [ 33%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_pattern.cpp.o
    [ 36%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_pattern_data.cpp.o
    [ 36%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_hashes.cpp.o
    [ 38%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_information.cpp.o
    [ 41%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_help.cpp.o
    [ 44%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_tools.cpp.o
    [ 47%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_strings.cpp.o
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/window.cpp:1:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/window.hpp:3:10: fatal error: 'concepts' file
          not found
    #include <concepts>
             ^~~~~~~~~~
    [ 50%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_disassembler.cpp.o
    [ 52%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_bookmarks.cpp.o
    [ 58%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_patches.cpp.o
    [ 58%] Building CXX object CMakeFiles/ImHex.dir/source/views/view_data_inspector.cpp.o
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/main.cpp:1:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/window.hpp:3:10: fatal error: 'concepts' file
          not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/providers/file_provider.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/file_provider.hpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/lang/evaluator.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/evaluator.hpp:5:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/helpers/patches.cpp:3:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/helpers/crypto.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/lang/lexer.cpp:24:10: error: no template named
          'optional' in namespace 'std'
        std::optional<u64> parseInt(std::string_view string) {
        ~~~~~^
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/helpers/patches.cpp.o] Error 1
    make[2]: *** Waiting for unfinished jobs....
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/lang/lexer.cpp:234:41: error: no matching
          constructor for initialization of 'std::string_view' (aka 'basic_string_view<char>')
                    auto integer = parseInt(std::string_view(&code[offset], end));
                                            ^                ~~~~~~~~~~~~~~~~~~
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string_view:229:5: note:
          candidate constructor not viable: no known conversion from 'char *' to
          'std::__1::basic_string_view::size_type' (aka 'unsigned long') for 2nd argument; dereference the
          argument with *
        basic_string_view(const _CharT* __s, size_type __len) _NOEXCEPT
        ^
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string_view:223:5: note:
          candidate constructor not viable: requires 1 argument, but 2 were provided
        basic_string_view(const basic_string_view&) _NOEXCEPT = default;
        ^
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string_view:238:5: note:
          candidate constructor not viable: requires single argument '__s', but 2 arguments were provided
        basic_string_view(const _CharT* __s)
        ^
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string_view:220:5: note:
          candidate constructor not viable: requires 0 arguments, but 2 were provided
        basic_string_view() _NOEXCEPT : __data (nullptr), __size(0) {}
        ^
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/providers/file_provider.cpp.o] Error 1
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_patches.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_strings.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_data_inspector.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/helpers/loader_script_handler.cpp:5:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_information.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_hashes.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_disassembler.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_pattern_data.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_pattern_data.hpp:7:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:7:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/libs/ImGui/include/imgui_memory_editor.h:230:23: warning:
          flag ' ' results in undefined behavior with 'c' conversion specifier [-Wformat]
            ImGui::Text("% *c   ", s.AddrDigitsCount, ' ');
                         ~^~~
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/helpers/math_evaluator.cpp:10:10: fatal error:
          'numbers' file not found
    #include <numbers>
             ^~~~~~~~~
    1 error generated.
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_pattern_data.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_pattern_data.hpp:7:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:9:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    1 error generated.
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_bookmarks.cpp:3:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    make[2]: *** [CMakeFiles/ImHex.dir/source/helpers/crypto.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/helpers/math_evaluator.cpp.o] Error 1
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_hexeditor.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_hexeditor.hpp:6:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/libs/ImGui/include/imgui_memory_editor.h:230:23: warning:
          flag ' ' results in undefined behavior with 'c' conversion specifier [-Wformat]
            ImGui::Text("% *c   ", s.AddrDigitsCount, ' ');
                         ~^~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_help.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_help.hpp:7:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:7:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/libs/ImGui/include/imgui_memory_editor.h:230:23: warning: 2 errors generated.
    
          flag ' ' results in undefined behavior with 'c' conversion specifier [-Wformat]
            ImGui::Text("% *c   ", s.AddrDigitsCount, ' ');
                         ~^~~
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/lang/lexer.cpp.o] Error 1
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_strings.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_data_inspector.cpp.o] Error 1
    1 error generated.
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_help.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_help.hpp:7:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:9:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_patches.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_hashes.cpp.o] Error 1
    1 error generated.
    1 error generated.
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/window.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_bookmarks.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_disassembler.cpp.o] Error 1
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_pattern.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_pattern.hpp:6:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:7:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/libs/ImGui/include/imgui_memory_editor.h:230:23: warning:
          flag ' ' results in undefined behavior with 'c' conversion specifier [-Wformat]
            ImGui::Text("% *c   ", s.AddrDigitsCount, ' ');
                         ~^~~
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_pattern.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_pattern.hpp:6:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:9:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/lang/evaluator.cpp.o] Error 1
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_information.cpp.o] Error 1
    1 warning and 1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_pattern_data.cpp.o] Error 1
    1 error generated.
    1 warning and 1 error generated.
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_tools.cpp:7:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    make[2]: *** [CMakeFiles/ImHex.dir/source/helpers/loader_script_handler.cpp.o] Error 1
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_help.cpp.o] Error 1
    1 error generated.
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/source/views/view_hexeditor.cpp:1:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/views/view_hexeditor.hpp:13:
    In file included from /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/lang/pattern_data.hpp:9:
    /Users/benjioh5/Coding/hobby/4_Contribution/ImHex/include/providers/provider.hpp:6:10: fatal error:
          'concepts' file not found
    #include <concepts>
             ^~~~~~~~~~
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_tools.cpp.o] Error 1
    1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/main.cpp.o] Error 1
    1 warning and 1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_hexeditor.cpp.o] Error 1
    1 warning and 1 error generated.
    make[2]: *** [CMakeFiles/ImHex.dir/source/views/view_pattern.cpp.o] Error 1
    make[1]: *** [CMakeFiles/ImHex.dir/all] Error 2
    make: *** [all] Error 2
    

    I think Apple clang 12.0.0 doest not support C++17 std::optional and C++20 features fully. Is there any support plan on Mac OS after apple clang supports C++20 featrues?

  • [Bug] content store: bug, tty console: crash

    [Bug] content store: bug, tty console: crash

    Win10 64bits, msys mingw64, code: https://github.com/xtexChooser/ImHex

    $ mingw32-make -j
    ...................................................
    [email protected] MINGW64 /f/Project/ImHex/build
    $ mingw32-make install
    [  0%] Built target magic_dbs
    [ 54%] Built target libcurl
    [ 58%] Built target imgui
    [ 58%] Built target nfd
    [ 66%] Built target libimhex
    [ 70%] Built target windows
    [ 70%] Built target LLVMDemangle
    [ 83%] Built target libyara
    [ 87%] Built target builtin
    [100%] Built target imhex
    [100%] Built target fmt
    Install the project...
    -- Install configuration: "Release"
    -- Up-to-date: F:/Project/ImHex/build/install/plugins/builtin.hexplug
    -- Up-to-date: F:/Project/ImHex/build/install/plugins/windows.hexplug
    -- Up-to-date: F:/Project/ImHex/build/install/./libimhex.dll
    CMake Error at cmake_install.cmake:100 (get_filename_component):
      get_filename_component unknown component Files/Python/libs/python39.lib
    
    
    mingw32-make: *** [Makefile:114: install] Error 1
    
    

    CMake with cmake -G "MinGW Makefiles" -DCREATE_PACKAGE=ON -DCMAKE_INSTALL_PREFIX="$PWD/install" ..

  • Proper DPI scaling and basic custom font

    Proper DPI scaling and basic custom font

    For now the font is loaded from a hardcoded path, but in the future it would be better to ask the user directly (in a settings panel), as well as expose some kind of customization for the ui/font scaling.

    ~~Also some stuff scales badly because of hardcoded window sizes, which need to be weighted by the scaling factor.~~ EDIT: I fixed the issues I saw.

  • No HiDPI support

    No HiDPI support

    I tried to use this because I value my eyesight but it backfired due to the lack of HiDPI support and now my eyes hurt.

    Your friends for Windows are:

    • MonitorFromWindow: https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-monitorfromwindow
    • GetDpiForMonitor: https://docs.microsoft.com/en-us/windows/win32/api/shellscalingapi/nf-shellscalingapi-getdpiformonitor
    • ImGuiIO::DisplayFramebufferScale
  • sys: Fix macOS compilation (as of 2dc1886)

    sys: Fix macOS compilation (as of 2dc1886)

    This PR fixes the compilation of ImHex on macOS. It doesn't add any QoL improvements about the state of the software on this operating system, but at least it'll lessen the work needed to get ImHex running on macOS.

    I tried to modify the code in a way that would only affect macOS builds (using #if defined(OS_MACOS) guards, although some changes could affect other platforms. The main change that could behave in such a way is the removal of uses of std::views::reverse in favor of the older, more supported reverse iterators. This was done because LLVM 13.0.0 (release 4 days ago as of now) is the first LLVM version to support the ranges standard library, but its support is incomplete. Support for std::views::reverse is, however, already in the source of LLVM and will probably be available in one of the next releases. I honestly think merging this PR can wait for an LLVM update, as macOS is not officially supported by ImHex anyway.

    The external cURL was also updated for its support of mbedtls 3.0, which is now the latest version available on Homebrew.

    Tests were done on an M1 Mac, but I believe x86 will work just fine as well.

    Thanks for this software :)

  • runtime_error: Failed to initialize GLFW

    runtime_error: Failed to initialize GLFW

    ImHex/build on  master via 喝 v3.19.1 took 6s 
    ❯ ./ImHex                                                                      
    Glfw Error 65544: Wayland: Failed to connect to display
    terminate called after throwing an instance of 'std::runtime_error'
      what():  Failed to initialize GLFW!
    [1]    419447 abort (core dumped)  ./ImHex
    

    I'm using Xorg, openbox, Xfce.

    ImHex/build on  master via 喝 v3.19.1 
    ❯ neofetch                                                                  
                       -`                    [email protected] 
                      .o+`                   ━━━━━━━━━━━━━ 
                     `ooo/                   〻 Arch x86_64 
                    `+oooo:                  〻 5.9.11-arch2-1 
                   `+oooooo:                 〻 1157 (pacman) 
                   -+oooooo+:                〻 Openbox 
                 `/:-:++oooo+:               〻 2285MiB / 16001MiB (14%) 
                `/++++/+++++++:              〻 1 hour, 25 mins 
               `/++++++++++++++:             CPU〻 AMD Ryzen 5 3600X (12) @ 3.8GHz  
              `/+++ooooooooooooo/`           CPU Usage〻 4% 
             ./ooosssso++osssssso+`          GPU〻 NVIDIA GeForce GTX 1660 SUPER 
            .oossssso-````/ossssss+`         GPU Driver〻 NVIDIA 455.45.01 
           -osssssso.      :ssssssso.        Disk (/)〻 65G / 261G (26%) 
          :osssssss/        osssso+++.       Host〻 ROG Strix GA15DH_G15DH 1.0 
         /ossssssss/        +ssssooo/-       Terminal〻 tilix 
       `/ossssso+/:-        -:/+osssso+-     Locale〻 en_US.UTF-8 
      `+sso+:-`                 `.-/+oso:
     `++:.                           `-/+/                           
     .`                                 `/
    
    
  • Failed to build on Ubuntu 20.04

    Failed to build on Ubuntu 20.04

    └─> …/ImHex/build on  master via 喝 v3.16.3 
    at 11:27:46 [💣 127] ✗  cmake -DCMAKE_BUILD_TYPE=Release ..
    -- Checking for one of the modules 'libmagic'
    CMake Error at CMakeLists.txt:47 (list):
      list index: 2 out of range (-2, 1)
    
    
    -- Configuring incomplete, errors occurred!
    See also "/home/the-box/Github/ImHex/build/CMakeFiles/CMakeOutput.log".
    

    File is attached, thanks for taking a look!

    (I ran the bash script under build before running cmake)

    CMakeOutput.log

  • Add expressions to the pattern language

    Add expressions to the pattern language

    I'm trying to reverse engineer a file format which has some length-prefixed strings at some point, which are encoded as such:

    struct PString {
        u32 length;
        u8 string[length / 12];
    };
    

    (I don't know why 12, this format is weird like that :P)

    It would be nice to be able to use simple arithmetic expressions in the size of an array rather than just variables so I could express this struct in the pattern language. I've seen there's already #15 open for expressions in variable placements, but that looked a bit more complex and also didn't cover array sizes.

    And thank you for making this, I'm finding it very useful!

  • Problem building on Ubuntu 20.04

    Problem building on Ubuntu 20.04

    Hi. Trying to build on a clean VM of Ubuntu 20.04. I'm building the latest stable (and master) and get the same.

    [ 78%] Building CXX object CMakeFiles/ImHex.dir/libs/ImGui/source/imgui_draw.cpp.o
    [ 81%] Building CXX object CMakeFiles/ImHex.dir/libs/ImGui/source/imgui_widgets.cpp.o
    /root/parts/imhex/src/source/views/view_disassembler.cpp: In member function ‘virtual void hex::ViewDisassembler::createView()’:
    /root/parts/imhex/src/source/views/view_disassembler.cpp:221:30: error: ‘CS_ARCH_M68K’ was not declared in this scope; did you mean ‘CS_ARCH_MAX’?
      221 |                         case CS_ARCH_M68K:
          |                              ^~~~~~~~~~~~
          |                              CS_ARCH_MAX
    /root/parts/imhex/src/source/views/view_disassembler.cpp:222:30: error: ‘CS_ARCH_TMS320C64X’ was not declared in this scope
      222 |                         case CS_ARCH_TMS320C64X:
          |                              ^~~~~~~~~~~~~~~~~~
    /root/parts/imhex/src/source/views/view_disassembler.cpp:223:30: error: ‘CS_ARCH_M680X’ was not declared in this scope; did you mean ‘CS_ARCH_MAX’?
      223 |                         case CS_ARCH_M680X:
          |                              ^~~~~~~~~~~~~
          |                              CS_ARCH_MAX
    /root/parts/imhex/src/source/views/view_disassembler.cpp:224:30: error: ‘CS_ARCH_EVM’ was not declared in this scope; did you mean ‘CS_ARCH_ARM’?
      224 |                         case CS_ARCH_EVM:
          |                              ^~~~~~~~~~~
          |                              CS_ARCH_ARM
    [ 84%] Building CXX object CMakeFiles/ImHex.dir/libs/ImGui/source/imgui_demo.cpp.o
    make[2]: *** [CMakeFiles/ImHex.dir/build.make:323: CMakeFiles/ImHex.dir/source/views/view_disassembler.cpp.o] Error 1
    

    I have the following dependencies installed:

          - libmagic-dev
          - libglfw3-dev
          - libssl-dev
          - llvm-10-dev
          - nlohmann-json3-dev
          - libcapstone-dev
          - python3-dev
          - pkg-config
          - libglm-dev
          - gcc-10
          - g++-10
    

    Perhaps I'm missing something? Capstone related? The only thing I modified was to bodge it to use Python 3.8.5 rather than the explicitly specified 3.8.6 as Ubuntu doesn't have that. But I don't think that's related.

  • [Bug] Loading screen (kind of) freezes?

    [Bug] Loading screen (kind of) freezes?

    Operating System

    Linux

    What's the issue you encountered?

    On Fedora 34 I tried to run ImHex, and the loading screen initiated, and dissapeared, but the program never appeared.

    How can the issue be reproduced?

    1. Clone ImHex
    2. Get Submodules
    3. Build
    4. Run builded result (on Fedora 34)
    5. See bug

    ImHex Version

    aef9598 master

    Additional context?

    Logs:

    terminate called after throwing an instance of 'nlohmann::detail::type_error'
      what():  [json.exception.type_error.302] type must be number, but is null
    

    (thats it)

  • [Bug] CI tries to link wrong versions of libraries libicuuc and libicudata for appimage

    [Bug] CI tries to link wrong versions of libraries libicuuc and libicudata for appimage

    Operating System

    Linux

    What's the issue you encountered?

    the AppImageBuilder.yml file (used in CI for generating the appimage) references libicuuc and libicudata version 67, but Ubuntu 20.04 has version 66. This causes the appimage not to contains any libicu* library

    For example, I'm unable to launch the appimage on my ArchLinux system

    How can the issue be reproduced?

    Launch the AppImage generated by CI with an ArchLinux system

    ImHex Version

    latest commit seems to still do this

    ImHex Build Type

    • [ ] Nightly or built from sources

    Additional context?

    I've already fixed the issue on my fork of ImHex, so I'm willing to submit a pull request for this

    Alternatively, I'm also willing to directly update the CI runner to ubuntu 22.04 (from what I've seen updating these two libraries to version 70 should be enough to make it work, but I'll make more tests).

    What would you prefer ?

  • [Bug] Not possible to run on Debian stable with KDE.

    [Bug] Not possible to run on Debian stable with KDE.

    Operating System

    Linux

    What's the issue you encountered?

    Apart from Flatpak (which I refuse to use and therefore didn't try), none of the installation options work.

    How can the issue be reproduced?

    AppImage: I get a fatal error due to missing icons when clicking "open file":

    Gtk-Message: 23:31:39.692: Failed to load module "window-decorations-gtk-module"
    Gtk-Message: 23:31:39.693: Failed to load module "colorreload-gtk-module"
    
    (imhex:604363): Gtk-WARNING **: 23:31:39.728: Could not find the icon 'user-home-symbolic-ltr'. The 'hicolor' theme
    was not found either, perhaps you need to install it.
    You can get a copy from:
            http://icon-theme.freedesktop.org/releases
    
    (imhex:604363): Gtk-WARNING **: 23:31:39.728: Could not load a pixbuf from /org/gtk/libgtk/icons/16x16/status/image-missing.png.
    This may indicate that pixbuf loaders or the mime database could not be found.
    **
    Gtk:ERROR:../../../../gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /org/gtk/libgtk/icons/16x16/status/image-missing.png: Unrecognized image file format (gdk-pixbuf-error-quark, 3)
    Bail out! Gtk:ERROR:../../../../gtk/gtkiconhelper.c:494:ensure_surface_for_gicon: assertion failed (error == NULL): Failed to load /org/gtk/libgtk/icons/16x16/status/image-missing.png: Unrecognized image file format (gdk-pixbuf-error-quark, 3)
    Aborted
    

    However, I have hicolor and adwaita icon themes both installed on my system, which contain the image-missing.png the error message complains about.

    .deb file and ELF: I get a runtime error because libpython 3.8 seems to be required, but Debian only ships 3.9 these days.

    Building from source: Requires a newer CMAKE version than Debian provides (3.21 vs 3.18)

    ImHex Version

    1.17.0

    ImHex Build Type

    • [ ] Nightly or built from sources

    Additional context?

    No response

  • request: create source tarballs with submodules included for releases

    request: create source tarballs with submodules included for releases

    As a downstream distro packager, it would be really handy if releases had a tarball that included all the submodules as they're pinned in the repo at release time

  • [Feature] Multi languages for Wikipedia

    [Feature] Multi languages for Wikipedia

    What feature would you like to see?

    Search Wikipedia for other languages.

    How will this feature be useful to you and others?

    Some pages are not available in English, and some are easier for understanding.

    Request Type

    • [X] I can provide a PoC for this feature or am willing to work on it myself and submit a PR
  • [Feature] Add JVM bytecode Data Inspector

    [Feature] Add JVM bytecode Data Inspector

    What feature would you like to see?

    Please support to show the corresponding bytecode operation of the hex number in Data Inspector Zone. You can check JVM bytecode instructions in oracle documentation or wikipedia.

    How will this feature be useful to you and others?

    It will provider a good benefit for disassembling a java class file.

    Request Type

    • [ ] I can provide a PoC for this feature or am willing to work on it myself and submit a PR
May 8, 2022
This is new projec based in apps to chat or messages people to people

Stranger This is new projec based in apps to chat or messages people to people Esta aplicacion tendra las siguientes caracteristicas: 1* Es 100% segur

Nov 3, 2021
JeVois-Pro People Counter : Implement people counter on JeVois-Pro Deep Learning Smart Camera
JeVois-Pro People Counter : Implement  people counter  on JeVois-Pro Deep Learning Smart Camera

JeVois-Pro People Counter Refer to the OpenCV People Counter article to implement a people counter on the JeVois-Pro Deep Learning Smart Camera. First

Nov 10, 2021
This project helps a person park their car in their garage in the same place every time.

garage-parking-sensor Description This project is developed to help a person park their car in their garage in the same place every time. Normally peo

Sep 13, 2021
Simple text editor in C++ - Simple editor built upon kilo editor.

GUMBO editor Simple editor built upon kilo editor. Still big work in progress although this is just fun side project to learn more C/C++. From 0.0.2->

Sep 15, 2021
Dexe is a simple hex editor, written in Uxntal.

Dexe Dexe is a simple hex editor, written in Uxntal. Build You must have the Uxn assembler and emulator. uxnasm noodle.tal noodle.rom && uxnemu noodle

Oct 15, 2021
bviplusplus (bvi++) is an ncurses-based hex editor derived from bviplus

bviplusplus (bvi++) Overview bviplusplus (bvi++) is an ncurses-based hex editor derived from bviplus Links Other bviplus derivatives bviplus by Barano

May 9, 2022
This is a tool for software engineers to view,record and analyse data(sensor data and module data) In the process of software development.
This is a tool for software engineers to view,record and analyse data(sensor data and module data) In the process of software development.

![Contributors][Huang Jianyu] Statement 由于工具源码在网上公开,除使用部分开源项目代码外,其余代码均来自我个人,工具本身不包含公司的知识产权,所有与公司有关的内容均从软件包中移除,软件发布遵循Apache协议,任何人均可下载进行修改使用,如使用过程中出现任何问

May 5, 2022
AI Powered Hacking Environment, A Software For Hackers, Social Engineers, Penetration Testers.
AI Powered Hacking Environment, A Software For Hackers, Social Engineers, Penetration Testers.

Digital Eagle (Digle) (Note: This Project isn't Finished Yet, it's Under Development, Some Tools will not work) Hell0 W0rld This Project Focus Firstly

Apr 18, 2022
Unofficial upload of ChinesePython, a translation of the Python programming language in Chinese [Provided by UrduPython engineers]

# Downloaded from SourceForge: https://sourceforge.net/projects/chinesepython/ # (Uploaded as is) ---------------------------------------------------

Feb 12, 2022
List of Persian Colors and hex colors for CSS, SCSS, PHP, JS, Python, and Ruby.

Persian Colors (Iranian colors) List of Persian Colors and hex colors for CSS, SCSS, PHP, C++, QML, JS, Python, Ruby and CSharp. Persian colors Name H

Feb 22, 2022
A short and sweet hex dumper!

██████╗ ██████╗ ███╗ ███╗██████╗ ██╔═══██╗██╔══██╗████╗ ████║██╔══██╗ ██║ ██║██║ ██║██╔████╔██║██████╔╝ ██║▄▄ ██║██║ ██║██║╚██╔╝██║██╔═══

Nov 18, 2021
「⚙️」Simple header for C language to encode and decode hex

「 ⚙️ 」Simple header for C language to encode and decode hex Example: Encode: #include <stdio.h> #include <string.h> #include <stdlib.h> #include "hex.

Dec 30, 2021
IDA StrikeOut: A Hex-Rays decompiler plugin to patch the Ctree
IDA StrikeOut: A Hex-Rays decompiler plugin to patch the Ctree

StrikeOut is an plugin for the Hex-Rays Decompiler. It allows you to delete (hide) statements from the AST, thus simplifying the pseudocode output. This is a useful scenario when you are dealing with lots of junk code or code that don't necessarily increase your understanding of the pseudocode.

May 9, 2022
Header only wrapper around Hex-Rays API in C++20.

HexSuite HexSuite is a header only wrapper around Hex-Rays API in C++20 designed to simplify the use of Hex-Rays and IDA APIs by modern C++ features.

May 5, 2022
Hex-Rays microcode plugin for automated simplification of Windows Kernel decompilation.
Hex-Rays microcode plugin for automated simplification of Windows Kernel decompilation.

NtRays NtRays is a Hex-Rays microcode plugin for automated simplification of Windows Kernel decompilation. Features Cleanup of instrumentation and sch

May 9, 2022
Edit a PF-DTA content in hex on a side-by-side display of EBCDIC character representation.
Edit a PF-DTA content in hex on a side-by-side display of EBCDIC character representation.

AS400 Hex Editor Edit a PF-DTA content in hex on a side-by-side display of EBCDIC character representation. Introduction This tool was written to edit

May 3, 2022
An efficient, small mobile key-value storage framework developed by WeChat. Works on Android, iOS, macOS, Windows, and POSIX.
An efficient, small mobile key-value storage framework developed by WeChat. Works on Android, iOS, macOS, Windows, and POSIX.

中文版本请参看这里 MMKV is an efficient, small, easy-to-use mobile key-value storage framework used in the WeChat application. It's currently available on Andr

May 15, 2022