Crate unicorn

Crate unicorn 

Source
Expand description

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::Protection::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)));
}

Modules§

unicorn_const

Structs§

Context
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.
MemRegion
Protection
Unicorn
Internal : A Unicorn emulator instance, use one of the Cpu structs instead.
UnicornHook
Struct to bind a unicorn instance to a callback.
X86Mmr

Enums§

Arch
CodeHookType
Error
HookType
InsnSysX86
InsnX86
MemHookType
MemType
Mode
Query
RegisterARM
RegisterARM64
RegisterM68K
RegisterMIPS
RegisterSPARC
RegisterX86

Constants§

BINDINGS_MAJOR
BINDINGS_MINOR
MILISECOND_SCALE
PROT_ALLDeprecated
Use Protection::ALL instead.
PROT_EXECDeprecated
Use Protection::EXEC instead.
PROT_NONEDeprecated
Use Protection::NONE instead.
PROT_READDeprecated
Use Protection::READ instead.
PROT_WRITEDeprecated
Use Protection::WRITE instead.
SECOND_SCALE

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.
uc_arch_supported
uc_close
uc_context_alloc
uc_context_restore
uc_context_save
uc_emu_start
uc_emu_stop
uc_errno
uc_free
uc_hook_add
uc_hook_del
uc_mem_map
uc_mem_map_ptr
uc_mem_protect
uc_mem_read
uc_mem_regions
uc_mem_unmap
uc_mem_write
uc_open
uc_query
uc_reg_read
uc_reg_write
uc_strerror
uc_version
unicorn_version
Returns a tuple (major, minor) for the unicorn version number.

Type Aliases§

uc_context
uc_handle
uc_hook