Personal projects

unity related

assetstools.net

I originally created AssetsTools.NET because I didn’t know enough C++ at the time to use AssetsTools. It’s essentially a library to read and write Unity game files in a way that’s similar to working with JSON. Although it’s not very unique now since the community’s tooling has been improved since, AssetsTools(.NET)’s major feature was being basically “automatically upgrading”. This meant that if a new engine version came out, all you had to do was run a script to upgrade it (usually). It runs the three tools below, and is used in many other projects like MelonLoader. Although the API design originates from the C++ AssetsTools, all of code is original for AssetsTools.NET. image-20230921212142777

uabea

The project I spend most of my time on right now. What started out as a simple remake of a UABE, a Unity modding tool, became a much larger project. It’s gained a lot of popularity since then and I’ve been actively working on updating it. Although many users use it for patch mods, I primarily use it for research purposes, so finding different game script parameters, looking at structure of scenes, debugging other tools (like the DirectX shader decompiler, mentioned below), and to help get exact values for game wikis. image-20230921212217035

hkfsmview

An FSM viewer for Hollow Knight. Allows you to look at the visual scripts they use and makes modding a little bit easier. image-20230921212247327

hkworldedit

A project to mod games by loading the compiled scenes directly into the Unity editor and loading the modified scenes back into the game by intercepting the load event and replacing it with a new scene generated on the fly. The intent with this new method is to make it quicker to build or edit a map and to make it easier to publish a map, without the need of scripting anything or needing to load external scenes to grab other assets. It’s currently in disrepair right now, but a new version, HKWorldEdit3 is in the works which would allow editing scenes from any game, given that its engine version is new enough. image-20230921212305866

subnautica nitrox

I worked on Nitrox when development first started, but haven’t worked on it in a long time. I started investing a bit of time into AssetsTools.NET for Nitrox and that has since spiraled into its own thing. image-20230921211147115


decompilers/deobfuscators

ultra shader converter

A DirectX DXBC shader decompiler for Unity games. It’s still a work in progress but with only a few tweaks, you can restore a shader back into the editor. This is so shaders can be viewed more accurately in an editor project or loaded on a different rendering APIs (i.e. Mac or Linux).

bone density (pyarmor)

A deobfuscator for pyarmor 7 that started because of a CTF challenge from flareon. See writeup here.

combustion reactor (v8 snapshots/bytecode)

A V8 bytecode decompiler, mainly for apps made with pkg. This is a big project with two steps: deserializing the V8 snapshots over multiple versions and decompiling the bytecode back into readable JavaScript. It’s based on the same design Ultra Shader Converter uses, but has been upgraded a lot to support features like inlining multiple instructions into one line. It sort of works right now, but it’s not in a state I would want to release it in, so it’s private right now.


silly game ports

touhou on wii

A very complex project I started back in 2019. It’s a port of the Touhou mainline game engines to the Wii, with the furthest along being Perfect Cherry Blossom. It’s technically playable on the Wii right now but the graphics are a bit broken. I work on this project when I have nothing else to do, but since UABEA started, I haven’t worked on this much. If this ever gets done, I plan to make a Youtube video explaining the tips I learned in debugging and reverse engineering. I didn’t use any outside resources and did most of this project without internet at all. image-20230921210030377


ctf

gzdb

A GDB GUI I originally wrote for the above project. gzdb can analyze code that executes frequently by scanning memory, parse those objects in memory, set breakpoints on and off automatically to log events, track how objects pass through different functions, and rerun the program multiple times quickly with different parameters. You can also draw to a canvas or create custom docks to display the data in an easier to understand way. Although it was made for the Touhou Wii project, I frequently use it in CTFs since I find IDA’s debugger hard to use for that purpose and found no other free debugger that made scripting easy. It also works on other platforms with a server/client interface, so I can host a gzdb server on qemu or an Android phone while still being able to use the GUI on a desktop. image-20230919210234635

tenrec

A hex editor for reverse engineering. A lot of the ideas I had for it ended up going into gzdb. I didn’t get very far with this because I had so many other projects to work on but it’s something I’d like to work on in the future. Nowadays I use imhex, but there are still things I don’t like about it. image-20230921212408605

writeups

I have a lot of CTF writeups which you can find on this site or on irissec.xyz (which I authored under not_really).

making ctf challenges

This isn’t really a project per se, but I’ve made/am making challenges for CTFs.


game dev

js13k games

See this post for more info. image-20230921210319089