C/C++ Capstone 引擎源码编译

打印 上一主题 下一主题

主题 762|帖子 762|积分 2301

Capstone 是一个轻量级的多平台、多架构的反汇编框架。Capstone 旨在成为安全社区中二进制分析和反汇编的终极反汇编引擎。Capstone的编译非常简单只需要一步即可轻松得到对应的Lib库文件,如下将介绍该引擎如何被编译,以及简单的测试编译。
下载好以后直接打开项目,切换到msvc目录下,该目录下就是引擎的编译入口,我们直接打开capstone.slh文件,设置平台工具集为编译器的版本。

在右侧选择capstone_static也就是编译为静态库,然后直接编译文件。

编译成功后直接将其中的capstone.lib库文件拿出来,64位也是如此操作。

编译成功后会得到两个文件,直接新建lib目录,将其放进去。

然后再将项目中的include文件一并拷贝到新建的目录下。至此库就编译好了。

当需要在项目中使用该库时,只需要简单的引入到项目中。

接着新建一个项目,写入如下一段测试代码,编译执行即可实现对特定字符串的反汇编操作。
  1. #include <stdio.h>
  2. #include <inttypes.h>
  3. #include <capstone/capstone.h>
  4. #pragma comment(lib,"capstone32.lib")
  5. int main(int argc, char *argv[])
  6. {
  7.         char *buffer = "\x55\x8b\xec\x81\xec\x24\x03\x00\x00\x6a\x17\x90\x90\x90";
  8.         csh handle;
  9.         cs_insn *insn;
  10.         size_t count;
  11.         int size = 14;
  12.         printf("By: LyShark \n\n");
  13.         // 打开句柄
  14.         if (cs_open(CS_ARCH_X86, CS_MODE_32, &handle) != CS_ERR_OK)
  15.         {
  16.                 return 0;
  17.         }
  18.         // 反汇编代码,地址从0x1000开始,返回总条数
  19.         // https://www.cnblogs.com/lyshark
  20.         count = cs_disasm(handle, (unsigned char *)buffer, size, 0x1000, 0, &insn);
  21.         if (count > 0)
  22.         {
  23.                 size_t index;
  24.                 for (index = 0; index < count; index++)
  25.                 {
  26.                         for (int x = 0; x < insn[index].size; x++)
  27.                         {
  28.                                 printf("机器码: %d -> %02X \n", x, insn[index].bytes[x]);
  29.                         }
  30.                         printf("地址: 0x%"PRIx64" | 长度: %d 反汇编: %s %s \n", insn[index].address, insn[index].size, insn[index].mnemonic, insn[index].op_str);
  31.                 }
  32.                 cs_free(insn, count);
  33.         }
  34.         else
  35.         {
  36.                 printf("反汇编返回长度为空 \n");
  37.         }
  38.         cs_close(&handle);
  39.         getchar();
  40.         return 0;
  41. }
复制代码
预览效果如下:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表