Capstone 编译、安装和运行指南
这份文档解释了如何在 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 地址中找到。
原文地址: https://www.cveoy.top/t/topic/pd3I 著作权归作者所有。请勿转载和采集!