Pascal Python Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bindings unicorn-engine/unicorn@2f297bd Nov 12, 2015
.gitignore Initial import Nov 8, 2015
LICENSE initial commit Nov 8, 2015 Added mem_apis sample Nov 12, 2015


Pascal language binding for the Unicorn emulator (GitHub).

Unicorn is a lightweight multi-platform, multi-architecture CPU emulator framework based on QEMU.




OS : Windows, Linux

Compiler : Delphi, Free Pascal


  • Same API as the C core
    • with some workarounds for Pascals case insensitivity: uc_mem_write() -> uc_mem_write_(), uc_mem_read() -> uc_mem_read_()
    • and the missing feature passing variable number of arguments to functions (...): uc_hook_add() -> uc_hook_add_0(), uc_hook_add_1(), uc_hook_add_2(). Or use the uc_hook_add() overloaded functions.
  • Compiler agnostic, as long as it is some sort of modern Pascal. Delphi >= 5 and Free Pascal >= 1.0
  • Multiplatform (Windows and Linux are tested)


  • SampleArm Emulate ARM
  • SampleArm64 Emulate ARM64
  • SampleX86 Emulate 16, 32, 64 Bit x86
  • SampleSparc Emulate SPARC
  • SampleMips Emulate MIPS
  • SampleM68k Emulate m68k
  • shellcode Sample code to trace code with Linux code with syscall
  • mem_apis Sample use of uc_mem_unmap, uc_mem_protect, and memory permissions