Group: Super Administrators
Joined: Oct. 2003
Member Rating: 4
||Posted on: Feb. 16 2008,18:48
We are pleased to announce the release of HexEdit 3.2. You can download the new version here.
We hope you will be as excited about the new features as we are. Many of the new facilities are extremely useful for certain situations, such as the new ZLIB compression, and there are many other examples such as several new properties. Many additions are the direct or indirect result of feedback from users like the new search alignment options.
Perhaps the most generally useful addition is Info Tips. Also templates in HexEdit 3.0 and 3.1 have created far more interest than any other feature in HexEdit, and, although there has been little change to the actual templates themselves in 3.2 (as I consider the template specification to be complete now), they have been made much easier to apply and use.
The installation of HexEdit 3.2 has been improved, especially to handle problems installing under Vista.
You can also now have side by side installations of HexEdit 3.2 and earlier versions. HexEdit 3.2 can now be installed into the same folder in dual boot systems.
Many programs support "tips" where you hold the mouse pointer over some item of interest and a little yellow window pops up providing salient details on the item. We thought it would be cool to let the user see any information they wanted when they hold the mouse over any byte of a file. You can create any number of tips for display, and even turn them on and off individually.
Each tip has a name, an expression and a format string. When the tip window appears the tips are displayed in 2 neat columns with the names on the left and the formatted result on the right.
The expressions used to generate tips are basically the same as expressions as used in templates and the jump tool. These are similar to expressions from the C language. However, they support more types than in C - in addition to integer and floating point (real) values, you can have strings, dates and booleans.
What makes expressions useful for tips is that they can use many predefined "identifiers". For example, the identifier "byte" is the value of the byte under the mouse cursor, "word" the value of the 16-bit integer in the byte and the following byte. A commonly used identifier is "address" which is the address in the file of the byte under the cursor, which allows calculations like the distance to the end of file: "address - eof".
Valid format strings depend on the type of the expression. Integer expressions can be displayed nicely formatted using "hex", "dec", "oct" or "bin", or you can use a C printf format such as "%d", "%04.4X" etc. Similarly floating point expressions can use any C floating point format (default is "%g") and strings can use any valid string format like "%-30s". Date expression can use any C strftime format. Boolean expression just use the false value as an example: eg "n", "no", "N", "FALSE", "f", "off", "OFF", "0" etc
If you don't give a format string for an address expression then it defaults to the way that addresses are currently displayed in the hex view (ie, decimal or hex). Further addresses are displayed in either the hex or decimal address color in the tip window when shown as hex or decimal.
Comments, Categories, Keywords
One of the philosophies of HexEdit is to provide capabilities similar to other commonly used software such as MS Word etc when it is useful and makes sense. This hopefully makes the software easier to learn and use. One thing that MS Word provides is the ability to store information with a document that is not part of the actual displayed/printed document. We thought it would be useful to do the same for binary files which is why we added the "Summary" page to the Properties dialog, with fields for Category, Keywords and Comments.
You can enter information in those fields that is associated with the currently active file. Obviously this information cannot be stored in the binary file itself, so HexEdit stores this (like a lot of other things) in the file called "RecentFileList".
You can use Categories to group like files together. For example, in the Recent File List dialog you can display and sort by the Category column. Next to the Category field is a drop-list which shows all the categories currently in use - selecting from this list avoids typos and accidentally creating categories with similar names.
The Keywords field allows you to store one or more keywords which you can later search for. The Comments field lets you add any other text as a reminder about what the file is for or what needs to be done to it etc.
Next to these fields are 2 more fields inspired by MS Word. These display the total time that you have had the file open for viewing (RO mode) or editing (RW mode).
HexEdit 3.1 rounded out the template language with bit-fields, the SWITCH/CASE element and some new functions. In 3.2 we could see very little to improve there (except that a SWITCH expression may now be a string). However, it was very tedious to do certain things with templates. For example, in 3.1 if you just wanted to view a template for a file you currently had open, you had to close the file, fiddle with settings in the Options dialog then reopen the file.
In 3.2 you can now instantly open a template using the sub-menu of the Template menu, And you can quickly switch between viewing the template in a splitter window, in a separate tab or just hiding it altogether. Further, when you reopen a file the template is reopened in exactly the same way including the widths of columns in the template view.
Editing Template Fields
Another problem in 3.1 was that when you edit a template field (ie chnage the value in the data column of the template) how the field is displayed and edited can be different. For example, a field displayed as hex is edited as decimal, but after changing the field it is still displayed as decimal so that the value can be edited (at least until the template "refresh" button is hit). For an integer field displayed as hex it might be unclear after editing whether the displayed field value is in hex or decimal.
In 3.2 after you change a field it is validated as normal but the exact text entered is left in the field but with a red background until the template is refreshed. That way you can see which fields have been changed and which are formated for the template. Further if you make a typo (eg a non-numeric character in a number field) you can easily go back and fix it without having to type the whole thing in again.
HexEdit has always been renowned for its large file support. It was the first hex editor to allow editing of files greater than 4 GBytes. However, in HexEdit 3.1 there were still some operations that could not be performed on large selections.
HexEdit 3.2 has had extensive work in this area so that almost all operations that work on the selection will work with a selection of length greater than 4 GBytes. This includes all operations and conversions, compression, encryption (except internal algorithm), export (within address range constraints), insert block etc
If there is not enough virtual memory then HexEdit will now transparently create temporary files. Of course, when working with very large files you must have enough memory or disk space to store the results of large operations.
Any operation that takes more than a few seconds will now display its progress in the status bar. Moreover, like macros, long operations can now be aborted by pressing the Escape key or the space bar.
If ever you need to add compression to a file format, communication protocol etc then the obvious choice is ZLIB. There is a free library (with no patents pending) provided for many operating systems with source code (in C). This is why it is used in many common file formats such as PNG, PDF, gzip etc and communication protocols such as HTTP (the protocol used to display web pages).
Now, instead of writing code to test ZLIB you can test all its options from within HexEdit. For example, if you want to see the effect of different strategies on the compression of your specific type of data you can set the relevant option in the ZLIB Settings dialog before compressing.
Apart from compression the Operations menu also includes new case conversion commands - which work according to the current character mode (ASCII, EBCDIC etc).
You can now also generate the MD5 hash value. (Actually this snuck into 3.1 but was not documented.) MD5 values are often published on the Internet for downloadable files so you can be sure that they have not been tampered with (as long as you obtained the MD5 value from a reliable source).
Apart from the Summary page mentioned above (Categories etc) there have been several other additions to the Property pages. First the Summary page now allows you to see the size of a file on disk as opposed to in memory, although these are usually the same unless you have inserted or deleted bytes.
The Byte page now has the ability to show the current byte (or bytes) according to any of the Code Pages supported by the installed operating system. This includes code pages for character sets used in many international languages, EBCDIC code pages, OEM code pages etc. Some code pages use double byte characters sets (DBCS) and multi-byte character sets (MBCS) which may use "lead-in" bytes - if the current byte is a lead-in byte HexEdit will use following bytes as appropriate to display the character.
The IEEE and IBM floating point pages have been merged into the single Real page, which was a pretty obvious thing to do. Also this page now supports the C# Decimal type which is more of a fixed point integer but fits better in this page.
The Date page now includes the relatively new time64_t, which is now common on many compilers including Microsoft C/C++.
About a year ago somebody had this problem. They wanted to be able to search a database (fixed length records) for fields with certain values. It was possibe to do this in HexEdit but not easily (using keystroke macros), but it got me thinking that you can almost do it with the 3.1 search alignment options.
To this end I relaxed the search alignment restriction so that you can align with any value (not just 1, 2, 4 or 8) and added an offset option. The alignment options can also now be applied relative to the mark.
Now the above problem becomes easy:
- Set the mark to the address of the start of the first database record (ie skip after the database header)
- Start a search and turn on the "relative to mark" option
- Set the alignment to be the length of the database record
- Set the offset to be the position of the field within the record
- Just search for the value of interest
Another request some time ago was the ability to read non-adjacent (previously called discontiguous) records when importing Motorola-S files. This was implemented in 3.0 and in 3.1 enhanced so that all read records can be highlighted (ie using the highlighter facility). For symmetry in HexEdit 3.2 we have an option to allow non-adjacent records to be exported. So you can now import a file with non-adjacent records and export it again to get the same file as long as you have not changed the highlighting.
You may also notice other new minor improvements in 3.2, like the Save All and Close All commands.
Edited by andrew on Feb. 23 2008,05:05
Moderator of Forums and creator of Hex Edit