1*9a0e4156SSadaf Ebrahimi0. This documentation explains how to install the Python bindings for Capstone 2*9a0e4156SSadaf Ebrahimi from source. If you want to install it from a PyPi package (recommended if 3*9a0e4156SSadaf Ebrahimi you are on Windows), see README.txt. 4*9a0e4156SSadaf Ebrahimi 5*9a0e4156SSadaf Ebrahimi1. To install Capstone and the Python bindings on *nix, run the command below: 6*9a0e4156SSadaf Ebrahimi 7*9a0e4156SSadaf Ebrahimi $ sudo make install 8*9a0e4156SSadaf Ebrahimi 9*9a0e4156SSadaf Ebrahimi To install Capstone for Python 3, run the command below: 10*9a0e4156SSadaf Ebrahimi (Note: this requires python3 installed in your machine) 11*9a0e4156SSadaf Ebrahimi 12*9a0e4156SSadaf Ebrahimi $ sudo make install3 13*9a0e4156SSadaf Ebrahimi 14*9a0e4156SSadaf Ebrahimi To control the install destination, set the DESTDIR environment variable. 15*9a0e4156SSadaf Ebrahimi 16*9a0e4156SSadaf Ebrahimi2. For better Python performance, install cython-based binding with: 17*9a0e4156SSadaf Ebrahimi 18*9a0e4156SSadaf Ebrahimi $ sudo make install_cython 19*9a0e4156SSadaf Ebrahimi 20*9a0e4156SSadaf Ebrahimi Note that this requires Cython installed first. To install Cython, see 21*9a0e4156SSadaf Ebrahimi below. 22*9a0e4156SSadaf Ebrahimi 23*9a0e4156SSadaf Ebrahimi3. To install Cython, you have to ensure that the header files 24*9a0e4156SSadaf Ebrahimi and the static library for Python are installed beforehand. 25*9a0e4156SSadaf Ebrahimi 26*9a0e4156SSadaf Ebrahimi E.g. on Ubuntu, do: 27*9a0e4156SSadaf Ebrahimi 28*9a0e4156SSadaf Ebrahimi $ sudo apt-get install python-dev 29*9a0e4156SSadaf Ebrahimi 30*9a0e4156SSadaf Ebrahimi Depending on if you already have pip or easy_install installed, install 31*9a0e4156SSadaf Ebrahimi Cython with either: 32*9a0e4156SSadaf Ebrahimi 33*9a0e4156SSadaf Ebrahimi $ sudo pip install cython 34*9a0e4156SSadaf Ebrahimi or: 35*9a0e4156SSadaf Ebrahimi $ sudo easy_install cython 36*9a0e4156SSadaf Ebrahimi 37*9a0e4156SSadaf Ebrahimi NOTE: Depending on your distribution you might also be able to 38*9a0e4156SSadaf Ebrahimi install the required Cython version using your repository. 39*9a0e4156SSadaf Ebrahimi 40*9a0e4156SSadaf Ebrahimi E.g. on Ubuntu, do: 41*9a0e4156SSadaf Ebrahimi 42*9a0e4156SSadaf Ebrahimi $ sudo apt-get install cython 43*9a0e4156SSadaf Ebrahimi 44*9a0e4156SSadaf Ebrahimi However, our cython-based binding requires Cython version 0.19 or newer, 45*9a0e4156SSadaf Ebrahimi but sometimes distributions only provide older version. Make sure to 46*9a0e4156SSadaf Ebrahimi verify the current installed version before going into section 2 above. 47*9a0e4156SSadaf Ebrahimi 48*9a0e4156SSadaf Ebrahimi E.g, on Ubuntu, you can verify the current Cython version with: 49*9a0e4156SSadaf Ebrahimi 50*9a0e4156SSadaf Ebrahimi $ apt-cache policy cython 51*9a0e4156SSadaf Ebrahimi 52*9a0e4156SSadaf Ebrahimi Which should at least print version 0.19 53*9a0e4156SSadaf Ebrahimi 54*9a0e4156SSadaf Ebrahimi4. This directory contains some test code to show how to use the Capstone API. 55*9a0e4156SSadaf Ebrahimi 56*9a0e4156SSadaf Ebrahimi- test_basic.py 57*9a0e4156SSadaf Ebrahimi This code shows the most simple form of API where we only want to get basic 58*9a0e4156SSadaf Ebrahimi information out of disassembled instruction, such as address, mnemonic and 59*9a0e4156SSadaf Ebrahimi operand string. 60*9a0e4156SSadaf Ebrahimi 61*9a0e4156SSadaf Ebrahimi- test_lite.py 62*9a0e4156SSadaf Ebrahimi Similarly to test_basic.py, but this code shows how to use disasm_lite(), a lighter 63*9a0e4156SSadaf Ebrahimi method to disassemble binary. Unlike disasm() API (used by test_basic.py), which returns 64*9a0e4156SSadaf Ebrahimi CsInsn objects, this API just returns tuples of (address, size, mnemonic, op_str). 65*9a0e4156SSadaf Ebrahimi 66*9a0e4156SSadaf Ebrahimi The main reason for using this API is better performance: disasm_lite() is at least 67*9a0e4156SSadaf Ebrahimi 20% faster than disasm(). Memory usage is also less. So if you just need basic 68*9a0e4156SSadaf Ebrahimi information out of disassembler, use disasm_lite() instead of disasm(). 69*9a0e4156SSadaf Ebrahimi 70*9a0e4156SSadaf Ebrahimi- test_detail.py: 71*9a0e4156SSadaf Ebrahimi This code shows how to access to architecture-neutral information in disassembled 72*9a0e4156SSadaf Ebrahimi instructions, such as implicit registers read/written, or groups of instructions 73*9a0e4156SSadaf Ebrahimi that this instruction belong to. 74*9a0e4156SSadaf Ebrahimi 75*9a0e4156SSadaf Ebrahimi- test_<arch>.py 76*9a0e4156SSadaf Ebrahimi These code show how to access architecture-specific information for each 77*9a0e4156SSadaf Ebrahimi architecture. 78