本文档说明了如何在 Windows 上使用 Microsoft Visual Studio 2010 或更新版本编译 Capstone。

要在 *nix 上编译 Capstone,请参阅 COMPILE.TXT。

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

                    *-*-*-*-*-*

Capstone 不需要任何先决软件包,默认配置容易编译和安装。打开 Visual Studio 解决方案 'msvc/capstone.sln',然后按照以下说明操作。

注意:这需要 Visual Studio 2010 或更新版本。

如果您希望嵌入 Capstone 到内核驱动程序中,需要 Visual Studio 2013 或更新版本以及 Windows Driver Kit 8.1 Update 1 或更新版本。

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

在 Capstone 支持的 9 种体系结构(Arm、Arm64、M68K、Mips、PPC、Sparc、SystemZ、X86 和 XCore)中,如果您只需要几种选择的体系结构,请通过打开 Visual Studio 解决方案 'msvc\capstone.sln' 并直接编辑静态库和动态库项目 'capstone_static' 和 'capstone_dll' 选择要编译的体系结构。这必须在进行下一步之前完成。

在 VisualStudio 界面中,通过 '项目属性' -> '配置属性' -> 'C/C++' -> '预处理器' 修改预处理器定义以自定义 Capstone 库,如下所示。

  • CAPSTONE_HAS_ARM:支持 ARM。删除此项以去除 ARM 支持。
  • CAPSTONE_HAS_ARM64:支持 ARM64。删除此项以去除 ARM64 支持。
  • CAPSTONE_HAS_M68K:支持 M68K。删除此项以去除 M68K 支持。
  • CAPSTONE_HAS_MIPS:支持 Mips。删除此项以去除 Mips 支持。
  • CAPSTONE_HAS_POWERPC:支持 PPC。删除此项以去除 PPC 支持。
  • CAPSTONE_HAS_SPARC:支持 Sparc。删除此项以去除 Sparc 支持。
  • CAPSTONE_HAS_SYSZ:支持 SystemZ。删除此项以去除 SystemZ 支持。
  • CAPSTONE_HAS_X86:支持 X86。删除此项以去除 X86 支持。
  • CAPSTONE_HAS_XCORE:支持 XCore。删除此项以去除 XCore 支持。

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

此外,Capstone 还允许通过以下宏进行一些自定义。

  • CAPSTONE_USE_SYS_DYN_MEM:删除此项以使用自己的动态内存管理。
  • CAPSTONE_DIET_NO:将此项重命名为 'CAPSTONE_DIET' 以使二进制文件更紧凑。
  • CAPSTONE_X86_REDUCE_NO:将此项重命名为 'CAPSTONE_X86_REDUCE' 以使 X86 二进制文件更小。
  • CAPSTONE_X86_ATT_DISABLE_NO:将此项重命名为 'CAPSTONE_X86_ATT_DISABLE' 以禁用 x86 上的 AT&T 语法。

默认情况下,Capstone 使用系统的动态内存管理,并且 DIET 和 X86_REDUCE 模式都被禁用。

对于每个选项,更多详细信息请参阅 docs/README。

(1) 使用 Visual Studio 在 Windows 上从源代码编译

  • 选择您想要的配置和平台:Release/Debug 和 Win32/Win64。
  • 只构建库,或者连同所有测试一起构建库。
  • 'capstone_static_winkernel' 用于编译驱动程序的 Capstone,'test_winkernel' 是驱动程序的测试,默认情况下它们不会被编译。要编译它们,通过 [生成] 菜单打开配置管理器,并在这些项目的 '生成' 复选框中选中 '构建' 复选框。

(2) 您可以通过启动一个测试二进制文件(test*.exe)来确保前面的步骤成功。

驱动程序的测试二进制文件 'test_winkernel.sys' 由配置了步骤 (0) 中支持的体系结构的所有测试以及其自己的测试组成。下面解释了运行测试驱动程序并检查测试结果的过程。

在 x64 平台上,必须启用测试签名模式才能安装测试驱动程序。为此,使用管理员权限打开命令提示符,键入以下命令,然后重新启动系统以激活更改:

bcdedit /set testsigning on

测试驱动程序的测试结果被发送到内核调试缓冲区。为了查看这些结果,下载 DebugView 并使用管理员权限运行它,然后通过 [捕获] 菜单中的 [捕获内核] 选项进行检查。

DebugView: https://technet.microsoft.com/en-us/sysinternals/debugview.aspx

要安装和卸载驱动程序,请使用 'sc' 命令。要安装和执行 test_winkernel.sys,请使用管理员权限执行以下命令:

sc create test_winkernel type= kernel binPath= [SC] CreateService SUCCESS

sc start test_winkernel [SC] StartService FAILED 995:

The I/O operation has been aborted because of either a thread exit or an application request.

要卸载驱动程序,请使用管理员权限执行以下命令:

sc delete test_winkernel bcdedit /deletevalue testsigning

(3) 通过 vcpkg 安装和构建 capstone

您可以使用 vcpkg(https://github.com/Microsoft/vcpkg)依赖管理器下载和安装 capstone:

git clone https://github.com/Microsoft/vcpkg.git cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg integrate install vcpkg install capstone

vcpkg 中的 capstone 端口由 Microsoft 团队成员和社区贡献者保持更新。如果版本过时,请在 vcpkg 存储库(https://github.com/Microsoft/vcpkg)上创建一个问题或拉取请求。

在 Windows 上使用 Visual Studio 编译 Capstone

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

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