Skip to main content

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