Files
Edward Larson 4f5401601b Fix for issue #427 (#429)
* Add support for MSP430

* Fix test-all.sh

* Use corrected TableGen output files

* Fix bindings for EVM and MSP430

* Remove LLVM_CONSTEXPR (like upstream LLVM did) and fix Java binding

See https://github.com/llvm-mirror/llvm/commit/6feedc56f7855aa24baf759f3bc17112ecbf5699#diff-d14f03e012a2bdbf93486dc1c4ce95ec

* Revert bindings

* Remove added files as well

* Add back changes for bindings created by const_gnerator

* Add back changes for other bindings

* Update CREDITS.TXT

* Fix ADRP instruction encoding

* Trigger checks on PR again, it failed for some reason unrelated to my code

* Add correct offset checks back in

* added llvm support post jan 2

* Remove bounds check on ppc branch instructions target address (fix issue 423)

* Fix vm address reset in aliased PPC instructions

* Fix vm address reset in aliased PPC instructions

(cherry picked from commit 06425a32f3)

* Remove bounds check on ppc branch instructions target address (fix issue 423)

(cherry picked from commit 06afb493e0)

* Clean up test for issue #427

Co-authored-by: Trey Keown <trey@redballoonsecurity.com>
Co-authored-by: Dan Pesce <dan@redballoonsecurity.com>
Co-authored-by: Trey Keown <jfktrey@gmail.com>
Co-authored-by: Nguyen Anh Quynh <aquynh@gmail.com>
2020-06-14 16:04:10 +08:00

2.0 KiB

This documentation explains how to build Keystone on Windows. For *nix OS, see COMPILE-NIX.md

  1. Dependency

CMake is required as dependency. Download & install cmake from http://www.cmake.org

Microsoft Visual Studio 2013 or older is required for compiling. Download & install it from https://www.visualstudio.com

Python is another dependency. Download & install it from https://www.python.org

  1. Open the Visual Studio Command Prompt, and from the root directory of Keystone source, do:

     $ mkdir build
     $ cd build
    

To build DLL file, run:

    $ ..\nmake-dll.bat

By default, this builds all architectures, which is: AArch64, ARM, Hexagon, Mips, MSP430, PowerPC, Sparc, SystemZ & X86. To compile just some selected ones, pass a semicolon-separated list of targets to LLVM_TARGETS_TO_BUILD, like follows if we only want AArch64 & X86.

    $ cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DLLVM_TARGETS_TO_BUILD="AArch64;X86" -G "NMake Makefiles" ..
    $ nmake

To build LIB file, run:

    $ ..\nmake-lib.bat

Like above, this builds all architectures. To compile just some selected ones, pass a semicolon-separated list of targets to LLVM_TARGETS_TO_BUILD, like follows if we only want AArch64 & X86.

    $ cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DLLVM_TARGETS_TO_BUILD="AArch64, X86" -G "NMake Makefiles" ..
    $ nmake

Find the generated libraries in build\llvm\lib\keystone.{dll,lib}

In the case you build LIB file, a tool named "kstool.exe" is also compiled & available under directory "build\kstool". (Find source of "kstool" in directory "kstool/kstool")

  1. Test Keystone with "kstool" like below.

     $ kstool.exe x32 "add eax, ebx"
    

Run "kstool.exe" without any option to find out how to use this handy tool.

  1. Learn more on how to code your own tools with our samples.

    For C sample code, see code in directory samples/

    For Python sample code, see code in directory bindings/python/