* Implement uc_context_free
* Use uc_context_free for python bindings
* Format code
* Simplify code
* Move next,context inside while loop
* Add my name to CREDITS.TXT
* Fix context size
* Make UcContext convertible to bytes and picklable
Fix when updaing context
* Test context pickling
* Fix double free when the context is pickled from bytes
* x86: setup FS & GS base
* Fixed base register writes for x64, removed then for x16/x32 (the don't exist there?)
* FS reg comes before GS so the base regs do so, too
* added shebang to const_generator.py
* Added base regs to and added 'all' support to const_generator
Co-authored-by: naq <aquynh@gmail.com>
Adding @rpath to the install name to make it possible to link against
the library without modifying it with install_name_tool. Copying both
the versioned and unversioned dylibs simplifies linking.
* 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...
* 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
* 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`).