* 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 commit06425a32f3) * Remove bounds check on ppc branch instructions target address (fix issue 423) (cherry picked from commit06afb493e0) * 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>
2.0 KiB
This documentation explains how to build Keystone on Windows. For *nix OS, see COMPILE-NIX.md
- 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
-
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")
-
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.
-
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/