• Spoonalysis: Mapping UK Chain Pub Prices

    Wherein I take advantage of the location and menu data used by mobile ordering apps to determine precisely where in the UK you can get the cheapest microwaved lasagne accompanied by a Jagerbomb... sorry, I mean Strikabomb. Not very useful, but fun!

  • Mouse Adventures #8: Dissecting the USB Code and Unbricking the Mouse

    Wherein I disassemble my mouse's USB command processing code in order to figure out why it's semi-bricked and how to get it into a usable state again. Long read, but hopefully worth it :p

  • Mouse Adventures #7: Writing an IDA Processor Module

    Wherein I use IDAPython to put together a processor module for the Holtek HT68FB560 MCU, so I can properly disassemble my mouse's firmware.

  • Mouse Adventures #6: Enabling the Bootloader

    Wherein I explore various different methods to try and get my mouse into bootloader mode so I can flash it. It didn't get me anywhere, but it's all about the journey, right?

  • Mouse Adventures #5: Dumping and Parsing the USB Descriptors

    Wherein I learn more than I ever wanted to learn about USB descriptors and start using pyusb to send raw USB commands to my mouse, to try and learn even more about the inner workings of it. Partly so I can make sense of the firmware disassembly, and partly so I can maybe have a hope of unbricking it!

  • Mouse Adventures #4: Writing a custom tool

    Wherein I figure out more of the mouse's protocol by delving deep into the guts of the configuration tool, and use hidapi to write a tool that lets me poke at it. Complete with a surprising plot twist...

  • Mouse Adventures #3: Writing a Disassembler

    Wherein I rip apart the firmware file and write a disassembler for Holtek's weird RISC-ish microcontroller architecture, in a quest to learn some secrets from the mouse's source code.

  • Mouse Adventures #2: Extracting the Firmware

    Wherein I investigate the origins of the TeckNet mouse, find multiple OEMs selling variants of it, rip apart the configuration tool further, try to read too much meaning into PDB file paths, figure out part of the mouse's protocol and rip apart the firmware updater. The saga continues, for now!

  • Mouse Adventures #1: Introduction

    Wherein I delve into the internals of my no-name brand "Tecknet Hypertrak Gaming Mouse" in an attempt to write a cross-platform tool that can manipulate its configuration without having to use the awful Windows-only tool it's shipped with. In this first part we tear apart said tool to figure out how it communicates with the mouse.

  • Relaying OpenVPN through a Remote Server

    Wherein I set up OpenVPN on my VPS so that I can access my home network (which is behind forced NAT and can't accept inbound connections of any kind) while I'm away from home.

  • An Unholy Combination: Closure Compiler, Preact and JSX

    Wherein I try to figure out how to make the Google Closure Compiler play nicely with a bunch of other stuff like Gulp and Preact from the scary outside-of-Google world. I think I mostly succeeded. Hopefully.

  • A Rant About Proxying API Requests on iOS (and others)

    Wherein I try to find a way to redirect API requests from Twitter clients through an external proxy, for request modification shenanigans. It's easy everywhere... except for non-jailbroken iOS. Because Apple.

  • How I Began Modding NSMBWii

    I'm planning to write a series of posts about low-level modifications to New Super Mario Bros. Wii, the 2009 Nintendo game. This is a sort of 'prequel' to that series, where I write some fluff about how I got to this point and the history/background of NSMBW mods.

    Later posts will be more technical, with more of a focus on low-level reverse-engineering stuff and on how I achieved the things I did in Newer SMBW.

  • Introduction

    This post marks my second attempt to start a blog! The last one barely got off the ground, but I feel like I've got more to write about now, so perhaps I'll actually keep it going?

Subscribe to my feed: RSS, Atom