Занимаюсь анализом Elf-файлов. Возник вопрос по таблице программного заголовка. По смещению 0x1C в ELF-заголовке указано смещение где начинается эта таблица. Далее по смещению 0x2A указан размер одной записи в этой таблице(обычно 32 байта), а по смещению 0x2C количество этих записей в таблице. Первые 4 байта каждой из записей таблицы указывают на тип секции. Судя по документации они могу принимать такие значения:
    file.seek(phOffset + 0x00);
    file.read((char*)&programHeader.p_type, sizeof(int));
    switch(programHeader.p_type)
    {
    case 0: return "Record ignored";
        break;
    case 1: return "Loadable Segment";
        break;
    case 2: return "Dynamic Section";
        break;
    case 3: return "Program Interpreter";
        break;
    case 4: return "Notes";
        break;
    case 5: return "Element of this type do not conform to the ABI";
        break;
    case 6: return "Specifies the location and size of the program header table itself (in file and in memory image of program)";
        break;
    case 0x60000000: return "Values in this inclusive range are reserved for OS-specific semantics.";
        break;
    case 0x6fffffff: return "Values in this inclusive range are reserved for OS-specific semantics.";
        break;
    case 0x70000000: return "Values in this inclusive range are reserved for processor-specific semantics.";
        break;
    case 0x7fffffff: return "Values in this inclusive range are reserved for processor-specific semantics.";
        break;
    default: return "Unknown";
    }
В одном из файлов, судя по числу по смещению 0x2C, 9 записей в таблице программного заголовка. Но смотря все 9 записей тип секций определяется только у первых 6 секций. Шестая имеет тип notes. У остальных трех записей в начале стоит число, которых нет в документации. А именно 50E5, 51E5, 52E5. То есть в свитче срабатывает default. Что это? Я неправильно определяю количество записей в таблице программного заголовка или эти числа тоже имеют свое значение?
Вообще есть проверенные анализаторы, чтобы я мог сверить с ними и проверить адекватность данных, выдаваемых моей программой?
