About Hexane
Hexane is an attempt to create an open source hex editor. The project is based around a new data structure, which was developed solely for this project (See the Engine Documentation for details, if you're interested). The project has the following goals in mind:
-
Be fast and make efficient use of memory
-
Provide support for large file editing, with limited RAM
-
Allow the user to insert and remove bytes from the file
-
Provide a scripting interface, preferably also an interactive one
-
Provide a facility for various types of algorithms and operations on data
-
Provide fast and efficient searching and a file comparison mechanism
-
Provide a mechanism for examining and editing the memory spaces of running processes.
-
Provide a facility for defining and editing file structures
So why another hex editor? Well. Thats a difficult question. First, and foremost, creating a project of this scale is a challenge - but also an insanely interesting one. I wanted to figure out how to solve a number of the problems plaguing other editors, like the byte insertion problem in a confined memory situation. Scriptability is another big issue, as is a file structure mechanism. So its not so much that I aim to create a competitor to the other editors, as much as create an environment in which to solve these problems.
However, Hexane needs your help. This is a large project. If you are interested in helping, consider checking out the How To Help page.
History
The idea to write a hex editor came around in early 2003 when I somehow became fascinated with binary data. I did a little planning, and even a little coding - but I didn't know enough about what I wanted to do, to be able to do it well. So I called it off, and said to myself, "If this project is still interesting in two years time, I will write it then".
So in October of 2005, I decided that it was finally time to start thinking about this project again - but whats more amazing (to me anyway) was that it was still just as interesting as it was in 2003. So I talked it over with my friend, who is an insanely smart guy by the way, and he said it sounded like a cool project. So I started doing research on how to implement this thing. I read many scholarly papers from ACM's Digital Library, and re-read the algorithms books on my bookshelf. But nothing quite cut it. There was no single, all-powerful data structure that I thought would make it easy to solve all of the problems I wanted to solve. So I kept an eye out for what I considered to be a good solution to the problem, and started designing other aspects of the editor in the mean time.
I eventually devised a data structure I thought would solve all the problems I needed it to solve. I let myself think about it for a while, to make sure that was really the best way to solve the problem. So in July of 2006 I decided to attempt the implementation of the data structure. By this time, I had made a few modifications, done some more research, and got the thing working in about four days time. Since I now had the key to the puzzle, I decided it was time to open source this thing, and get this show on the road.