У меня нет опыта в разработке драйверов. Я хочу получить доступ к атрибуту структуры PEPROCESS. У меня есть указатель, указывающий на объект процесса, полученный с помощью процедуры PsGetCurrentProcess. Я видел уже некоторые веб-описывающие структуру внутренних устройств (атрибуты) декларации, так что я мог бы использовать смещение этих атрибутов, чтобы получить их, что-то вроде:Как я могу получить доступ к атрибуту структуры PEPROCESS?
hprocess = PsGetCurrentProcess();
List = (LIST_ENTRY*)((ULONG)hproces + 0x88); //Active Process Link Offset
Однако этот способ оставить меня в середине проблемы. Я хотел бы сделать сборку этого кода, который мог бы работать на других платформах (например: x86, x86_64) и других версиях Windows (XP, 7, ...); и я полагаю, что это невозможно с этим, потому что смещение не будет одинаковым.
Вопрос: Существует ли для этого не хромое решение? Пример: что-то вроде
List = process->ActiveProcessLink
или что-то в этом роде.
Было бы предпочтительнее объявлять структуру, а не явно использовать смещение. Это также будет учитывать различия между платформами, если вы используете правильные типы. Невозможно помочь в том, что содержимое недокументированной структуры может измениться в зависимости от версии Windows. (Очевидно, вы не должны этого делать, если у вас есть другой вариант.) –
Спасибо, очень мешочек Гарри. Кажется, у меня есть серьезная проблема. – Ashigaruconyary
@HarryJohnston Объявление структуры может помочь, но не является гарантией успеха. Другие платформы могут добавлять или удалять участников. –