Webassembly

BGGP3 Research Notes

Jul 5, 2022 · 12 mins read

The 3rd Annual Binary Golf Grand Prix (BGGP3) is to find the smallest file which will crash a specific program. https://tmpout.sh/bggp/3/ This blog is stream of consciousness for finding tooling and crashes. A formal writeup for the crash I want to submit will come at a later date.

Anti-Debug JS/WASM by Hand

Aug 22, 2021 · 11 mins read

Last week a friend of mine asked me to debug/RE some phishing emails that had been sent to them. These phishing emails were visually very clever and looked identical to the real site! But as I looked at the javascript I frankly became embarassed for the developer. Sure, they’d run the code through an obfuscation engine and added some basic anti-debug tricks, but that’s nothing you can’t defeat with AST and proxying function calls.

Bingolfing - WASM/GBA/7Zip in 584 Bytes.

Jun 23, 2021 · 10 mins read

Let’s build the smallest WASM / GBA ROM / 7Zip polyglot in 584 bytes for the Binary Golf Grand Prix 2021. Rules: The host file must be a binary executable. This is any binary executable that stores either machine code (such as ELF, PE etc.) or bytecode (wasm, pyc, etc.) Overlap with at least one additional file of any type to create a polyglot. The host binary must return or print the number 2 when executed. Entry: Valid WebAssembly binary that calls host.print(2) Gameboy Advance ROM that fills the screen with Green 7Zip Archive containing a single empty file named “a” Download: bggp.wasm (584 Bytes)