Skip to content

Hexer 1.4.0

Here's version 1.4.0 of my hex editor Hexer. I fixed all reported bugs and added most of the feature requests I've received so far. The following stuff changed:

New features

  • Core: Added the option to reload plugins
  • Core: Improved color maps
  • Core: Added the option to change the font size in hex windows
  • Core: Added the option to move the hex window tabs to the right side
  • Core: Added a menu option to insert an array of bytes
  • Core: Hex windows now have context menus when the user right-clicks on the window
  • Core: Added the export options (like Export as C++ Array) to the hex window context menu
  • Core: Added support for file address bookmarks
  • Plugins: Added a new JRuby example plugin (BitmapStructure.rb)

Bugfixes

  • Core: Fixed a bug that caused nullpointer exceptions when inserting bytes into new/empty files
  • Core: Fixed a bug that caused structure highlighting to disappear when the structure was partially scrolled off the screen

Changes to the Plugin API

  • Added the option to remove menus from the Tools and Edit menu (IMainWindow)
  • All plugins must implement the unload method from now on (IPlugin)
  • Added the pluginInitialized method to IPluginListener
  • Added the IColormap interface for improved colormap support
  • Changed the IColormapPlugin to make color maps easier to use and more powerful
  • Added the option to change the position of the tabs in hex windows (IHexWindow)
  • Added the setFontSize method to IHexWindow
  • Added the IHexPopupPlugin interface which can be used to extend the context menus of hex windows
  • Added the option to change the size of a hex window (IHexWindow)
  • Added the option to change the relative sizes of the hex view and the tabs in IHexWindow

The coolest new feature is probably the option to reload all loaded plugins. This is very useful when developing scripts or plugins. Just hit ALT-SHIFT-R and all plugins in the plugins and scripts directories are reloaded. That means you do not have to restart Hexer anymore while testing new plugins.

The option to move the tabs in hex windows (like structure viewer, bookmarks, file stats, ...) to the right side of the hex window turned out pretty cool too. Saves lots of space on the screen.

Anyway, you can download Hexer 1.4.0 here. I'm happy to hear of any bug reports or feature suggestions.

Extending the Hexer Structure Viewer using a plugin written in JRuby

In Hexer the Structure Viewer is the part of the hex windows where data from loaded files is read into pre-defined structures and displayed in trees that represent the structure. This is pretty useful because you can use it to quickly navigate through complexely structured binary data.

Like basically all parts of Hexer you can extend the Structure Viewer tree with plugins that can be implemented in Java, Groovy, ECMAScript, Python, and Ruby. I have prepared an example plugin (download here) which demonstrates how to extend the Structure Viewer tree using a plugin written in Ruby. This plugin adds support for Windows Bitmap file (BMP) headers. The result can be seen in the screenshot below.

Note that this plugin only works if you have Ruby scripting support installed in Hexer.

Hexer 1.3.0

Here's my hex editor Hexer 1.3.0 which brings the following new features:

  • Core: Added support for different languages (English and German are available so far)
  • Core: Tools and components that are closely tied to individual files (file statistics, structure viewer, ...) are now part of the hex windows of those files.
  • Core: A few commandline options were added.
  • Core: Console mode was added to the scripting dialog.
  • Core: Added scripting support for JRuby

The new console mode for scripting is actually pretty cool. It is very helpful when you're developing scripts or just toying around with the scripting API for a while (enter as many lines in the console as you want and then hit CTRL-ENTER to execute them). Thanks to a recently fixed bug in the JRuby scripting engine Hexer can now finally support Ruby scripting too for those who prefer Ruby over Python.

Some bugs were fixed too:

  • Core: Added missing tooltips to several menus.
  • Core: The Java-Array exporter now creates a byte[] array instead of a char[] array
  • Core: Fixed a bug which broke shell integration when Hexer was placed in a directory that contains whitespaces.

I've also made some changes to the Plugin API

  • Added the option to display simple progress dialogs.
  • For performance reasons, the method IHexFile::getData does not return a copy of the file data anymore but the actual file data itself.
  • Several interfaces that deal with the structure viewer were added or modified.
  • The IStatsPlugin was replaced by the IFileSpecificPlugin

