Skip to content

Commit

Permalink
Merge pull request #13 from robalb/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
robalb authored Nov 18, 2024
2 parents 9ae339f + 297595d commit 0c2a5b5
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
28 changes: 21 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.<br/> 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.

<img src="./docs/preview2.jpg" />

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.
<img src="./docs/architecture.png" />



Expand Down
Binary file added docs/architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 0c2a5b5

Please sign in to comment.