在 Windows 上使用 Visual Studio 编译 Capstone
本文档说明了如何在 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)上创建一个问题或拉取请求。
原文地址: https://www.cveoy.top/t/topic/pd36 著作权归作者所有。请勿转载和采集!