layout | title | permalink |
---|---|---|
page |
Documentation |
/docs/ |
Find here how to compile/install/program Keystone & other docs.
Find the source in Download section and follow the instructions in COMPILE.md to build and install the core of Keystone.
At the moment precompiled binaries for Windows are available in our Download section.
If you only want to write your tool in Python on Windows, all you need is the Python installer, which includes full Keystone module. The Windows core engine is not necessary because it is already embedded inside the Python module.
For all other the bindings, firstly you still need to install the Windows core engine, which also includes the static/dynamic libraries and also the headers (*.h) for C programming.
To program in Python, you need to install Python binding after you already installed the core in the above step.
NOTE: If you already installed the precompiled Python module from section 2 above, skip this part.
To install Python binding from PyPi on *nix platforms, do: {% highlight bash %} $ sudo pip install keystone-engine {% endhighlight %}
NOTE: PyPi installation actually downloads & compiles the Keystone core, so you need to have CMake installed in your machine beforehand.
To install Python binding from source on *nix platforms, do: {% highlight bash %} $ cd bindings/python $ sudo make install {% endhighlight %}
To install Python binding from source on Windows, do: {% highlight bash %} cd bindings/python python setup.py install {% endhighlight %}
For Windows, after above steps, you need to copy all the DLL files from the Windows core engine in the Download section into directory *C:\location_to_python\Lib\site-packages\keystone*.
To program in other languages (Ruby, NodeJS, Go & Rust), follow the documentation in respective directories under bindings/<language>.
Find in tutorials below how to write your Keystone tools using your favorite programming languages.
- Blackhat USA 2016 slides: Techinical details on Keystone design & implementation.
- Beyond LLVM: A quick technical comparison of Keystone and LLVM.