xresolver is a project that aims at finding short messages, important messages and long messages in a game’s input data.
xresolver uses a few software packages: hexlify to index the game data, fabfun to analyze it, fuzzgrep and scapy to search it, and dump1obj to play with the output data and look for interesting things.
The general algorithm is that the first step of the search is to read a sequence of input strings (say 1, 2, 3, 6, 7) and identify the tags of the given sequences, in such a way that the tag of one sequence is a bitmap to which you can directly compare the input and output samples.
Based on the most similar of these tags, the program takes a sequence of characters as an input sample and produces a short message using the parser.
The approach of xresolver is quite different from existing approaches that try to “flatten” the input data into smaller chunks, say, binary trees. Instead, xresolver recursively reads each token in an input sequence, finds the most similar tag in its history and uses that to produce a short message.
One other method to identify the tag of one sequence is to look for the longest, longest subsequence of tags in the input sequence, which can be converted into a sorted list of tag pairs. Then to identify the longest tag, the program looks through this list.
The results of the main algorithm are actually quite interesting, at least for games that have a long text parser and thus a long history. As the example from the README below demonstrates, xresolver can generate several dozen short messages in a very short amount of time (we are talking seconds for a fairly large number of chars).
xresolver is free software released under the terms of the GNU General Public License. If you would like to support the development of xresolver, please consider making a donation.
If you are interested in creating a graphical interface to xresolver, there is a public repository with some interesting experimental tools, such as a “quick jit” based on Latticegraph (it uses deque elements to facilitate searching).
Those interested in using xresolver to automate game text analysis, you may also be interested in a previous post of mine that explains how to do this using Cython.
Some interesting games where you may want to try xresolver
The source code for xresolver is available on GitHub, under a BSD license. The program has been tested with World of Warcraft, Star Wars: Knights of the Old Republic II, Diablo II. Tom Clancy’s Splinter Cell, The Elder Scrolls III: Morrowind and F.E.A.R.
So You may wish to experiment with other games and create a little benchmark using some variation of this.
The README file has some other ideas for using xresolver:
Buy a ransom note in World of Warcraft and see what happens to it!
Play D&D and see what kind of messages you can generate.
Now Write some software to run it against large archives of text.
Or create an interesting binary search challenge. For an engineer or similar hobbyist to use the open source program for a bit of fun. There is a public repository with some interesting experimental tools. Such as a “quick jit” based on Latticegraph (it uses deque elements to facilitate searching).
Anthony Garera Anthony is usually tinkering with everything. And anything because there’s always one more thing to do, reviewing games and apps. And complaining about things normal people don’t think about. More Posts – Website Follow Me:
Xbox xResolver features
COMPATIBLE: xresolver is based on the xorg-xserver library, which is part of the xorg kernel module. So you can use xresolver for any xorg-based application. As long as you have access to a capable graphics card and an X server.
REQUIREMENTS: xresolver is portable and works on most operating systems that support gcc. The installer was tested to work on 32- and 64-bit versions of Ubuntu.
SUBSCRIPTION-FREE: xresolver can run in a non-persistent mode. So you can run xresolver on your local system without installing it and without signing in or allowing. It to have access to your personal data. It also works without plugins or other add-ons.