🔍 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" ..

  • [Bug] Doesn't start on macos Catalina (Intel) due to missing Library

    [Bug] Doesn't start on macos Catalina (Intel) due to missing Library

    Operating System

    MacOS

    What's the issue you encountered?

    ImHex doesn't even start, no message, no window.

    Checking "Console.app" and the Crash reports there you can find:

    Exception Type:        EXC_CRASH (SIGABRT)
    Exception Codes:       0x0000000000000000, 0x0000000000000000
    Exception Note:        EXC_CORPSE_NOTIFY
    
    Termination Reason:    DYLD, [0x1] Library missing
    
    Application Specific Information:
    dyld: launch, loading dependent libraries
    
    Dyld Error Message:
      Library not loaded: /System/Library/Frameworks/UniformTypeIdentifiers.framework/Versions/A/UniformTypeIdentifiers
      Referenced from: /Applications/imhex.app/Contents/MacOS/imhex
      Reason: image not found
    

    How can the issue be reproduced?

    Try to start ImHex on macos Catalina (10.15.7) on a MBP 2015 (Intel)

    ImHex Version

    1.19.3

    ImHex Build Type

    • [ ] Nightly or built from sources

    Additional context?

    see above (MBP2015, Catalina)

  • [Bug] Flatpak 1.18.2 crashes on open file in Fedora 36

    [Bug] Flatpak 1.18.2 crashes on open file in Fedora 36

    Operating System

    Linux

    What's the issue you encountered?

    Note sure if you control the Flatpak build or if it is a third party.....finding this out is a major flatpak weakness. Please let me know if this is a third party build and I will try to hunt them down.

    However it installs cleanly on Fedora 36 from flathub, and starts the GUI just fine. However when you open a file or try to create a new file, the app crashes with:

    Gtk-Message: 01:31:34.030: Failed to load module "canberra-gtk-module"
    Gtk-Message: 01:31:34.030: Failed to load module "pk-gtk-module"
    Gtk-Message: 01:31:34.031: Failed to load module "canberra-gtk-module"
    Gtk-Message: 01:31:34.031: Failed to load module "pk-gtk-module"
    /usr/include/c++/11.3.0/bits/stl_vector.h:1045: std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::operator[](std::vector<_Tp, _Alloc>::size_type) [with _Tp = unsigned char; _Alloc = std::allocator<unsigned char>; std::vector<_Tp, _Alloc>::reference = unsigned char&; std::vector<_Tp, _Alloc>::size_type = long unsigned int]: Assertion '__n < this->size()' failed.
    

    I'm guessing it is missing dependencies in the Flatpak build.

    How can the issue be reproduced?

    Just install from flathub, start app, and try opening a file. To see the error message, start from a commandline with flatpak run.

    ImHex Version

    1.18.2

    ImHex Build Type

    • [ ] Nightly or built from sources

    Additional context?

    • Additional information about your environment.
    • If possible and useful, please upload the binary you've been editing when the bug occured.
  • 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 :)

  • Add AppStream metadata and `.desktop` file for Linux desktop integration

    Add AppStream metadata and `.desktop` file for Linux desktop integration

    Tested locally on my Fedora 33 system, it works:

    KRunner showing ImHex

    • Rename the binary target from ImHex to imhex for easier invocation on case-sensitive filesystems.
    • Add a 256×256 PNG icon to be installed on Linux (upscaled using waifu2x).

    This supersedes/closes #40 by also providing CMake install functionality.

    Adding Linux desktop integration files eases packagers' job and also makes it possible to package ImHex for Flathub.

  • 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

  • [Bug] 1.26.0 Crashes on startup on macOS

    [Bug] 1.26.0 Crashes on startup on macOS

    Operating System

    MacOS

    What's the issue you encountered?

    Tried to update to 1.26.0, but this version crashes on startup for me.

    How can the issue be reproduced?

    1. Install 1.26.0
    2. Start imhex
    3. Get crash dialog

    ImHex Version

    1.26.0

    ImHex Build Type

    • [ ] Nightly or built from sources

    Installation type

    Installed from macOS dmg (GPU version) on GitHub

    Additional context?

    macOS 12.6.2

  • [Bug]  Diff window gets stuck docked to bottom of screen, unmovable, unclosable

    [Bug] Diff window gets stuck docked to bottom of screen, unmovable, unclosable

    Operating System

    Linux

    What's the issue you encountered?

    Linux Mint 20.3, Cinnamon, (2x Monitors if that is relevant)

    The diff window can get stuck permanently docked to the bottom of the screen. I was just trying to dock it on the right-hand side of the main app window and I guess something went wrong.

    • It can be horizontally resized (from bottom-right) but not vertically.
    • Clicks within the window are ignored and passed through to the main app window (if it is beneath the diff window). This includes clicks in the title bar trying to move it or close it.
    • Menu -> Layout -> Default will temporarily hide the diff window, but it restores to the stuck position again it is re-opened via the app menu.
    • The behavior persists across shutdown and restart.

    How to fix it:

    1. Menu -> Help-> Settings -> Interface -> Enable Multi_window Support -> Uncheck
    2. Restart
    3. Diff Window is now way down in the lower right of the app window -> move it to a normal position
    4. Menu -> Help-> Settings -> Interface -> Enable Multi-window Support -> Re-check
    5. Diff window can now be moved as normal

    How can the issue be reproduced?

    1. Have app in Multi-Window mode
    2. Drag app Window down until it runs into edge of screen and won't go further, but is NOT attached to any of the docking points. Release Mouse button
    3. Window is now stuck and cannot be moved using it's title area or closed using it's X button.

    ImHex Version

    1.25.0

    ImHex Build Type

    • [ ] Nightly or built from sources

    Installation type

    AppImage

    Additional context?

    No response

  • [Bug] Disassembly doesn't start from base offset

    [Bug] Disassembly doesn't start from base offset

    Operating System

    Windows

    What's the issue you encountered?

    The disassembly doesn't start from the chosen base offset. I opened a small Windows/PE .exe and I can't move the start of disassembly as below

    Image 2022-12-21 173308

    Note that however, with a 'Selection' the disassembly is correct

    How can the issue be reproduced?

    1. Open an .exe
    2. Select View, Disassembler
    3. Enter a 'Position' different from zero
    4. The disassembled data keep starting from 0x0

    ImHex Version

    1.25.0

    ImHex Build Type

    • [ ] Nightly or built from sources

    Installation type

    Portable Windows package, just extracted

    Additional context?

    No response

  • [Feature] Infineon Tricore 1.31 and 1.6 decompilation support

    [Feature] Infineon Tricore 1.31 and 1.6 decompilation support

    What feature would you like to see?

    [Feature] Infineon Tricore 1.31 and 1.6 decompilation

    How will this feature be useful to you and others?

    Currently use tricore-objdump which is clunky and command line based.

    Request Type

    • [ ] I can provide a PoC for this feature or am willing to work on it myself and submit a PR

    Additional context?

    I can provide tricore-objdump which is open source. There are several repos available on github.

  • [Bug]

    [Bug]

    Operating System

    Windows

    What's the issue you encountered?

    Load the bin file into a c array if the size is greater than 65535, it will find the subscript above 65535 is 0, a variable of uint16 should be defined as uint32

    How can the issue be reproduced?

    Load the bin file into a c array if the size is greater than 65535, Copy it to a c file and you'll find it

    ImHex Version

    1.22.0

    ImHex Build Type

    • [ ] Nightly or built from sources

    Installation type

    MSI

    Additional context?

    No response

  • [Bug] Unicode font broken

    [Bug] Unicode font broken

    Operating System

    Windows

    What's the issue you encountered?

    Unicode font rendering is broken on monospaced unicode font with unicode symbols.

    image

    How can the issue be reproduced?

    load this character encoding Petscii_tbl.txt

    ImHex Version

    imhex-1.25.0-Windows-Portable.zip

    ImHex Build Type

    • [ ] Nightly or built from sources

    Installation type

    Portable zip

    Additional context?

    I used CBM Pro Mono font from: https://style64.org/c64-truetype

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
Dec 15, 2022
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
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

Aug 18, 2022
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协议,任何人均可下载进行修改使用,如使用过程中出现任何问

Dec 25, 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

Oct 22, 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

Sep 3, 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.

Jan 1, 2023
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.

Dec 6, 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.

Dec 6, 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

Jan 3, 2023
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
Threat Emulation and Red Teaming Framework, The Hacking Software for normal people.
Threat Emulation and Red Teaming Framework, The Hacking Software for normal people.

The Remote Hacker Probe is a Threat Emulation and Red Teaming Framework built to be easy to use. The Remote Hacker Probe is Feature Rich! Including, K

Jan 5, 2023
A simple wrapper for 'pacman' with a syntax similar to 'apt' to help people transitioning to Arch and Arch based distributions like Manjaro.

aptpac aptpac is a program which helps with the transition to Arch Linux and Arch based distros like Manjaro. It simplifies using pacman as it works l

Dec 4, 2022