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
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.

UnicornHook

Struct to bind a unicorn instance to a callback.

Constants

BINDINGS_MAJOR
BINDINGS_MINOR

Traits

Cpu
Register

Functions

arch_supported

Returns true if the architecture is supported by this build of unicorn.

bindings_version

Returns a tuple (major, minor) for the bindings version number.

unicorn_version

Returns a tuple (major, minor) for the unicorn version number.

Type Definitions

uc_handle
uc_hook