You can download Hexer 1.3.0 here. Any kind of feedback is appreciated. Thank you.

Release of Hexer 1.2.0

The 1.2.0 release of Hexer improves the usability of Hexer. On Windows, Hexer can now be integrated into the context menu that appears when you right-click on files in the Windows Explorer (and elsewhere). Furthermore the main window of Hexer is now scrollable. This gives the users extra space and allows him to open more windows. Another nifty thing is that the scripting dialog now supports syntax highlighting and other small features that make it easier to write scripts.

You can download Hexer 1.2.0 here.

Complete list of changes:

New Features

  • Core: The main window now contains scrollbars. This gives the user more space for open MDI windows.
  • Core: A tool bar that shows buttons for all open windows was added to the main window. This makes it easier to quickly switch to another window.
  • Core: Progress bars are shown during long operation like plugin loading, file loading, or script execution.
  • Core: The Windows menu shows a list of open windows for the user to switch to.
  • Core: Added Cascade/Tile Windows feature in the main window
  • Core: User is asked whether he wants to make a backup of a file before saving it.
  • Core: It is now possible to stop running scripts that are stuck in infinite loops or simply take too long to execute.
  • Core: Added optional Windows Explorer integration. Hexer can now be started by right-clicking on files.
  • Core: Improved the scripting dialog (added syntax highlighting, tab handling, undo and redo, cut/copy/paste, icons, and other things)

Bugfixes

  • Core: Problems with the split windows in the settings and plugin dialog were fixed.
  • Core: Improved the layout of the hex window status bar.
  • Core: Fixed a few problems during plugin initialization and loading.

Changes to the Plugin API

  • All MDI windows added to the MainWindow must now extend the class HexerWindow
  • Added the class HexerWindow which is the base class of all MDI windows of the main window
  • Added the methods tileWindows and cascadeWindows to the IMainWindow interface
  • Added the method removeChildWindow to the IMainWindow interface

Screenshots of the new scripting window and a new screenshot of the main window:

Hexer 1.1.0

Hexer 1.1.0 (click here to download) is primarily a bugfixing release. The following things changed since Hexer 1.0.0:

New Features

  • Core: Added a status bar that displays the current offset in hex windows
  • Core: Support for the ENTER key to execute a dialog's default action was added to all dialogs
  • Core: When selection a result of a file comparison, the corresponding area is highlighted in the hex window
  • Core: Added options for configuring the appearance of the hex windows
  • Core: Structure Viewer was sped by only calculating the values of visible structure elements
  • Plugins: Added hotkey management to avoid duplicate hotkeys
  • Plugins: Added a sample plugin that shows how to write plugins in Java
  • Plugins: Plugin CLASS and JAR files can now be placed in subdirectories of the plugins directory

Bugfixes

  • Core: Improved Linux support
  • Core: Fixed a problem with copy/pasting
  • Core: Fixed a problem with incorrect highlighting in dialogs like Compare Files
  • Core: Structure highlighted is removed when the Structure Viewer dialog is closed
  • Core: Fixed some problems when searching beyond the end of files
  • Core: Existing dialogs are brought to front when their menu hotkey is pressed again
  • Plugins: Fixed a problem that prevented plugin JAR files from being loaded

Changes to the Plugin API

  • Added the option to insert bytes into IHexFile objects
  • Added the registerAccelerator method to IHexWindow which helps to make menu accelerators unique
  • Added finer-grained methods for watching hex windows to IMainWindowListener
  • Added several methods for configuring the appearance of hex windows to IHexWindow
  • Added a clear method to IStructureHighlighter which clears previous data highlighting
  • Added the IStructureViewerHelper which can be used by data viewer plugins to figure out whether they are visible in the Data Viewer dialog
  • Moved the method addChildWindow from IPluginInterface to IMainWindow

I hope Hexer works on Linux now. At least it does work on my Ubuntu.

Please report bugs and request features by replying to this blog entry or by sending me an email (see the Contact information in the docs directory of the RAR file).

Sample Hexer Plugin: Calculating the entropy of a file

