- Easily edit and analyze binary files of any size. Pro is a simple to use Mac OS X app which will allow you to easily edit and analyze binary files of any size.
- Easily edit and analyze binary files of any size. Is a free and simple to use Mac OS X app which will allow you to easily edit and analyze binary files of any size.
- Hexinator and Synalyze It both create and use grammars which represent the internal structures found within various specific types of binary files. These grammars are themselves represented as a particular kind of XML files, used only by Hexinator and Synalyze It. (The XML schema for grammar files is included in the application package.).
For some time now, I’ve been using Synalyze It! Pro (http://www.synalysis.net) to do some hex editing and binary file hacking. (Save game hacking, emulator ROM hacking, and such) What became apparent to me was that I was largely uninterested in changing values and seeing the results of said work (ie. a cheated save file), but more in mapping out how things were laid out. Synalyze It! and its Pro version has a feature that differed it from other hex editors: the ability to keep track of the general layout of a binary file, termed a “grammar”.
For those unfamiliar, a Synalyze It! grammar is an XML file that documents data structures and such that may occur in a file of a certain file format. The base version allows for mapping integers, strings, binary data, structures, references to structures, and offsets to structures. The Pro version allows more advanced options, including the integration of Python and Lua code in various ways. Furthermore, the Pro version also allows for referencing grammars inside other grammars, which sometimes proves useful.
Is a groundbreaking app which lets you easily edit and analyze binary files of any size.Synalyze It! Features enhanced support for many character encodings and it will allow you to interactively define grammars for various file formats. Is a free and simple to use Mac OS X app which will allow you to easily edit and analyze binary files of any size. Features enhanced support for many character encodings.
So, this page is going to be the starting point of the Random Collection’s musings on this utility, for which I have contributed many things to enhance the usability therein.
- Little Endian Bitfields – Why parsing a bitfield encoded in a little-endian integer is extremely difficult.

Synalyze It! Grammar for Capitalism .SET files
Synalyze It Windows
Posted by kelvSYC on 12-2-2020
It’s been a long time since I have worked with Synalyze It! (and its non-macOS counterpart, Hexinator). In fact, it’s been six years since I last posted on this matter, and back then, the app tended to crash a lot, and my scripting skills were not up to snuff as it relates to some of the more complicated structures that I have been finding, and the feature set for the app was a bit lacking. Six years later, a lot of it has changed, but my scripting skills and the scripting API is still hit-or-miss.
That said, let’s talk about the business simulation game, Capitalism. (Steam, GOG), and its sequels, Capitalism II(Steam, GOG) and Capitalism Lab. It’s addictive, but difficult to play with the full set of rules. These rules are largely put into .SET files that are moddable to a very limited extent.
Essentially, a .SET file is a container format, with each “file” in the format containing tabular data. (Capitalism also has files elsewhere that are single “files” in the same format).
Mac Hex Reader
Full credit goes out to this blog post that reverse engineered the Capitalism II game file formats (most of which also applies to the original Capitalism as well).
Based on that data, I’ve been able to make a first draft of a .SET grammar for Capitalism. However, it does have a few drawbacks in that while it can map out a row of data, the rows themselves are not mapped out, since reading already parsed data (the column header data) is very painful and likely require a different approach.
Synalysis
This first draft is now available here. It might be a while before I can make it publicly available from the app itself, since I probably want to work on parsing the row data first.
