Dark Age of Camelot - daochook + craft_extract

2 minute read

Last month, a friend of mine approached me for help with some reverse engineering related to the MMO Dark Age of Camelot. I’ve never played this game before, but offered to help a bit with their questions and offer some suggestions on how to approach some things.

While helping with some stuff, I landed up installing the game to have easier access to files and information to help. Seeing how the game was designed and what all could be done for third party tooling, I decided to start a few personal projects.

The two main projects I’ve released so far are daochook and craft_extract.

daochook

https://atom0s.com/assets/img/daochook.png

daochook is a free feature-rich third-party enhancement/modification for the MMORPG, Dark Age of Camelot.

daochook is an injected hook that is directly injected into the DAoC game client (game.dll) while launching the game.

Because of how daochook functions, it works entirely separate from the games files and DOES NOT require any additional client modifications! You do not need to modify any of your existing client files in order to use daochook making setup and usage a breeze.

Once injected into the game client, daochook then hooks itself onto several game functions allowing it to both take control of said functions, but also allow Lua addons to inject various things into the client as if it was done normally by the player.

For example, daochook hooks onto the games chat input where you would normally enter a command such as /wave to wave at someone. daochook intercepts all commands that run through the games command interpreter/handler and forwards them to its custom Lua addon engine. Addons can then decide if the command should be blocked from executing, allowing an addon to react to it first. This setup allows addons to implement and react to custom commands that are otherwise not built into the game client.

Along with this, by hooking the command handler function, Lua addons can also inject commands as if the player typed them, used a macro, or any other means of input the client would normally recognize.

This approach is applied for several major game functions allowing daochook to greatly enhance the features of the client.

You can find a full list of features here: https://daochook.github.io/features/

craft_extract

Dark Age of Camelot stores all crafting information on the client side in a binary file. This file is used to store all the crafts for each realm and each profession per-realm. The file is serialized into a custom binary format that has changed a few times over client versions. There are some older tools for much older client versions, however, there hasn’t been any public tools for working with the newest client versions.

craft_extract is a simple command line tool that can extract this files information into multiple formats. (csv, json, sqlite, plain-text)

At this time, my tool supports two main versions of the file:

  • v66 - Used in most older client versions.
  • v67 - Used in latest client version.

craft_extract is free and open source. You can find it here: https://github.com/atom0s/craft_extract

Comments