A high-performance, asynchronous disassembler which uses capstone.js as the backend and Web Workers for non-blocking requests
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
demo
.gitignore
LICENSE
LICENSE_CAPSTONE.TXT
README.md
bower.json
capstone.min.js
capstoneworker.js
index.html
silicon-disassembler.html

README.md

Intro

<silicon-disassembler> is a high performance, asynchronous web-component using capstone.js as the disassembler backend and Web Workers with Transferable Objects to provide non-blocking, entirely client-side disassembly of arbitrary Uint8Array's, all in a conveniently encapsulated package. Are you excited yet?

Install

bower install silicon-disassembler

Usage

Basic usage is:

<silicon-disassembler auto offset="0x0" count="32" memory="0x1000" bytes="[[byteArray]]"></silicon-disassembler>

which automatically disassembles count bytes in byteArray whenever offset, count, or memory changes. Memory current is just used in display and instruction byte count.

To force a disassembly of the current bytes, et. al., use disassemble().

If you are coming from a non-polymer background, listen for the instructions-changed event.

See the documentation for a demo and more information.

Enjoy, and welcome to the future.

Notes

  • All your bytes is belong to us: don't data-bind to bytes. Currently, they all get sucked up when the Transfer Object is sent over. This is for maximum flexibility, and errs on the side of efficiency (if they're sent in once for all time, why copy again). But, if you need the bytes for something other than the disassembler, say a hex-table, make a copy via new Uint8Array(bytes) before you send them in. If this is too unintuitive, this behavior my change in the future.