Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Исходник Simple Kernel Pe Library

Продавец
Продавец
Статус
Оффлайн
Регистрация
6 Май 2025
Сообщения
193
Реакции
129
Небольшая PE библиотека, позволяющая вывести информацию о запущенном приложении, которая сделана в драйвере
( знаю, что довольно просто, но мой друг попросил ее сделать несколько месяцев назад, сейчас решил сделать ее Open-Source )

Возможности:

- Получение pid'a процесса
- Получение бейз адрес процесса
- Получение информации о секциях
- Получение информации об импортах
- Получение информации о TLS каллбеках

Ссылка на исходный код: github

Оутпут:
1761497998477.png
 
оффсеты как будто бы можно отсюда вырезать, они в любом случае не используются в либе, да и фаллбек можно было бы оставить в виде экспортируемых функций от ядра, для unique_process_id есть PsGetProcessId, для active_process_links есть ZwQuerySystemInformation, для image_file_name есть PsGetProcessImageFileName, хотя тут уже зависит от самого проекта в котором это будет использоваться

ещё ты дереференсишь eprocess раньше времени, опасненько так делать, можно пейджфолтом по шапке получить, она у тебя должна вызываться в момент, когда функция достигает своего конца вне зависимости от результата
1761473812446.png


где-то ты его дереференсишь правильно, а где-то забываешь это делать
1761474441826.png
 
оффсеты как будто бы можно отсюда вырезать, они в любом случае не используются в либе, да и фаллбек можно было бы оставить в виде экспортируемых функций от ядра, для unique_process_id есть PsGetProcessId, для active_process_links есть ZwQuerySystemInformation, для image_file_name есть PsGetProcessImageFileName, хотя тут уже зависит от самого проекта в котором это будет использоваться

ещё ты дереференсишь eprocess раньше времени, опасненько так делать, можно пейджфолтом по шапке получить, она у тебя должна вызываться в момент, когда функция достигает своего конца вне зависимости от результата
Посмотреть вложение 318396

где-то ты его дереференсишь правильно, а где-то забываешь это делать
Посмотреть вложение 318398
привет, спасибо за указанные тобой недостатки в коде, по поводу оффсетов - я забыл их вырезать, у меня функция уходила в вечный луп, поэтому я сделал поиск процесса черeз ZwQuerySystemInformation

по поводу дерефа тоже увидел, но по идеи не должно ничего случиться, но в любом случае тоже исправлю ( видимо, как-раз таки я хотел перенести дереф ниже перед возвратом значения, но забыл это сделать )

( изначально, я эти оффсеты у себя в драйвере юзал, чтобы получить процесс без вызова импортов, без создания пула, чтобы не добавлять себе лишнего дт вектора и нежелательных следов, которые могут возникнуть, вследствие вызова этих импортов, ведь работаю я обычно с крупными ач ( еак, вгк, бе(?) )

UPD: Fixed.
 
Последнее редактирование:
по поводу дерефа тоже увидел, но по идеи не должно ничего случиться
ну, тут уже как повезёт, бтв лучше снижать риски появления ub в коде, особенно в ринг0, ибо опять же, пейджфолт или ацесс виолейшн могут настучать за такие мемы с дерефом

( изначально, я эти оффсеты у себя в драйвере юзал, чтобы получить процесс без вызова импортов, без создания пула, чтобы не добавлять себе лишнего дт вектора и нежелательных следов, которые могут возникнуть, вследствие вызова этих импортов, ведь работаю я обычно с крупными ач ( еак, вгк, бе(?) )
я понимаю, да, поэтому я добавил это:

хотя тут уже зависит от самого проекта в котором это будет использоваться
 
ну, тут уже как повезёт, бтв лучше снижать риски появления ub в коде, особенно в ринг0, ибо опять же, пейджфолт или ацесс виолейшн могут настучать за такие мемы с дерефом


я понимаю, да, поэтому я добавил это:
да, это все я уже исправил и залил фикс, еще раз спасибо за то, что указал на это в коде
 
Назад
Сверху Снизу