I finally got around to write an example plugin for my hex editor Hexer to show how simple it is to extend Hexer according to your own needs. The Java plugin I am going to present calculates the entropy of files according to the method presented on Ero Carrera's blog. The plugin adds a new tab containing a line chart and a button to the File Statistics dialog. When the user clicks the button, the entropy of the active file (that is the file in the last active hex window) is calculated and shown in the line chart. The screenshot below shows the entropy distribution of Notepad.exe.

You can download the source file of the plugin here. The archive contains the source file EntropyCalculator.java as well as two class files which were created by compiling the source file using Java 1.6. To install the plugin, simply copy the two class files to the plugins directory of your Hexer installation. Since the plugin uses the JFreeChart library to display the graph it is also necessary to get the files jcommon-1.0.12.jar and jfreechart-1.0.9.jar from the JFreeChart package. Copy those files into the jars directory of your Hexer installation.

Continue reading "Sample Hexer Plugin: Calculating the entropy of a file"

Release of Hexer 1.0.0

Just a few days later than originally announced, I managed to finish the first release of my hexeditor Hexer. It's available for download here. Please report any problems or suggestions by replying to this blog entry.

The coolest feature of Hexer is the scripting and plugin support. Note that Hexer only supports ECMAScript out of the box. If you want Python or Groovy scripting support, you need to install and download the necessary Jython/Groovy packages. Please read the manual in the docs folder to find out exactly what to download.

There are sections in the manual that describe how to write plugins and scripts. Example scripts are included in the RAR file. There are no example plugins yet but I'll write something about them on my website before next weekend.

Update:

Known issues:

  • Doesn't work on Linux

Hexer 1.0.0

Remember Hexer? It's back. In Java form. For those who don't remember, back in 2005 I posted the alpha version of Hexer, a hex editor written in C#. Like most of my projects, Hexer was abandoned for lack of time. However, the basic idea of an easily extensible hex editor still appeals to me and so I decided to bring it back.

The new version of Hexer is not written in C# anymore. I ditched C# for Java for practical reasons. The primary reason is that I'm using Java at work which means I'm doing nearly all of my development these days in Java. The second reason is that we've had lots of code that's necessary for Hexer in our company's internal Java library already and I only had to combine our Java library with some new code. That way I managed to implement the first Java version of Hexer in a very short amount of time.

Alright, if everything works out smoothly the first version of Hexer 1.0.0 will be released next week (depending on how fast I can write the remaining unit tests, the documentation, and how quickly I can get someone to update the company website where Hexer will be available as a free download). So let's have a sneak preview of Hexer 1.0.0.

Continue reading "Hexer 1.0.0"

New website for Hexer

I feel like talking about Hexer but I don't feel like cluttering up my website here with trivial Hexer-related stuff. The solution is simple: I've created a new website powered by the same blogging software I'm already using here. So if you ever feel like reading about my thoughts about the development of Hexer it's a good idea to visit the new website.

Hexer 0.1 alpha

Here's the first public version of Hexer, my open-source Windows hex editor (see my last update). It's main features are the complete lack of documentation and an abundance of buttons that don't do anything when you click them.

Screenshots can also be found in the last update.

Unfortunately (mainly for you) you need the .NET 2.0 framework to run Hexer.

And here are the files:
Hexer 0.1 alpha binaries
Hexer 0.1 alpha sourcecode
Two sample plugins (One for PE files; one for NES files)
Sourcecode of the two sample plugins

Preview of Hexer

Did you ever think there should be a hex editor for Windows that's both good and free? I certainly did and that's why I put my NetHex control to good use and spent the last three days power-coding.

Hexer is a GPLed open-source hex editor for Windows written in C# 2005. The one thing that makes it especially cool is the plugin and scripting support that allows users to extend Hexer in nearly any way they want to

Click here to see the first screenshot

You can already see several examples of plugin support in that screenshot. Take the Export Data dialog for example. The selected export mode is "C Array", that means the selected bytes in the last active hex window are exported to a C array. Now some people might think "Gee, those whippersnappers and their fancy new languages. I've been programming since the days of the Tsar and I never needed any of this C thing. Where is the option to export the data into a Simula 67 array?".

Continue reading "Preview of Hexer"