New, improved Hexxed

I have not had much luck in hunting down what is wrong with my code or the Xerces-c SAX2 parser – but I do think I have successfully updated by hex editor, Hexxed, to handle 64 bit (ie >4GB) files.

Indeed it performs rather better than vi for some editing tasks (Hexxed has a vi like interface).

So, if a hex editor, capable of handling little and big endian code and able to display output in Unicode is what you are after, and if you are vi-conditioned, then maybe Hexxed is your thing.

Groovy code can be found at:

While a runnable jar for those of you who have Java but are not yet Groovy can be downloaded at:

And there is more about it here:

Just remember it is code for playing with – don’t bet the farm on it. But, that said, I have no reason to think it does not work.

Free software hex editor

I have noticed that my free software hex editor (hexxed) – which is licensed under the GNU GPL – does not really come up in any searches, so here’s another entry to boost it.

It’s a bit crude, but it does some things well (e.g., display unicode and switch endianness) and it will run anywhere you can get Java to work. And as it is free software anyone is free to make it better.

This page tells you all about how to get it and use it.

Dear MI5, why don’t you use my hex editor?

MI5 text fragmentThis is a semi-serious point!

Well, British security service MI5 helped to successfully convict three would-be terrorists Richard Dart (30) of Ealing, Imran Mahmood (22) of Northolt and Jahangir Alom (26) of Stratford by what looks like scanning through temporarily (?) cached fragments of Word documents. This is a good thing.

But they have been using an 8-bit orientated hex editor – as the picture shows. If they had used my Unicode supporting  editor, Hexxed, they could have got rid of those annoying spaces between the letters.

Missing coding

English: Programmer
English: Programmer (Photo credit: Wikipedia)

Ever been engaged in an intellectual activity where the hours whizz by much faster than you think, as you puzzle over and round the issues while feeling an intense pleasure that makes the rest of the world seem less important?  This what is called “flow” and, generally, it is what I feel when I am coding.

I am not the world’s greatest coder, to be honest I am little better than average (though doing the MSc at Birkbeck made me so much better than I used to be). The pleasure doesn’t come from having a natural skill that means I can write hundreds of lines at a single sitting: like a typical programmer, if I got 20 fully debugged lines out a day, every day, I would count that as decent performance.

But lately I haven’t done any coding at all (apart from a few lines of scripting in the office to ensure SMB mounts are automatic and such like). Instead I have read a lot of computer science papers and spent a lot of time working on a presentation I need to make and a literature review that will come after.

But I miss the coding, and I am missing it more every day.

Now, coding is also very more-ish. If you code to scratch an itch then chances are you make yourself itchy by coding. So earlier this year I wrote a Groovy/Java hex editor – Hexxed – after I wrote a Linux filesystem where I could not find a hex editor that did what I wanted to do, and so on.

So, even as I puzzle about whether I should write some code just for the sake of a mental stretch, I also wonder what I would write.

Hexxed usage options

So, you want a hex editor for your latest project and (naturally) you decide to have a look at Hexxed, the free, GPL licensed, hex editor you can download here: So what happens next?

bash-3.2$ java -jar hexxed.jar -u

usage: hexxed [options]
-b,–block use block:offset address output – default is
linear address
-be,–bigendian interpret data as big endian – default is cpu
-f,–file <arg> file to edit
-le,–littleendian interpret data as little endian – default is cpu
-o,–offset <arg> offset in file – default 0
-s,–blocksize <arg> size of block if block:offset addressing used –
default is 0x200
-u,–usage show this information
-w,–width <arg> width (in bits, 8 – 64 bits) of output data –
default is 8 bits
-x,–x <arg> width of window (default 640 pixels)
-y,–y <arg> height of window (default 480 pixels)

Subtext is, please do have a look at Hexxed. I know it’s not as fully featured as commercial or even other free hex editors, but this is just the first iteration and if you tell me it is useful and add what feature you’d like to see in it, it is quite likely that I will get on with adding it.

Update: I have now run Hexxed on Ubuntu and Debian Linux, Mac OSX and Windows XP, so it should work on anything with Java installed.

Software testers wanted

Big-little endian
Big-little endian (Photo credit: Wikipedia)

I have now reached the point with my hex editor – Hexxed – that I can aggressively look for software testers with confidence, as I feel I have a piece of software that does all the key things I want:

  • insert (as zeros) and delete multiples of 8, 16, 32 or 64 bits at a time
  • load and save arbitrary files
  • do and undo edits

For those looking for hex editors (as opposed to just another binary editor) it will handle 8, 16, 32 and 64 bit hex representations in both little endian and big endian format (and you can switch between them), as well as display addresses in a block:offset format (block size may be set arbitrarily). While for those looking for a binary editor it has a Vi-like interface and displays charcters in both UTF8 and 16 bit unicode.

It doesn’t do everything, though, and it may still have bugs so testers are needed to identify what features it needs but has not got and what might go wrong with it.

I am hopeful that I may have a chance that could turn out to be reasonably widely used in future.

To test: you don’t need my permission, it’s free software, freely available – covered by the GNU general public licence (version 3). Though of course that means that no warranties, to the maximum level allowable in law, are offered either.

You can pull it from git here:

Or ask me for a jar file.Get the jar file – executable via standard Java setup – via here.

Please help and test if you can

How should I handle the :q command?

If you are a Vi user then you will know that :q closes the editor (assuming there is no unsaved edit).

hex (Photo credit: elmer.o)

Should my hex editor, Hexxed, which I am aim to give a Vi-like interface to, do the same? Currently it does not – :q instead unloads the current file from the editor but does not close the editor itself. This feels like a more natural way of doing things with a GUI application than simply closing everything but, on the other hand, it is not what Vi users would expect either.

Who needs a free hex editor then?

OK, Hexxed, the hex editor I have been working on, is nowhere near being finished but it does seem to be in a good enough state to find testers.

It’s very rough round the edges but it will allow you to open, edit and save files. I have given it a Vi-like interface and I would be most interested in knowing what people feel about it – if you are a Vi user does the interface feel natural enough to you?

I guess, at this point, any testers will have to be familiar with running a Groovy project – and you can pull the sources from GitHub.

But if someone just wants a .jar file to run, then let me know and I will package it up.

A pleasingly retro look and feel

I have done almost all my development of Hexxed on a Macbook, but have now updated the git repo on my Linux laptop and run it Hexxed on Linuxthere – some interesting differences:

  • the Linux app has a pleasingly retro look and feel to it – no anti-aliased fonts here
  • on Linux key reptitition works as expected – ie if one holds down a key the application is sent multiple key events, which is what one expects and which works well with the vi-like interface I am building
  • On Linux the first file open dialog is a really crude/retro looking box (think Windows 3.0), while subsequent file open dialogs reflect the system windows toolkit.

The screenshot is of a VMUFAT volume, it was my experience of writing that driver that gave me the itch that Hexxed is meant to scrtach – in particular I wanted a hex editor that would allow me to display 16 bit numbers in a given endian form and partition the memory space by arbitary block size (VMUs use a lot of 16 bit little endian numbers and a 512 byte block size). Hexxed does both of these things now, though it still has no editing facilities – just viewing.

As for VMUFAT itself: Sadly no one on LKML seems much interested in that – the first posting got some helpful comments, but since I posted the corrected code six or so weeks ago, nothing. Suppose I will have to start poking people with an electronic stick.