Skip to content
Snippets Groups Projects
  1. Jun 13, 2020
  2. Jun 12, 2020
  3. Jun 10, 2020
  4. May 07, 2020
  5. Feb 15, 2020
    • turekt's avatar
      Update keystone-binding.go to fix issue #363 (#426) · ccbb743b
      turekt authored
      When trying to execute `make install` inside the go binding sample, the output shows an error that is specified by guitmz in issue #363 
      
      Adding the missing cgo LDFLAGS resolves this issue.
      ccbb743b
    • Daniel Henry-Mantilla's avatar
      Fix Rust bindings (#437) · 27d86048
      Daniel Henry-Mantilla authored
      - A bool coming from C cannot be trusted; functionally it is a c_int,
          and conversion to bool must be done by comparing to 0;
      
        - similarly, a `#[repr(C)]` enum cannot be trusted to be a `u32`;
          it is more often than not a `c_int`. This could cause breakage with
          the ABI of the C functions of the binding. So the signatures and
          enum definitions have been adapted based on the
          `include/keystone/keystone.h` definitions.
      
        - and most importantly: a ks_handle is a `ks_engine *` in C parlance,
          and using `size_t` to represent it is not the right way. Moreover,
          so doing prevents the `Sync` and `Send` traits from being
          auto-unimplemented, meaning that this is implicitly asserting that
          keystone is multithread-safe, even for the same instance. If that is
          the case, then a `unsafe impl Sync for Keystone {}` (ditto for
          `Send`) should be added to make such assertion explicit.
      
          That's why an opaque type using the classic Rust idiom of a
          zero_sized #[repr(C)] struct has been made (while waiting for Rust
          to feature external types), and `Option<ptr::NonNull<_>>` is being
          used as the pointer type (equivalent to *mut _), but it allows to
          communicate nullable / non-nullable invariants at the type-level.
          This has then been transposed to the internals of keystone-rs.
      27d86048
  6. Dec 31, 2019
  7. Nov 22, 2019
  8. Aug 02, 2019
  9. Sep 17, 2018
  10. Sep 16, 2018
  11. Aug 02, 2018
  12. Jul 18, 2018
    • Jämes Ménétrey's avatar
      Introduction of the Java bindings (#364) · 097dca27
      Jämes Ménétrey authored
      * Add the structure for the Java Bindings
      
      Set up the structure hosting the Java bindings using JNA,
      and provides a binding for the function ks_version.
      
      * Ignore the compiled extension of macOS libraries.
      
      * Add infrastructure to open and close Keystone handles.
      
      Keystone enumerations have been added, as well as the required
      wrappers for JNA to convert the enumerations to and from the
      native library.
      
      Create exceptions for handling issues related to Keystone.
      
      Implement a cleaner that automatically collect any opened
      Keystone handles when a Keystone instance is garbage collected.
      
      * The close method of Keystone is now thread-safe.
      
      * Rename the exception KeystoneOpenFailedException into OpenFailedKeystoneException.
      
      * Add the assemble function into the wrapper of Keystone.
      
      * Enhance the exceptions thrown by Keystone using ks_strerror.
      
      The exception classes have been refactored to shorten hardcoded
      error messages into the wrapper and instead, rely on the error
      messages generated by the native library, thanks to the function
      ks_strerror.
      
      * Add the ability to check with a given architecture is supported.
      
      Enhance the wrapper to map the function function ks_arch_supported
      in order to determine whether a given architecture is supported.
      
      * Add the features the change the assembly syntax and resolve symbols.
      
      Enhance the wrapper in order to support the changes of options.
      
      * Document the class KeystoneEncoded.
      
      * Add additional unit tests for a better coverage.
      
      * Reorder the native functions import and document the native functions prototype.
      
      * Optimize the code.
      
      * Add the target folder to the gitignore.
      
      * Add missing Javadoc annotations for the exceptions.
      
      * Add a gitkeep for the folder hosting the Keystone library for macOS.
      
      * Update the Maven configuration for version and dependencies.
      
      Use the version convention defined in the README, add a couple
      of testing dependencies and plugins to package the bindings in
      a fat JAR and enable Maven to use jUnit 5.
      
      * Use JNA Direct Mapping for better performances on native function calls.
      
      * Add the README.
      
      * Add myself to the credits :)
      
      * Use the syntax highlighting of Java in the README.
      
      * Fix a typo.
      
      * Optimize imports.
      
      * Add predefined folders hosting the library Keystone on Windows.
      
      * Add the Java bindings to the README of the bindings summary.
      097dca27
  13. Apr 01, 2018
  14. Mar 30, 2018
  15. Mar 15, 2018
  16. Mar 12, 2018
  17. Jan 23, 2018
    • fearless's avatar
      Include bindings for masm x86 and other x64 assemblers (#320) · 2c659e9d
      fearless authored
      * Include bindings for masm x86 and other x64 assemblers
      
      * Added examples RadASM projects for x86 and x64 assembler
      Removed stub lib files
      Added readme.md
      
      * removed stub lib files
      
      * Fixed passing address parameter of ks_asm as qword size.
      Added unzipped source folders for examples
      Removed extra lines in text files
      
      * Removed additional extra lines at end of text files
      
      * Renamed readme.md to README.md, removed additional binaries.
      
      * Rename readme.md to README.md
      
      * Removed additional non-required files. Have to leave .dlg files as they are required for the main dialog examples and examples wont compile without them.
      
      * Updated bindings to add masm binding by mrfealress
      2c659e9d
  18. Nov 29, 2017
    • Segev Finer's avatar
      Add asm(..., as_bytes=True) to Python bindings (#327) · 11239763
      Segev Finer authored
      When enabled, the assembled code will be returned as bytes (str on
      Python 2) instead of a list of integers, this is more memory efficient,
      faster (It's created using ctypes.string_at instead of a loop in
      Python), and more convenient since that's the type that most code that
      works with bytes in Python expects (That includes capstone).
      
      Defaults to `False` for backwards compatibility, since changing the
      return type is a breaking change.
      11239763
  19. Oct 26, 2017
  20. Oct 24, 2017
    • hongxu's avatar
      fix python bindings shared library directory issue (#301) · 5bcff118
      hongxu authored
      using `data_files` dict prefixed with
      `SITE_PACKAGES = os.path.join(get_python_lib(), "keystone")` is not
      portable, see #235 and #297 for details. Regular setup configuration does
      not work, e.g., specifying `package_data` etc, since that only affects
      `sdist`.
      
      The fix is a hack: customize `install_lib` to explicitly copy the file
      into keystone install dir.
      5bcff118
  21. Jul 14, 2017
  22. Mar 21, 2017
  23. Mar 20, 2017
    • Marco's avatar
      Added support for CSharp (#287) · 1149b6b0
      Marco authored
      * Added support for CSharp
      
      * Minor changes to const_generator.py; Moved files according to the output of const_generator.py; Removed non-english comments;
      
      * Released keystone after tests
      1149b6b0
  24. Nov 10, 2016
  25. Nov 07, 2016
Loading