Being a Dick with Pointers in C

I like to argue that C can be a boring language. Boring here is a good thing. This is boring code: void some_function(int param1, void *param2) { if( param1 == 0 || param2 == NULL ) { return; } char *casted_value = (char*)param2; if( casted_value[param1] == 'A' ) { //do something } } It's boring because it's obvious what each piece does, even with nonsensical variable names. »


Clunk is a terminal-based note-taking program that focuses on taking notes and getting out of the way. About Notes are stored locally in ~/.clunk/ All prompts will be in the lower left Notes are NOT automatically saved Lines beginning with ^ are highlighted Works on any system with ncurses installed Installation The only dependency to build is ncurses. To install, simply »

OSX Cracking (Dash)

This is intended to be an educational exploration of some cracking concepts. If you enjoy the software target, please support the original authors by purchasing it. Dash is an offline documentation browser. It has no copy protection which makes it an ideal target for learning cracking. It has an offline license authentication scheme that uses a license file. You can »

C fgetln and strcpy

This is a continuation of the exploring C articles I started here. This will focus on a quirk that caused me some debugging pain. In fairness, this is documented on the man-page of fgetln: This line is not a C string as it does not end with a terminating NULL character. A simple implementation of fgetln to iterate through every »

Debugging Running Processes with GDB

This is a continuation of the exploring C articles I started here. This one will focus less on C and more on some obscure commands in GDB. When compiling a program with gcc or clang, you can pass the -g switch to produce a dsym file along with a debugging version of your program. This allows you to see the »