Как преобразовать вывод Keystone в исполняемый файл - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь настроить бинарную структуру перезаписи. Я использую 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

...