Надежный способ получить размеры структур ядра в переполнении стека

Я должен проанализировать двоичные данные, предоставляемые ядром Linux. Эти двоичные данные представляют собой некоторые классические структуры данных, используемые в ядре.

Например, мне нужно проанализировать структуру, где первое значение timeval структура. В исходном коде ядра оно определяется как:

struct timeval {
__kernel_time_t         tv_sec;         /* seconds */
__kernel_suseconds_t    tv_usec;        /* microseconds */
};

Так что я должен знать размер __kernel_time_t а также __kernel_suseconds_t,

__kernel_time_t определяется как: typedef long __kernel_time_tДолго.

Так как я должен проанализировать эти двоичные структуры (в строке) в PHP с unpack() (да, я знаю, у меня есть странные идеи), я должен получить размер целочисленных размеров ядра.

Как я могу этого достичь? Встроенная и JiT-скомпилированная C-программа, которая выполняет sizeofs? Получение конфигурации компиляции с gcc или же getconf команды? Какой самый лучший и более переносимый способ сделать это, и нужно ли реализовывать резервную систему (например, с помощью getconf, если компиляция C недоступна)?

1

Решение

Вы не объяснили, что вы действительно пытаетесь сделать, и в результате ваш вопрос кажется неоднозначным. Что вы подразумеваете под

Я должен проанализировать двоичные данные, предоставляемые ядром Linux. Эти двоичные данные представляют собой некоторые классические структуры данных, используемые в ядре.

Вам нужно интерпретировать вещи, возвращаемые из системных вызовов? или же некоторые внутренние структуры ядра?

Если первое, вы можете просто пойти с этим дерьмовым решением компиляции материала и проверки результата. Но ты хочешь в пользовательском пространстве заголовки. Если последнее, вам нужны отладочные символы для ядра, и вы все равно не хотите их анализировать. Такие инструменты, как crash (отладчик), могут сделать это за вас.

0

Другие решения

Других решений пока нет …