Skip to content

mnixry/binutils-wasm

Repository files navigation

binutils-wasm

Website

CI NPM Version of GAS NPM Version of Binutils

This project is divided into several components:

  • A WebAssembly version of GNU Binutils, available as an NPM package for use in Node.js or browser environments. (See gas and binutils)
  • A command-line tool based on the aforementioned package, providing a variety of platform-specific Binutils for use on any device that supports Node.js (work in progress).
  • A static web page built on the aforementioned package that offers assembly and disassembly for multiple architectures, accessible directly through a web browser. (This README is about this component)

Introduction

This is a highly efficient, purely static website that offers assembly and disassembly for a variety of architectures. The site is built using Mantine and Vite.

Features

  • Assembly and disassembly for multiple architectures
  • Exceptionally fast execution speed, nearly real-time
  • No server-side code, eliminating any potential security concerns
  • Parallels the asm and disasm functions in PwnTools

Screenshots

Assembler Disassembler

Usage

To use it, simply visit the website hosted on Vercel.

Building for Offline Use

To build for offline use, clone the repository and run the following commands. Note that this process assumes you are operating on a Unix-like system and have Docker installed (to build the WebAssembly binary).

# in the root directory of the repository
pnpm install
# This process will take about 1-2 hours
pnpm build

Once the build process is complete, the static files can be found in the ./frontend/dist directory.

Acknowledgments

  • Mantine and Vite for the tools used to build this website
  • EMScripten for the tools to compile Binutils to WebAssembly
  • GNU Binutils for the tools to assemble and disassemble binary files
  • PwnTools for providing a reference to implement the assembler and disassembler

License

This project is licensed under the GPLv3 License in accordance with the license of GNU Binutils. For more details, see the LICENSE file.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.