Skip to main content

CLI for assembly/disassembly powered by Keystone/Capstone.

Project description

Latest Release
Python-based interactive assembler/disassembler CLI, powered by Keystone/Capstone.

Why did you make this?

I wanted to quickly view some opcodes with metasm-shell.rb, but I didn’t have a Metasploit install handy. I didn’t really want to mess around with Ruby either, so I figured that writing my own replacement was a good excuse to play with Keystone and Capstone.

How do I install it?

pip install chiasm-shell
# OR
mkvirtualenv chiasm-shell # optional
git clone https://github.com/0xbc/chiasm-shell
cd chiasm-shell
python setup.py install # assumes you have Capstone and Keystone
                        # build toolchains installed, which includes CMake.

How do I run it?

chiasm-shell
# or, from the repo base directory:
python -m chiasm_shell.chiasm_shell

How do I use it?

  • When the prompt is asm>, you’re using the interactive assembler backend (Keystone).

  • Input one or more assembly statements separated by a semi-colon. x86 uses Intel syntax only at the moment.

  • When the prompt is disasm>, you’re using the interactive disassembler backend (Capstone).

  • Input one or more bytes represented by \xXX, where XX is a hex value.

  • To switch backends, use switch asm or switch disasm.

  • To change architecture, use setarch <arch> <mode(s)>.

  • e.g. setarch x86 64.

  • You can use more than one mode, separated by spaces.

  • Use lsarch and lsmode to view supported architectures and modes for the current backend

  • At the moment, you need to know what modes are relevant to each architecture - check the Keystone/Capstone source if you’re not sure.

  • Type help to see a list of commands; help <cmd> to see the docstring for cmd.

Example usages

asm> inc eax; xor ebx, ebx
\x40\x31\xdb
disasm> \x40\x31\xdb
0x1000: inc     eax
0x1001: xor     ebx, ebx

It’s broken/I have a suggestion/etc.

Please get in touch/raise an issue/PR/etc!

Known Issues

  • None at this time.

TODO

  • Syntax highlighting and/or tab completion for assembly

  • Intelligent mode selection

  • Support different input/output formats

  • Test suite

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chiasm-shell-1.0.0a9.tar.gz (7.7 kB view details)

Uploaded Source

File details

Details for the file chiasm-shell-1.0.0a9.tar.gz.

File metadata

File hashes

Hashes for chiasm-shell-1.0.0a9.tar.gz
Algorithm Hash digest
SHA256 40d0133ca11b5c230781c64d61a96619420c5af121264fe894d8a07abab7d50e
MD5 b1f8107c5452fa473ba0da8c72541ddb
BLAKE2b-256 b3950f03301ac21703fc2542b55cd227957f36d5a71404d389968ea80224f633

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page