Skip to content

Reverse Engineering

Why calling a function pointer should not look like this

In a previous post I explained how Nue evolved from an overambitious programming language experiment into a niche language designed specifically for reverse engineering and runtime manipulation. That post focused mostly on the story behind the project and how its purpose eventually became clear after two years of an absolute mess.

In this article I would like to focus on something more practical: the actual motivation behind the language itself.

Anyone who has spent a significant amount of time working with reverse engineering, runtime hooks, or injected libraries will inevitably encounter large amounts of C or C++. These languages are extraordinarily powerful and remain the foundation of most low-level software today. It would be impossible to seriously discuss systems programming without acknowledging how important they are.

At the same time, however, it is difficult to ignore the fact that much of their syntax feels like an artefact from another era of computing.

Nue: How an overambitious idea found its purpose after 2 years

Back in late 2024 I decided that building a programming language sounded like a perfectly reasonable project. (yikes!)

At the time I had spent several years primarily writing software in Lua. Lua is genuinely one of the most pleasant programming languages I have ever worked with: simple, elegant, extremely readable - and, without going into the beautiful rabbit hole of Luvit and LuaJIT - surprisingly capable despite its size. However, after a while, I began to feel that I was approaching the architectural limits of what I could comfortably build with it. I wanted stronger structure, a more expressive type system, and access to lower-level capabilities such as systems interaction and proper threading instead of silly co-operative coroutines. In fact, I was literally dying for proper OS threads since some of my important production code was written on single-threaded Lua, but I still wanted something that retained the readability and approachability that made Lua enjoyable in the first place.

Naturally, the completely rational conclusion to me at the time was that I should simply design my own language, and so Nue was born...

An introduction to code de-obfuscation with Roblox Lua

Recently, I engaged in a discussion within my community about de-obfuscating Lua code. This blog post was requested after many were puzzled about how supposedly "random-looking" characters and invalid-looking syntax could possibly result in non-fault code being executed.

In this blog post, we will therefore examine a short code sample which will make the code in your brain start working, in order to potentially think about de-obfuscating larger scripts.