Crate unicorn [−] [src]
Bindings for the Unicorn emulator.
You most likely want to use one of the Cpu structs (CpuX86
, CpuARM
, etc.).
Example use
extern crate unicorn; use unicorn::{Cpu, CpuX86, uc_handle}; fn main() { let x86_code32 : Vec<u8> = vec![0x41, 0x4a]; // INC ecx; DEC edx let mut emu = CpuX86::new(unicorn::Mode::MODE_32).expect("failed to instantiate emulator"); emu.mem_map(0x1000, 0x4000, unicorn::PROT_ALL); emu.mem_write(0x1000, &x86_code32); emu.reg_write_i32(unicorn::RegisterX86::ECX, -10); emu.reg_write_i32(unicorn::RegisterX86::EDX, -50); emu.emu_start(0x1000, (0x1000 + x86_code32.len()) as u64, 10 * unicorn::SECOND_SCALE, 1000); assert_eq!(emu.reg_read_i32(unicorn::RegisterX86::ECX), Ok((-9))); assert_eq!(emu.reg_read_i32(unicorn::RegisterX86::EDX), Ok((-51))); }
Reexports
pub use arm64_const::*; |
pub use arm_const::*; |
pub use m68k_const::*; |
pub use mips_const::*; |
pub use sparc_const::*; |
pub use unicorn_const::*; |
pub use x86_const::*; |
Modules
arm64_const | |
arm_const | |
ffi | |
m68k_const | |
mips_const | |
sparc_const | |
unicorn_const | |
x86_const |
Structs
CpuARM |
An ARM emulator instance. |
CpuARM64 |
An ARM64 emulator instance. |
CpuM68K |
A M68K emulator instance. |
CpuMIPS |
A MIPS emulator instance. |
CpuSPARC |
A SPARC emulator instance. |
CpuX86 |
An X86 emulator instance. |
Unicorn |
Internal : A Unicorn emulator instance, use one of the Cpu structs instead. |
Constants
BINDINGS_MAJOR | |
BINDINGS_MINOR |
Traits
Cpu | |
Register |
Functions
arch_supported |
Returns |
bindings_version |
Returns a tuple |
error_msg |
Returns a string for the specified error code. |
unicorn_version |
Returns a tuple |
Type Definitions
uc_handle | |
uc_hook |