如何将Keystone的输出转换为可执行文件

时间:2018-11-01 21:06:56

标签: compilation disassembly machine-code capstone

我正在尝试建立一个二进制重写框架。我正在使用Capstone分解二进制文件,然后由Keystone对其进行汇编。 Keystone将输出编码数据,他将其称为已编译代码。我想知道如何通过执行Keystone的输出来验证此拆卸/组装过程。但是我不知道如何将编码后的数据转换为可执行文件?我正在使用32位X86 Fedora(linux)操作系统。 换句话说,我猜Keystone的输出是机器代码。我该怎么办?

这是我用于使用Keystone组装汇编代码的代码的一部分:

if (ks_asm(ks, CODE, 0, &encode, &size, &count) != KS_ERR_OK) {
          printf("ERROR: ks_asm() failed & count = %lu, error = %u\n", count, ks_errno(ks));
} else {
  size_t i;

  printf("%s = ", CODE);
  for (i = 0; i < size; i++) {
      printf("%02x ", encode[i]);
  }
  printf("\n");
  printf("Compiled: %lu bytes, statements: %lu\n", size, count);
}

这是完整示例的链接: Keystone's showcase

0 个答案:

没有答案