My Projects

Dextrose
A reverse engineering platform for very cursed Android Apps
RustAndroid
Ghidra Architecture Plugins
I've written quite a few Architecture plugins for Ghidra
Ghidra
Zuneslayer
The first Microsoft Zune HD full chain exploit

Combines a Microsoft IE 6 Use-After-Free and a Windows CE 6.0 kernel exploit to achieve the first non-XNA, intact keyslot, homebrew entrypoint. As well as enabling future custom firmware.
RustExploit
iPod sun
The first ever unsigned code execution on the iPod Nano 6 and iPod Nano 7

Using a combination of BootROM logic bugs and a sprinkle of CVE-2010-1797, achieved full persistent unsigned code execution on the final two iPod Nano generations. Unlocking BootROM extraction, firmware decryption and custom firmware.
RustExploit
Vindolanda
An AMD SVM powered Type 1 hypervisor for fuzzing

This one's private :3
RustFuzzing
Hadrian
A RiscV RV64IMAC emulator and JIT, specially designed for coverage-guided snapshot fuzzing
Capable of over 150,000 fuzz cases / second / core

This one's private :3
RustFuzzing
flash-lso
A safe and fast serialization and de-serialization library for the flash Local Shared Object file format, as well as a collection of tools to help work with it.
Part of the ruffle project
Rust
SMOL
Card image cap
A simple link shortener, written in Rust with actix_web
HTML5CSS3JavaScriptRustSQLDieselActixDocker
Notes App
A clean and fast note-taking app for Android with support for image notes and checklists
AndroidKotlinAndroid JetpackDagger2
CBNS
A rapid pub/sub based messaging system for device to device messaging
RustActix

Security Reports

Stack overflow / Heap corruption while parsing PVR files | IrfanView
11/01/2023, Both fixed in FORMATS plugin version 4.62.3
Unspecified out-of-bounds access reading PVR files | IrfanView
04/01/2023, fixed in FORMATS plugin version 4.62.2
Integer overflow leading to controlled heap corruption | mupdf
11/11/2022, Link to bug report (private)

I've found what I belive to be a security vulnerability in the fitz TIFF parser.

By providing a specially modified TIFF file (such as the one attached), such that tiff->bitspersample == 16 && tiff->order == TII but where tiff->imagelength * tiff->stride < tiff->imagewidth * tiff->imagelength * tiff->samplesperpixel, an attacker can overwrite an arbitary amount of data off the end of a heap allocated buffer.

In source/fitz/load-tiff.c, tiff_decode_samples, line 1322, a buffer is allocated with size (tiff->imagelength * tiff->stride)
On line 1377, this buffer is passed to tiff_swap_byte_order, with parameter n = tiff->imagewidth * tiff->imagelength * tiff->samplesperpixel
Because these two values can differ, tiff_swap_byte_order will both read uninitialised heap memory and write out of bounds into this buffer by an arbitary amount

Additionally, I belive a similar bug is present on line 1385, when calling tiff_scale_lab_samples.

I believe the fix would be to use the existing allocation size as the parameter to tiff_swap_byte_order rather than recomputing it.
Stack buffer overflow in RTSP packet parsing | gpac/gpac
01/05/2022, CVSS: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H (9.1)
Controlled heap buffer overflow in SDP packet parsing | gpac/gpac
30/03/2022, CVSS: AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H (9.1)
Stack buffer overflow in XML entity parsing | gpac/gpac
27/03/2022, CVSS: AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H (7.1)

Experience

Rent-A-Writer | Software Development Intern
November 2021 - April 2022
PHPHetznerFrontend
Landmark Information | Software Development Intern
June 2020 - September 2021
c#Azure CloudPostman
MyStyleQuest | Freelance Software Engineer
August 2019 - February 2020
PHP7HTML5CSS3JavaScriptSQLGoogle CloudMachine Learning
The Reinventory Company | Software Engineering Internship
July 2019 - February 2020
HTML5CSS3JavaScriptReact NativeIconicSQLJavaKotlinSpringBootRustGoogle CloudFirebase
Prospect Path | Software Developer Intern
February 2019 - June 2019
HTML5CSS3JavaScriptSQLPHP7LaravelReact

Open Source

Ruffle
An Adobe Flash Player emulator in rust
PostmarketOS
A project to revive old android phones with mainline Linux

Education

BSc Computer Science with Industrial Placement - Newcastle University
2018 - 2022