My capture-the-flag team played in the Insomni'hack teaser this year. During the
competition, I worked on a single challenge titled "sapeloshop." It was labeled
as "Medium-Hard," and it was in the binary exploitation category. The source
code for the server wasn't provided, so reverse engineering was necessary. I
don't think that having to reverse the binary was supposed to be the hard part,
as most of the behavior could have been inferred through some high-level
analysis, yet I spent nearly five hours fruitlessly trying to reverse it, and
the subsequent burnout was bad enough that I went home early. This wasn't the
first time a reversing task had gotten the best of me; there had been a few
competitions last year where I felt a similar loss in motivation. Noticing this
recurring pattern frustrated me, and that frustration drove me to think about
ways to improve myself as a reverse engineer.
read more →
At a first glance, it might seem that game cheats like AimTux are something that
could only be conjured by the most talented of reverse engineers. That was at
least my initial view on it, especially since I always saw these game hackers
using outlandish terms that I hadn't heard in over a year of playing in CTF's.
Don't be fooled; game hacking isn't nearly as complex as its community makes it
seem. In this post, I will explain the concepts in a way that is familiar to
people with experience in binary exploitation and reverse engineering, but it
shouldn't be too hard to understand if you lack that background.
read more →
To start off, I'd like to say that I know very little about audio programming
and digital audio in general. I've never formally studied signal processing,
and hell, I haven't even started high school physics yet. This post merely
documents what I've learned while trying to get sound working in my game,
because there aren't really any other learning resources about this out there.
read more →
Hey, this is a very brief tutorial on scanmem, a memory manipulation tool for
Linux that’s well suited to game hacking. I’ll be using GZDoom as an example,
but you should be able to follow along with any game you want.
read more →
SDL2 is my favorite graphics library right now. It might not be as powerful as
something like raw OpenGL, but it's simple. Simple enough that you can just
pick it up and start using it. There's a glaring issue with it, though. The
documentation is horrible. Absolutely horrible. A lot of it is unfinished, and
it doesn't look like it's getting attention any time soon. The SDL1.2
documentation wasn't as bad, but that version of the library is vastly outdated
by today's standards. So here's my take on a tutorial for SDL - part 0x00 of a
I-don't-know-how-long-I'm-going-to-drag-this-on series. My examples are going
to be written in C, because the constructs I show here can still be used
verbatim in C++ (and probably SDL's other language bindings as well). This
tutorial will be covering the little boilerplate that SDL requires, as well as
the basics of windowing and rendering. Let's get into it.
read more →