#import "layout.typ": cv, event, article, divider #show: doc => cv( name: "Charlotte Som", tagline: [Systems programmer, videogame cheat developer, #linebreak() reverse engineer, multispecialist.], links: ( (icon: "email", link: "mailto:charlotte@som.codes", text: "charlotte@som.codes"), (icon: "github", link: "https://github.com/char", text: "@char"), (icon: "link", link: "https://char.lt", text: "char.lt"), (icon: "link", link: "https://hackery.site", text: "hackery.site"), ), doc, ) #grid(columns: (1fr, 2fr), column-gutter: 1cm, [ == Writing #article(title: "Circumventing the JVM Classfile Verifier", date: 2019, url: "som.codes/jvm-force-no-verify") #divider() #article(title: "Game Science: GTA V's Stunt Jumps", date: 2021, url: "som.codes/gta-v-stunt-jumps") #divider() #article(title: "Circumventing Cisco Duo's Authenticator App", date: 2021, url: "som.codes/cisco-duo-bypass") #divider() #article(title: "Extracting API Keys from a Minecraft Launcher", date: 2022, url: "som.codes/mmc-msaclientid") == Competitions #event[Google Hash Code 2020][Google][February 2020][] Worldwide intractable problem optimization competition. Competed as part of a globally-distributed team of three. - *UK*: 6#super[th] place out of 406 teams. - *USA*: 13#super[th] place out of 619 teams. - *Canada*: 3#super[rd] place out of 135 teams. - *Worldwide*: 252#super[nd] place out of 10724 teams. #divider() #event[Deloitte UK CTF][Deloitte][December 2020][London] UK-wide infosec competition, organised by Deloitte. Participated as a university team of six. - *Qualifiers*: 10#super[th] place. - *London finals*: 7#super[th] place. #divider() #event[BLĂ…HAJ CTF Team][][2021 -- 2022][] - *Hack-A-Sat 2 CTF*: Organised by the _US Air Force & US Space Force_. Placed 15#super[th] out of 697 teams. - *corCTF 2021*: Placed 11#super[th] out of 904 teams. == Languages - *English* (native, primary) - *French* (maternal) - *Spanish* (since 2013) - *Korean* (since 2016) ], [ == Experience #event[Multiplayer game technology][WorldQL Corporation][April 2022 -- Present][] I currently work at WorldQL, where the mission is to reduce the barrier between singleplayer and multiplayer game development. Here, I've worked on EVM-based transaction processing / smart contracts (writing a hot wallet transaction scheduler in Rust), written a multiplayer web game engine in TypeScript (with several interesting netcode paradigms) & backend web services in Rust (at one point embedding `deno_core` in a Rust application for sandboxed multitenant user code exec on the server-side) as well as a (Git-based) beginner-oriented version control system. To facilitate prototype art we also experimented with Blender automation and machine learning in production, writing & deploying Python + CUDA / ONNX services. #divider() #event[Game modding / game-hacking][Self-employed][2016 -- 2025][] Game development & game modding is a very effective entrypoint into programming at large. I started in 2007(!!) developing ROBLOX games. - _GTA Online_: C++ (primarily), Rust - _Minecraft_: Java, Kotlin (primarily), Scala, JVM Bytecode - _Counter-Strike: Global Offensive_: C++ (primarily), Rust - Unity3D (various): C\# (primarily), .NET MSIL, and C++ (for `il2cpp` games) In my teens, I used to sell a custom client for Minecraft (5-figure USD revenue from 2016 -- 2019), and a subscription trainer menu for GTA Online. I find the resulting end-to-end product experience & reverse engineering skills valuable to this day. #divider() #event(company_newline: true)[Commercial obfuscator for JVM programs][paramorphism.dev (Self-employed)][2017 -- 2022][] This solo project involved writing the product itself, internal tooling around JVM bytecode to aid debugging, and the sales site in SvelteKit (then-_Sapper_, actually). - _Paramorphism_: Bytecode obfuscator for JVM programs written in Kotlin. - _libparamorphism_: Optional native runtime opaque library for programs obfuscated by Paramorphism written in Rust first and then Zig later. - _Koffee_: Domain-specific language for Kotlin for Java classfile generation. - _Aksara_ (internal): Bytecode assembly language and assembly/disassembly toolchain written in Kotlin. - _Katon_ (internal): Bytecode viewer and editor with a GUI written in Rust and interfacing via Java Native Interface to Kotlin (_Aksara_) and Java (_Fernflower_). - _Citadel_: An experimental custom-instruction-set VM with a _libparamorphism_-backed native executor (+ some compilers), focusing on self-modifying code. #divider() #event["Splashforce"][Force Software LLC][November 2020 -- October 2021][] The flagship "Splashforce" product was an end-user e-commerce automation suite for various sneaker sites. My duties included: - `cronet`: Custom patches for & isolation of Chromium's HTTP stack. (for use as a library to evade TLS fingerprinting in the application.) - Pairing an Electron (node.js / web JavaScript) frontend to a Go backend. - Anti-piracy, reverse-engineer-deterrent releases for the Go backend. (Code virtualization, `cgo` FFI bindings, etc.). - Reverse engineering JS & WASM bot protection measures on websites. - Reverse engineering & circumventing bot prevention measures on Android apps. (Java, Smali, etc). ]) /* #pagebreak() TODO: PAGE 2 */