Rom hacking hex editors - mid 2012 discussion.

Discussion in 'NDS - ROM Hacking and Translations' started by FAST6191, May 13, 2012.

  1. FAST6191

    FAST6191 Techromancer

    pip Reporter
    Nov 21, 2005
    United Kingdom
    Short summary
    The GBA and DS ROM hacking docs were being rewritten and some discussion on hex editors wanted to happen which would be what happened here.

    Final list of good editors
    Paid options but nice
    010 Editor
    Hex Workshop
    Get one and learn it well.
    Free editors
    Seldom quite as nice as the paid ones but between the selections you should be able to get most of it done.

    (ICY) Hexplorer
    Get both of those. Hexplorer will need the GUI tweaked quite a bit as it is very scaled back by default.

    XVI32 by virtue of the scripting
    Tiny Hexer
    If you have space also get both of those. Neither are even close to 100 megs so assuming you are not running on a SSD or USB drive that should not be a problem.

    Rom hacking side of things
    Crystaltile2 and another of the table supporting editors. The other three mentioned were fairly evenly featured although they did not play well with one of my Crystaltile2 tables.
    Also there is a table standard having been proposed with some extra features table standard. Should something appear that supports that I would definitely get it.

    [h2]Original start of thread[/h2]
    I am presently rewriting the rom hacking docs and I kind of want a nice hex editor to suggest. Alas having used Hex Workshop for the longest time I have been spoiled by it and the features it has and as it is paid software it is not ideal to keep suggesting to people. I keep an eye on freeware tools but by and large they lack the flexibility of Hex Workshop. However the world of software is vast (with several surprises making this basic list) and others have interesting things to share so I am making this thread. Everything should be linked and pictures should be but an image search away.
    By and large anyone can get a hex editor to do hex editing (it is a fairly basic task/program after all) but it is the little extras that make it all happen. On the flip side right now I am not so concerned with filesystem support, raw disk reads, memory viewers and executable/disassembler/debugger functionality and I figure most of us have say 200 megs spare in case one of the editors still loads to ram and on the other extreme we do not need to open files in the petabyte or even greater than 2 gigs range most of the time (many are limited to 4 gigs by virtue or libraries). "DOS" based stuff like Hexecute and Thingy32 is out as is anything that wants to be Vim (I love my keyboard shortcuts but hex editors are mouse country as far as most of modern rom hacking is concerned).

    Also most hackers I ever speak to have several hex editors available for different things so do not be too worried about finding just the one.

    The big three ones I judge all others by. These could possibly stand to have a slightly nicer find and replace/paste functionality (paste fills and selection limits similar to how you might work with selections and layers in a proper graphics editor) but that would make things more complex and I should stop being lazy.

    Hex workshop
    If you have seen a screen grab or hex dump from me over the years it has probably come from this. Features include custom window size (nice when you have a fixed width header/entries and want it all on one line), nice ability to have two windows on the same file (not that I use it that often), full boolean operations support plus the usual shifts and such, custom file formats (which have got better in the latest version) and a reasonably nice custom CRC ability (granted not that hard to do otherwise but able to get the BIOS CRC16 as mentioned in http://nocash.emubas...osmiscfunctions up and running).

    010 Editor
    Were it not for hex workshop being the GUI I learned (it being the one of the few occasions that I have become attached to a GUI) it would punch right up there with it and maybe even beat it (1024 bytes max per line- yes please although unlike hex workshop I can not see a way to drag it to what it needs to be and quite often I drag things to line up pointers, has a few more character sets as well) and roughly the same price. The only thing I really miss is the "find strings" option although I can abuse wildcard search for that and thinking about it there are more useful things.

    xways winhex (not to be confused with the rom hacking hex editor WindHex32 )
    Very nice and if you are doing computer forensics it would be awesome but it not quite as nice for some aspects of console style file reverse engineering as others owing to a lack of some of the features in the two above. Can edit the amount of columns/width by one byte at a time with a button or via an option.

    Other stuff - Rom hacking origins.
    Not necessarily up there with Hex workshop but worth having around and usually have table support and some implementation of relative search (although monkey moore is better than most) unlike most other commercial and free editors. Will tend to lack boolean and bitwise operations as well as other functionality.

    Crystaltile2 which I imagine most of us have anyway has a hex editor which is pretty nice and along with 010 editor above supports many character sets although more importantly supports table files (although DS games use the likes of ASCII, shiftJIS, u16 unicode and eucJP often enough tables are a not a historical quirk yet not to mention games do not tend to have standards compliant methods of rendering text).
    Lacks boolean manipulations along with the standard hex operations and I can not find a way to move it from 16 bytes per line but has a very good relative search (not as pretty and nice to use as the likes of monkey moore but it does the job and has some insane options like 4 byte/32 bit search), compression search (mainly type 10 LZ and lesser support for type 11 LZ and huffman). CRC 16 and 32 are available and can be focused on a selection unlike some of the others.
    This of course is on top of the DS filesystem support and header viewing, top flight tile editor/viewer, full ARM9 and ARM7 as seen on the DS diassembler, support for a fair few SDK and common formats (NARC, SDAT, NFTR, DS 2d formats, some general archive formats), general compression support, rom hacking level text/script editor (although it is quite quirky) and all the other stuff

    Windhex32 http://www.romhackin.../utilities/291/ - was already mentioned. Great table and text support (including selectable multitable support), some SNES specific memory mappings and SNES/NES tile editor. Mainly just a very nice text capable hex editor with table support and some tools to complement that.

    Goldfinger http://www.romhackin.../utilities/204/ - not to be confused with the common translation of the Chinese word for cheats or cart pins or the GBA assembler Goldroad. Gave it a spin and it said 9 tables at once, some table editing abilities and a slightly more custom text display than most are probably used to (unlike the alignment between hex rows and decoded rows pretty much every other hex editor does you can tell it not to for this) and more make it worth a look. Might have to fiddle with table files though.

    Translhextion -http://www.romhackin.../utilities/219/ . Other than crystaltile2 or something entirely custom this would be the de facto rom hacking hex editor since whenever it was first built. Adjustment of hex window size possible via editor but not grouping. Jump including relative jump support available. Can manipulate bits and can search using tables and relative search support is available. No undo support but a nice read only option by pressing tab.
    New fork/version

    Other stuff - standard hex editors
    Bless - could not get it working on Windows (probably as I have not got it set up for this sort of thing) but basic and quite functional otherwise. Lacks the necessary features to do much damage.

    Zynamics Hexer - promising but Java based and I try not to have Java on any of my systems unless I really really need it so I have not tested it yet.

    HxD - my standard go to freeware hex editor if I need to get one to get something done on any old system or need to point someone at one for them to do it. In some ways a bit basic but small and efficient means it is here alongside the others. Portable options available. Up to 512 bytes hex window set in the main GUI (no options but no drag either) including arbitrary and if you want it to the option to match window size. Stats option and fully custom CRC able to be applied to selection up there with hex workshop. Basic compare and byte grouping of the 1,2,4,8 and 16 persuasion. Nice export options up to and including Tex but no operations of any form. Windows mode available for compare and disc, ram and disc image (CD/DVD and hard/floppy disc available) available. Find and replace works well enough (hex, ascii, float and signed, basic inset and fill section (pattern or random, no file or clipboard beyond the pattern thing) and basic character decodings (nothing custom and nothing fancy unless you count EBCDIC).

    Cygnus http://www.softcircu...s/features.aspx Freeware tested here - Utterly basic, no window size options, a nice find and replace option but little else, dual windows for a single file if you wanted it although actual window support seems to be saved for the commercial version. Have it if you want but not a patch on most of the others here.

    XVI32 http://www.chmaas.ha...xvi32/xvi32.htm - the other go to ultra basic editor if you just need one to get something done but with serious power in reserve (covered in a moment) should it be necessary. Can do custom window sizes (it is tied to the window size unfortunately). Supports custom encodings although only using the rather limited XCT format (plain text still but hex, colon, ASCII map or some other encoding seems to be the format) as opposed to the standard tbl one which is hex of any length, = and uTF8 encoded next thing for the most part). Some nice movement options and ability to set bits. Operations are controlled by a scripting language of sorts which is potentially quite powerful (if you have a bunch of similar replacements it could be kicked to a script rather than manually) but also potentially quite tricky to get going for a basic operation.
    Example script from the help file. 0A replacement with 0D0A aka the Unix to windows new line replacement which is quite common on DS roms, it is easily done with a basic find and replace but if you are say also replacing 0000 (sometimes used for end of section) that could be done too at the same time saving a bit of effort

    REM goto begin of file (always zero-based)
    ADR 0
    REM replace all $0A by $0D 0A
    REM (c) 2011 Christian Maas
    Okteta - KDE editor but available as part of the KDE windows package. Gave it a go and pending results of later test but earlier version from KDE 4.2.3 for windows was just a basic hex editor.

    wxHexEditor - tried for the first time today. Mainly notable for the in place XOR viewer (although others can XOR and recreate such functionality) and extensive collection of hashes even if they can only be done on files (MD, SHA, ripeMD, Haval, tiger, adler, whirlpool, gost, snefru and the usual CRC32) as well as some disassembly and reasonable search ability.

    Frhed - has a nice manipulate bits mode. Quite useful when things decide to merge different concepts into one (NARC subdirectory indication or register/IO views from the GBA/DS). Supports ROT13 and XOR viewers out of the gate although not as nicely as
    Also has some DLL export options. More interestingly has some nice fill section options unlike most of the others here. No undo options that I can see which is not ideal (revert to saved is there I guess) and it has some reasonable export as text options.

    Heraia and with windows download - a bit basic but a port of ghex/khex and for a basic editor you could do worse. tiny hexer http://www.softpedia...iny-hexer.shtml and filetrip download (original site has since gone) - Once ranked alongside HxD and XVI32 in the free editor stakes it stopped being developed and knowledge of it tailed off. It does however have scripts, some support of a sort for custom encodings (I did not get the change to test it), a strings finder (seriously customisable no less), a nice little search option with abilities to export results, the option to drag a window to a new size (it uses tabs and subwindows and you will have to fiddle a bit to get that option sorted). Compare, macros and selection specific fills (it says file but selections work too). Only XOR that I can see but well worth a look.

    Hex edit http://www.catch22.n...oftware/hexedit - very basic but nice export and ability to drag for width (kind of based on the window size), find is not bad.

    i.Hex - basic again, formats support, bits editor in the main GUI. No undo, basic search and replace. Can't really suggest it over others here.

    (ICY) Hexplorer http://sourceforge.n...ects/hexplorer/ . Returned to it after several years since last go today and surprisingly it features most of the "necessary" functions (boolean although missing NAND, NOR and XNOR but if you have the others just think about it), hex operations and flips) able to be applied to selections, some basic checksums (not custom but able to be applied to selection), some export options, some ability to create custom formats , some encryption support although not as transparent, macro support although I did not test it out much (certainly did not make my own) and most surprising of all a Fourier transform (useful for reverse engineering video and some audio formats). Stock GUI reminds me a bit of "hacker programs" you might see on a film (it being called Matrix probably should have given it away) and the lack of an address by default was odd but easily solved (view -> options). Colums custom or set to window size and able to group by customs bytes as well including nonstandard things like 3 bytes and 28. I think we may have found a winner in the suggest a free editor to people contest but I await other suggestions none the less.

    End of list comments
    So to that end your hex editors of choice? Even better if you have a linux version that goes toe to toe with them or works just as well in WINE please mention it (with the Avisynth port AVXsynth I am now pretty much down a hex editor that stops me from going linux/BSD and windows VM plus dual boot when it really matters as opposed to the other way around).
  2. SifJar

    SifJar Not a pirate

    Apr 4, 2009
    Very detailed list, have tried a few, currently have HxD and XVI on my system. Don't use hex editors enough to pay for one, but this post is very informative, and if I need to find an other hex editor at any point I'll be sure to come back here. Didn't know about XVI's scripting language, that could come in handy sometime.
  3. Rydian

    Rydian Resident Furvert™

    Feb 4, 2010
    United States
    Cave Entrance, Watching Cyan Write Letters
    Yeah my hex-editing needs are small (either transplanting raw hex, finding ASCII info, or replacing a few bytes here and there) so like you I just grab HxD for the edits I need.

    Mind if I link people to this thread? It's a nice comparison.
  4. FAST6191

    FAST6191 Techromancer

    pip Reporter
    Nov 21, 2005
    United Kingdom
    Do people really make posts on public forums and desire people not to link to them?

    On XVI32 yeah I did not know about the scripting language either until I had clicked on it as one of the last things before I called simple hex editor.

    I also want to state again how impressed I was with ICY hexplorer after this last go around, HxD will probably just about remain my I am sitting at a client machine and I need a hex editor choice but Hexplorer would do just as well and is definitely my "if a new ROM hacker needs a proper hex editor" choice (although I would still say pick a bunch). Indeed I can almost see someone moving from Hexplorer after a long spell with it to Hex Workshop or 010 Editor and wondering quite what all the fuss is about.