* first draft for an invalid instruction hook
* Fixed documentation on return value of invalid insn hook
Backports commit 07f94ad1fc62293cac330df9714d739be6354926 from unicorn
* Handle the cpu context save in a more pythonic way, so the context can be serialized and reuse in an other process using the same emulator architecture and modes
* Fix type error ; mistakes a size_t uint64_t ; breaks in 32bit...
Backports commit 8987ad0fffadd16669aa3b402e7e8aaab70ad700 from qemu
* activate CP0C3_ULRI for CONFIG3, mips
* updated with mips patches
* updated with mips patches
* remove hardcoded config3
* git ignore vscode
* fix spacing issue and turn on floating point
Backports most of commit 24f55a7973278f20f0de21b904851d99d4716263 from
unicorn. Ignores internal core modifications, as this would be
special-casing non-upstreamed behavior.
* Fixes the logic for Dylib extensions on macOS.
* Adds an uninstall task and documentation.
Backports commit 94b116877670ed9bbe38b71e3b9ad28f10cb3775 from unicorn
* update python binding samples, shellcode.py with 64bit syscall
* fix with quynh comments
* fix with more q comments
* reformatted
* reformatted and moved file
* reformatted and moved file
* delete file
* delete dead code
* deleted more dead code
* deleted more dead code / fix bugs
* fix 64bit eip intno eax
* rearrage rip
* Inconsistent print
Backports commit 8c6cbe3f3cabed57b23b721c29f937dd5baafc90 from unicorn.
* Python: Disable distribution of static library on linux and macos; add environment variable LIBUNICORN_PATH to let user specify location of native library; prevent build of native library if this option is enabled; closes#869
* Python: Update README.TXT to describe how to manage the building and usage of the native library
* renamed gem unicorn to unicorn-engine
* renamed modules to unicornengine
* renamed Module Unicorn to UnicornEngine and the gem unicorn-engine to unicornengine
* unicornengine -> unicorn_engine
In order to reduce rounding problems from calculations, FPU stack
registers for x86 architectures contain values stored in an
80-bit extended precision format.
As a result, reading and writing to these registers requires
specific handling.
This update brings the Ruby bindings in line with the Python
bindings by supporting reading and writing the FPU stack registers
using 2-element arrays: [mantissa, exponent]
The mantissa array element contains the first 64 bits of the FPU
stack register.
The exponent array element contains the last 16 bits of the FPU
stack register.
Sometimes, the finalizer for an `UcRef` runs so late that the members of the
module have already been set to `None`. We need to make sure that we don't
depend on anything in the module, or we risk getting a Exception when we try
to access the `release_handle` method of `None` (`Uc`).
* fix mem_unmap and query for Ruby bindings
* ruby bindings: fix issues with GC freeing callbacks while we still have references to them
* ruby bindings: add test for garbage collection of hooks
* ruby bindings: let the VM garbage collect hooks properly this time
* ruby bindings: update garbage collection test to make sure Proc is garbage collected after Uc is collected
* ruby bindings: fix m_uc_hook_add to return the ruby VALUE with proper memory management instead of making another one with bad memory management
* ruby bindings: fix cb_hook_intr signature
* add architecture query
* ruby bindings: only treat certain x86 registers specially if we're actually on x86
* only treat certain x86 registers specially if we're actually on x86 (uc_reg_read and uc_reg_write)
* ruby bindings: read and write ARM64's 128-bit NEON registers
* arm64eb: arm64 big endian also using little endian instructions.
* arm64: using another example that depends on endians.
example:
1. store a word: 0x12345678
2. load a byte:
* little endian : 0x78
* big endian : 0x12