Capstone Engine bindings on PHP 7.0+
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
capstone @ e965a58
tests
.gitignore
.gitmodules
README.md
config.m4
config.w32
const.c
const.inc
ext.c
genconst.php
php_capstone.h

README.md

Compile Capstone:

$ mkdir capstone/build
$ cd capstone/build
$ cmake ..
$ cmake --build . --config Release

For Win64

$ cmake -G "Visual Studio 14 2015 Win64" ..

VC++ 2015 (SDK 7.1) using VC++ 2017 (SDK 8.1)

The php build using mc.exe command which resides on C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin maybe install Microsoft Visual C++ 2010 Service Pack 1 Compiler Update for the Windows SDK 7.1

Compile Capstone PHP on Windows:

Resource:

Step:

  1. Install Visual Studio 2015.

  2. Open VS2015 x86 Native Tools Command Prompt.

  3. The PHP binary tools SDK is located in C:\php-sdk

  4. Create build directory once:

    $ cd c:\php-sdk\
    $ bin\phpsdk_buildtree.bat phpdev
    

    Copy C:\php-sdk\phpdev\vc9 to C:\php-sdk\phpdev\vc14.

  5. The PHP source code is located in C:\php-sdk\phpdev\vc14\x86\php-7.0.14-src

  6. Put libraries on which PHP depends in C:\php-sdk\phpdev\vc14\x86\deps

  7. Clone this repo in C:\php-exts\capstone

  8. Setup environment:

    $ cd c:\php-sdk\
    $ bin\phpsdk_setvars.bat
    
  9. Build config as phpize:

    $ cd C:\php-sdk\phpdev\vc14\x86\php-7.0.14-src
    $ buildconf.bat --add-modules-dir=C:\php-exts
    
  10. Configure:

    $ cd C:\php-sdk\phpdev\vc14\x86\php-7.0.14-src
    $ configure.bat --disable-all --enable-cli --enable-capstone
    
  11. Make:

    $ cd C:\php-sdk\phpdev\vc14\x86\php-7.0.14-src
    $ nmake php_capstone.dll
    

The generated file will be in .\Release_TS and .\x64\Relase_TS for Win64.

Testing:

$ echo extension_dir=%cd%\Release_TS >> Release_TS\php.ini
$ echo extension=php_capstone.dll >> Release_TS\php.ini
$ nmake test TESTS=C:\php-exts\php-capstone\tests

Compile Capstone PHP on Linux/Mac:

$ phpize --clean
$ phpize
$ ./configure

Patch (C++ only) on Mac:

If you get error regarding __ZNSt8ios_base4InitD1Ev it is because the libtool using gcc instead g++ compiler in which it doesn't link to libstdc++. Change the command produced in Makefile from --mode=link $(CC) into --mode=link $(CXX) on the rule ./capstone.la (bottom).

Build:

$ make

Make sure the modules/capstone.so linked with libstdc++ (C++ only):

$ otool -L modules/capstone.so

Test:

$ make test

Install:

$ make install
$ echo "extension=capstone.so" > /usr/local/etc/php/7.0/conf.d/ext-capstone.ini
$ brew services restart php70