Improved User Interface 0.3.0!
posted June 13, 2018
The Improved User Interface crate has had its 0.3.0 release, adding new input fields (Checkbox and Combobox), new layout options (LayoutGrid), as well as finally working 100% on Windows, and with many bug fixes. This comes with the 0.1.3 release of the underlying ui-sys crate to support these features.
It’s been a big undertaking to get to this point, and I’m excited to grow from here, now that libui itself is moving forward again as well.
Additional Exercises in Reverse Engineering
posted February 03, 2018
This is a sequel to my (rather long) introduction to reverse engineering. It is something of a “whirlwind tour” of some useful methods that weren’t shown in that tutorial, and provides a number of exercises to hone your skills.
The CrackMe Programs You can find the CrackMes discussed here on GitHub. Clone that repository and, without looking at the source code, build each CrackMe with make crackme01, make crackme02, etc.
An Intro to x86_64 Reverse Engineering
posted November 16, 2017
This document presents an introduction to x86_64 binary reverse engineering, the process of determining the operation of a compiled computer program without access to its source code, through a series of CrackMe programs.
There are a lot of excellent tutorials out there, but they mostly focus on the 32-bit x86 platform. Modern computers are, almost without exception, 64-bit capable, so this tutorial introduces 64-bit concepts immediately.
A CrackMe is an executable file which takes (typically) a single argument, does some check on it, and returns a message informing the user if it’s correct or not.
A Gentle Introduction to Practical Types
posted September 29, 2017
Types Programmers talk a lot about types, but what is a “type”, anyway? It is, in essence, the set of all possible values for some variable. Defining such a set gives us some information about what we can do with the value of that variable, in general.
For example, when speaking about numbers, we might say, “let x be any integer” or “let y be any real number not equal to zero”.
SBrain, an extension of BrainF*ck
posted May 02, 2017
SBrain, or Semantic Brain, is a language based on Urban Müller’s famous language Brainf*ck with only 8 symbols (3 bit instructions). SBrain’s additions increase the number of symbols to 32 (6 bit instructions), including bit-shifting and arithmetic, and add a stack and a register.
Having these additional facilities allows SBrain to be far more expressive while retaining its attractiveness as a genetic medium for evolutionary algorithms. I’ve been interested in genetic programming for a long time.