capstone-rs
Bindings to the capstone library disassembly framework.
Requirements
capstone-rs
uses the capstone-sys
crate to provide the low-level bindings to the Capstone C library.
See the capstone-sys
GitHub page for the requirements and supported platforms.
- Minimum Rust Version:
1.20.0
or later
Example
The example from demo.rs
:
extern crate capstone;
use *;
const CODE: &'static =
b"\x55\x48\x8b\x05\xb8\x13\x00\x00\xe8\x4a\xed\xff\xff\xe9\x14\x9e\x08\x00\x45\x31\xe4";
/// Print register names
/// Print instruction group names
Produces:
Found 5 instructions
0x1000: pushq %rbp
read regs: rsp
write regs: rsp
insn groups: mode64
0x1001: movq 0x13b8(%rip), %rax
read regs:
write regs:
insn groups:
0x1008: callq 0xfffffffffffffd57
read regs: rsp
write regs:
insn groups: call, mode64
0x100d: jmp 0x8ae26
read regs:
write regs:
insn groups: jump
0x1012: xorl %r12d, %r12d
read regs:
write regs: rflags
insn groups:
You can the demo by running:
cargo run --example=demo
To produce a short demonstration. More complex demos welcome!
Reporting Issues
Please open a Github issue
Author
- Library Author: Nguyen Anh Quynh
- Binding Author(s):
- m4b m4b.github.io@gmail.com
- Richo Healey richo@psych0tik.net
- Travis Finkenauer tmfinken@gmail.com
You may find a full list of contributors on Github.
License
Mit.