diff --git a/README.md b/README.md index 49a3aea..213bb15 100644 --- a/README.md +++ b/README.md @@ -2,17 +2,31 @@ An online assembly editor and debugger for the x86-64 architecture, powered by a Wasm port of the Blink x86-64-linux emulator.
Online at https://x64.halb.it -The quickest way to run, debug, and share assembly snippets for a wide range of popular assemblers, including GNU binutils, Fasm, and Nasm. - -# Screenshots +The quickest way to run, debug, and share assembly snippets for a wide range of popular assemblers, like GNU binutils, Fasm, and Nasm. -The project is composed of two elements: -- `emscripten_blink` a fork of the [blink](https://github.com/jart/blink/) x86-64 emulator, compiled to WebAssembly and modified to expose a typescript API -- `svelte_blinkenweb` a svelte web app implementing a mobile-friendly frontend for the blink Wasm emulator. +## features + +- Support for most assemblers: GNU Binutils, Fasm, and Nasm. These programs are real x86-64 ELFs, emulated client-side. You are free + to configure their command-line arguments and file input. +- Editor with syntax-highlighting and error diagnostics +- Simple, distraction-free interface implementing a reduced set of the gdb commands and behaviour. + every button in the debugger is labelled with the name of the corresponding gdb command. +- Debugger focused on data visualizations typical of the binary exploitation ctf world: + Registers and stack hexdump are displayed in the same way as gdb with the gef or pwngdb plugin enabled. +- Mobile friendly, accessible interface running entirely client-side. Easily loads with slow internet connections thanks to its lightweight bundle size. + +## Project overview + +This project is divided in two areas of development: +- the typescript svelte webapp +- the c x86-64-Linux [blink](https://github.com/jart/blink/) emulator, modified to be used as a webassembly library. + +Using Emscripten, the modified blink emulator is compiled into a wasm file and and a companion javascript module. +The typescrpt webapp then implements an API interface around these two artifacts. A bird-eye overview of the whole architecture is described in the diagram below: -The assemblers provided by the app are traditional x86-64 ELFs, emulated client-side in the blink runtime. + diff --git a/docs/architecture.png b/docs/architecture.png new file mode 100644 index 0000000..2847a52 Binary files /dev/null and b/docs/architecture.png differ