Я действительно могу использовать 8-битный адрес для сопоставления файла ELF?

Trey спросил: 07 октября 2018 в 10:39 в: c

Итак, я пытаюсь разобрать исполняемый файл и сказать, является ли он файлом ELF или нет, вот что я сделал:

    uint64_t *mapped_file = mmap(NULL, st.st_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);    if (mapped_file[0] != 0x7f || strcmp(&mapped_file[1], "ELF"))
    {
        fprintf(stderr, "%s is not an ELF file\n", argv[1]);
        exit(EXIT_FAILURE);
    }

Поскольку я нахожусь на 64-битной машина Я считаю, что uint64_t является подходящим типом для возвращаемого значения mmap, однако, когда я делаю это, strcmp не работает. Мне удалось решить эту проблему, используя вместо этого uint8_t, но я не уверен, что это правильный подход. Есть ли проблемы, если я храню 64-битный адрес в 8-битной переменной?

0 ответов