这份文档解释了如何在 MacOSX、Linux、*BSD 和 Solaris 上编译、安装和运行 Capstone。我们还展示了在 Microsoft Windows 上交叉编译的步骤。

要使用 Microsoft Visual Studio 在 Windows 上进行本机编译,请参阅 COMPILE_MSVC.TXT。

要使用 CMake 进行编译,请参阅 COMPILE_CMAKE.TXT。

要在 MacOSX 上使用 XCode 进行编译,请参阅 xcode/README.md。

要在 Windows CE(也称为 Windows 嵌入式紧凑版)上进行编译,请参阅 windowsce/COMPILE.md。

                    *-*-*-*-*-*

Capstone 不需要先决软件包,因此很容易进行编译和安装。

(0) 根据您的需求定制 Capstone。

在 Capstone 支持的所有体系结构中,如果您只需要几个选定的体系结构,请在进行下一步之前通过编辑 'config.mk' 选择要编译的体系结构。

默认情况下,会编译所有体系结构。

自定义 Capstone 的另一种方法是在命令行上通过 ./make.sh 传递所需的选项。目前,Capstone 支持 7 个选项,如下所示。

  • CAPSTONE_ARCHS:指定要编译的体系结构列表。
  • CAPSTONE_USE_SYS_DYN_MEM:如果您有自己的动态内存管理,请更改此选项。
  • CAPSTONE_DIET:使用此选项使输出二进制文件更紧凑。
  • CAPSTONE_X86_REDUCE:使 X86 二进制文件更小的另一种选项。
  • CAPSTONE_X86_ATT_DISABLE:禁用 x86 上的 AT&T 语法。
  • CAPSTONE_STATIC:构建静态库。
  • CAPSTONE_SHARED:构建动态(共享)库。

默认情况下,Capstone 使用系统动态内存管理,DIET 和 X86_REDUCE 模式都被禁用,并且构建所有静态和共享库。

为了避免编辑 config.mk 进行这些自定义,我们可以将它们的值传递给 make.sh,如下所示。

$ CAPSTONE_ARCHS='arm aarch64 x86' CAPSTONE_USE_SYS_DYN_MEM=no CAPSTONE_DIET=yes CAPSTONE_X86_REDUCE=yes ./make.sh

注意:在命令行中,将这些值放在 ./make.sh 之前,而不是之后。

有关每个选项的更多详细信息,请参阅 docs/README。

(1) 从源代码编译

在 *nix(如 MacOSX、Linux、*BSD、Solaris)上:

  • 要为当前平台进行编译,请运行:

$ ./make.sh

  • 在 64 位操作系统上,运行以下命令以交叉编译 32 位二进制的 Capstone:

$ ./make.sh nix32

(2) 在 *nix 上安装 Capstone

要安装 Capstone,请运行:

$ sudo ./make.sh install

对于 FreeBSD/OpenBSD,sudo 不可用,请运行:

$ su; ./make.sh install

然后,用户需要输入 root 密码将 Capstone 复制到机器系统目录中。

之后,运行 ./tests/test* 以查看测试反汇编示例代码。

注意:由 './make.sh install' 安装的核心框架包括以下文件:

/usr/include/capstone/arm.h /usr/include/capstone/arm64.h /usr/include/capstone/capstone.h /usr/include/capstone/evm.h /usr/include/capstone/m680x.h /usr/include/capstone/m68k.h /usr/include/capstone/mips.h /usr/include/capstone/mos65xx.h /usr/include/capstone/platform.h /usr/include/capstone/ppc.h /usr/include/capstone/sparc.h /usr/include/capstone/systemz.h /usr/include/capstone/tms320c64x.h /usr/include/capstone/x86.h /usr/include/capstone/xcore.h /usr/lib/libcapstone.a /usr/lib/libcapstone.so(用于 Linux/*nix),或 /usr/lib/libcapstone.dylib(OSX)

(3) 从 *nix 交叉编译为 Windows

要交叉编译为 Windows,需要 Linux 和 gcc-mingw-w64-i686(以及 64 位二进制文件的 gcc-mingw-w64-x86-64)。

  • 要交叉编译 32 位 Windows 二进制文件,只需运行:

$ ./make.sh cross-win32

  • 要交叉编译 64 位 Windows 二进制文件,请运行:

$ ./make.sh cross-win64

生成的文件 libcapstone.dll、libcapstone.dll.a 和 tests/test*.exe 可以在 Windows 机器上使用。

(4) 从 Mac OSX 交叉编译为 iOS

要交叉编译为 iOS(iPhone/iPad/iPod),需要安装有 XCode 的 Mac OSX。

  • 要交叉编译为 ArmV7(iPod 4,iPad 1/2/3,iPhone4,iPhone4S),运行: $ ./make.sh ios_armv7

  • 要交叉编译为 ArmV7s(iPad 4,iPhone 5C,iPad mini),运行: $ ./make.sh ios_armv7s

  • 要交叉编译为 Arm64(iPhone 5S,iPad mini Retina,iPad Air),运行: $ ./make.sh ios_arm64

  • 要交叉编译为所有 iDevices(armv7 + armv7s + arm64),运行: $ ./make.sh ios

生成的文件 libcapstone.dylib、libcapstone.a 和 tests/test* 可以在 iOS 设备上使用。

(5) 交叉编译为 Android

要交叉编译为 Android(智能手机/平板电脑),需要 Android NDK。注意:目前仅支持 ARM 和 ARM64。

$ NDK=/android/android-ndk-r10e ./make.sh cross-android arm 或 $ NDK=/android/android-ndk-r10e ./make.sh cross-android arm64

生成的文件 libcapstone.so、libcapstone.a 和 tests/test* 可以在 Android 设备上使用。

(6) 在 Windows 上使用 Cygwin 编译

要在 Cygwin gcc-mingw-w64-i686 或 x86_64-w64-mingw32 下编译运行:

  • 要在 Cygwin 下编译 32 位 Windows 二进制文件,请运行:

$ ./make.sh cygwin-mingw32

  • 要在 Cygwin 下编译 64 位 Windows 二进制文件,请运行:

$ ./make.sh cygwin-mingw64

生成的文件 libcapstone.dll、libcapstone.dll.a 和 tests/test*.exe 可以在 Windows 机器上使用。

(7) 默认情况下,使用 'cc'(系统上的默认 C 编译器)作为编译器。

  • 要改用 'clang' 编译器,请运行以下命令:

$ ./make.sh clang

  • 要改用 'gcc' 编译器,请运行:

$ ./make.sh gcc

(8) 要卸载 Capstone,请运行以下命令:

$ sudo ./make.sh uninstall

(9) 语言绑定

到目前为止,主要代码支持 Python、Ocaml 和 Java 的绑定。在 bindings/ 目录下查找绑定,并参阅相应语言的 README 文件。

社区还提供了 C#、Go、Ruby、NodeJS、C++ 和 Vala 的绑定。这些的链接可以在 https://capstone-engine.org/download.html 地址中找到。

Capstone 编译、安装和运行指南

原文地址: https://www.cveoy.top/t/topic/pd3I 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录