pub struct Capstone { /* private fields */ }
Expand description
An instance of the capstone disassembler
Create with an instance with .new()
and disassemble bytes with .disasm_all()
.
Implementations§
Source§impl Capstone
impl Capstone
Sourcepub fn new() -> CapstoneBuilder
pub fn new() -> CapstoneBuilder
Create a new instance of the decompiler using the builder pattern interface.
This is the recommended interface to Capstone
.
use capstone::prelude::*;
let cs = Capstone::new().x86().mode(arch::x86::ArchMode::Mode32).build();
Sourcepub fn new_raw<T: Iterator<Item = ExtraMode>>(
arch: Arch,
mode: Mode,
extra_mode: T,
endian: Option<Endian>,
) -> CsResult<Capstone>
pub fn new_raw<T: Iterator<Item = ExtraMode>>( arch: Arch, mode: Mode, extra_mode: T, endian: Option<Endian>, ) -> CsResult<Capstone>
Create a new instance of the decompiler using the “raw” interface.
The user must ensure that only sensible Arch
/Mode
combinations are used.
use capstone::{Arch, Capstone, NO_EXTRA_MODE, Mode};
let cs = Capstone::new_raw(Arch::X86, Mode::Mode64, NO_EXTRA_MODE, None);
assert!(cs.is_ok());
Sourcepub fn disasm_all<'a>(
&'a self,
code: &[u8],
addr: u64,
) -> CsResult<Instructions<'a>>
pub fn disasm_all<'a>( &'a self, code: &[u8], addr: u64, ) -> CsResult<Instructions<'a>>
Disassemble all instructions in buffer
cs.disasm_all(b"\x90", 0x1000).unwrap();
Sourcepub fn disasm_count<'a>(
&'a self,
code: &[u8],
addr: u64,
count: usize,
) -> CsResult<Instructions<'a>>
pub fn disasm_count<'a>( &'a self, code: &[u8], addr: u64, count: usize, ) -> CsResult<Instructions<'a>>
Disassemble count
instructions in code
Sourcepub fn set_extra_mode<T: Iterator<Item = ExtraMode>>(
&mut self,
extra_mode: T,
) -> CsResult<()>
pub fn set_extra_mode<T: Iterator<Item = ExtraMode>>( &mut self, extra_mode: T, ) -> CsResult<()>
Set extra modes in addition to normal mode
Sourcepub fn set_syntax(&mut self, syntax: Syntax) -> CsResult<()>
pub fn set_syntax(&mut self, syntax: Syntax) -> CsResult<()>
Set the assembly syntax (has no effect on some platforms)
Sourcepub fn set_endian(&mut self, endian: Endian) -> CsResult<()>
pub fn set_endian(&mut self, endian: Endian) -> CsResult<()>
Set the endianness (has no effect on some platforms).
Sourcepub fn set_mode(&mut self, mode: Mode) -> CsResult<()>
pub fn set_mode(&mut self, mode: Mode) -> CsResult<()>
Sets the engine’s disassembly mode. Be careful, various combinations of modes aren’t supported See the capstone-sys documentation for more information.
Sourcepub fn set_detail(&mut self, enable_detail: bool) -> CsResult<()>
pub fn set_detail(&mut self, enable_detail: bool) -> CsResult<()>
Controls whether to capstone will generate extra details about disassembled instructions.
Pass true
to enable detail or false
to disable detail.
Sourcepub fn set_skipdata(&mut self, enable_skipdata: bool) -> CsResult<()>
pub fn set_skipdata(&mut self, enable_skipdata: bool) -> CsResult<()>
Controls whether capstone will skip over invalid or data instructions.
Pass true
to enable skipdata or false
to disable skipdata.
Sourcepub fn reg_name(&self, reg_id: RegId) -> Option<String>
pub fn reg_name(&self, reg_id: RegId) -> Option<String>
Converts a register id reg_id
to a String
containing the register name.
Unavailable in Diet mode
Sourcepub fn insn_name(&self, insn_id: InsnId) -> Option<String>
pub fn insn_name(&self, insn_id: InsnId) -> Option<String>
Converts an instruction id insn_id
to a String
containing the instruction name.
Unavailable in Diet mode.
Note: This function ignores the current syntax and uses the default syntax.
Sourcepub fn group_name(&self, group_id: InsnGroupId) -> Option<String>
pub fn group_name(&self, group_id: InsnGroupId) -> Option<String>
Converts a group id group_id
to a String
containing the group name.
Unavailable in Diet mode
Sourcepub fn insn_detail<'s, 'i: 's>(
&'s self,
insn: &'i Insn<'_>,
) -> CsResult<InsnDetail<'i>>
pub fn insn_detail<'s, 'i: 's>( &'s self, insn: &'i Insn<'_>, ) -> CsResult<InsnDetail<'i>>
Returns Detail
structure for a given instruction
Requires:
- Instruction was created with detail enabled
- Skipdata is disabled
Sourcepub fn lib_version() -> (u32, u32)
pub fn lib_version() -> (u32, u32)
Returns a tuple (major, minor) indicating the version of the capstone C library.
Sourcepub fn supports_arch(arch: Arch) -> bool
pub fn supports_arch(arch: Arch) -> bool
Returns whether the capstone library supports a given architecture.