• Stars
    star
    420
  • Rank 100,967 (Top 3 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 4 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Full-Featured HexEditor compatible with Linux/Windows/MacOS

Fhex - A Full-Featured HexEditor

This project is born with the aim to develop a lightweight, but useful tool. The reason is that the existing hex editors have some different limitations (e.g. too many dependencies, missing hex coloring features, etc.).

screenshot screenshot2 screenshot3

This project is based on qhexedit2, capstone and keystone engines. New features could be added in the future, PRs are welcomed.

Features

  • Chunks loader - Used to load only a portion of large files without exhaust the memory (use alt + left/right arrows to move among chunks). Please note that in chunk mode, all the operations (e.g. search) applies only to the current chunk except for file save (the entire file is saved). However, each time you edit a chunk, save it before to move to another chunk, otherwise you will lose your changes.
  • Search and replace (UTF-8, HEX, regex, reverse search supported) [CTRL + F]
  • Colored output (white spaces, ASCII characters, 0xFF, UTF-8 and NULL bytes have different colors)
  • Interpret selected bytes as integer, long, unsigned long [CTRL + B]
  • Copy & Paste [CTRL + C and CTRL + V]
  • Copy selected unicode characters [CTRL + Space]
  • Zeroing all the selected bytes [Delete or CTRL + D]
  • Undo & Redo [CTRL + Z and CTRL + Y]
  • Drag & Drop (Hint: Drag&Drop two files to diff them)
  • Overwrite the same file or create a new one [CTRL + S]
  • Goto offset [CTRL + G]
  • Insert mode supported in order to insert new bytes instead to overwrite the existing one [INS]
  • Create new instances [CTRL + N]
  • Basic text viewer for the selected text [CTRL + T]
  • Reload the current file [F5]
  • Compare two different files at byte level
  • Browsable Binary Chart (see later for details) [F1]
  • Hex - Dec number converter [F2]
  • Hex String escaper (e.g from 010203 to \x01\x02\x03) [F3]
  • Pattern Matching Engine (see later for details)
  • Disassebler based on Capstone Engine [F4]
  • Assembler based on Keystone Engine [F4]
  • Zoom-Out/Zoom-In bytes view (CTRL + Up/Down or CTRL + -/+)
  • Shortcuts for all these features

Pattern Matching Engine

Fhex can load at startup a configuration file (from ~/fhex/config.json) in JSON format with a list of strings or bytes to highlight and a comment/label to add close to the matches.

Examples:

{
    "PatternMatching":
    [
        {
            "string" : "://www.",
            "color" : "rgba(250,200,200,50)",
            "message" : "Found url"
        },
        {
            "bytes" : "414243",
            "color" : "rgba(250,200,200,50)",
            "message" : "Found ABC"
        }
    ]
}

To activate pattern matching press CTRL + P At the end, Fhex will show also an offset list with all the result references. Note: Labels with comments are added only if the window is maximized, if labels are not displayed correctly please try to run pattern matching again.

Binary Chart

Fhex has the feature to chart the loaded binary file (Note: In order to compile the project, now you need also qt5-charts installed on the system). The y-axis range is between 0 and 255 (in hex 0x0 and 0xff, i.e. the byte values). The x-axis range is between 0 and the filesize.

The chart plots the byte values of the binary file and let you focus only on the relevant sections. For example, if in a binary file there is an area full of null bytes, you can easily detect it from the chart.

Compilation

The project has the following dependences: qt5-charts (package: libqt5charts5-dev in debian/ubuntu), capstone (optional) and keystone (optional). On linux you can check if you have the mandatory library with ldconfig -p | grep -i qt5charts

Fhex by default is compiled with the MINIMAL profile, this means it doesn't include capstone and keystone. You can change this option removing the related line from fhex.pro.

In order to build Fhex on linux execute these commands:

mkdir build
cd build
qmake ..
make -j$(nproc)

License

GPL-3

More Repositories

1

kalendar

A calendar Qt application to manage your time in an efficient way
C++
59
star
2

purify

Android ads remover without root
Java
54
star
3

xbackdoor

A tool for the persistent XSS exploitation with a focus for mobile web browsers
PHP
53
star
4

litewaf

Lightweight In-App Web Application Firewall for PHP
PHP
39
star
5

NoCrypt

AntiRansomware Linux Kernel Module
C
37
star
6

huextract

A fast, simple, efficient Huawei UPDATE.APP extractor written in Rust.
Rust
26
star
7

slingswarm

GTK3 application launcher similar to Mac OS launchpad and Wayland compatible.
Vala
19
star
8

inou

Tool useful to discover services behind unknown ports
Python
13
star
9

pyjacktrick

Python module hijacking POC
Python
9
star
10

nautilusaccelsmanager

GUI to manage the Nautilus shortcuts to launch its scripts
C
7
star
11

RapidLauncher

Rapid Launcher is a simple and lightweight application launcher for linux (OSX/Android style)
C
7
star
12

memeditor

Small Windows C Debugger to patch processes' executable code
C
5
star
13

pdfcmapeditor

PDF Cmap Editor
Python
4
star
14

simba

SMB lightweight client for Linux based on libdsm
Shell
4
star
15

hwnffclient

Huawei HWNFF client implementation
C
2
star
16

BugzillaDataMining

This repository contains some datasets extracted from bugzilla, software to analyze them and some results.
Java
2
star
17

raison

Raison enables the 'raise to wake up' feature on your Android phone.
Java
1
star
18

exploit_linux_kernel4.13

LPE on linux kernel based on CVE-2017-14954, CVE-2017-18344, CVE-2017-5123
C
1
star
19

appmigrator

A gui tool to migrate applications from a distro to another
Shell
1
star
20

strings16

Print all the strings of a binary even those UTF-16 encoded
C++
1
star
21

webcrawler

Cross-Platform commandline WebCrawler
C
1
star
22

rammo

Rammo is a RAM Monitor for Linux to kill those processes that are using too much memory.
C++
1
star
23

pagemonitor

Java Swing Desktop application to monitor the changes of the webpages you're interested in
Java
1
star
24

cuberoyale

Experimental battle royale game inspired by Fortnite based on the cube 2 engine
C
1
star
25

fudel

Schedule the deletion of your files and directories for the next days
C++
1
star
26

pyalarmguard

Python project for home security
Python
1
star
27

echo-devim.github.io

My personal blog with tips and tricks
HTML
1
star