![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| ApolloKiD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 7.6.2011 Где: Молдавия Репутация: нет Всего: нет |
Доброго времени суток!
Задался очень интересным вопросом, как же предотвратить запись в мой процесс посторонними программами при помощи функции WriteProcessMemory(), не хукая никакие функции, и не залезая в ринг0. Способ нашёлся, но мне бы почитать о нём. Вот ссылка, Пост #4, где нашёлся такой метод, только я нигде не могу найти, где бы почитать о таком методе. Если кто знает, подскажите где можно об этом почитать или примеры посмотреть. Заранее спасибо! Это сообщение отредактировал(а) ApolloKiD - 29.1.2014, 01:12 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Самое простое - не дать другим открыть ваш процесс, путем ограничения всех прав для всех при создании процесса (в CreateProcess). А дальше - классическая гонка 'шит и меч', на любую вашу защиту найдется обходной путь взлома. Вопрос в том, кому раньше это надоест |
|||
|
||||
| DarthTon |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 7.2.2009 Репутация: 5 Всего: 6 |
Это не метод. Там код который грузит другой экзешник в АП текущего процесса заменяя оригинальный образ. В любом случае, метод описанный там похоже устарел. В Xp можно было читать и писать в ядерную область памяти из ринг3 немного извратившись. Теоретически, можно было убрать флаг Committed из VAD дескрипторов защищаемых областей. Таким образом WriteProcessMemory/ReadProcessMemory будут возвращать ошибки, а процесс будет работать нормально, т.к. PTE(Page Table Entry) защищаемых страниц остаются нетронутыми. Последняя версия UCP просто вызывает RtlSetThreadIsCritical/RtlSetProcessIsCritical для своего процесса и основного потока. А потом при малейшем подозрении на что-то нехорошее завершает свой поток роняя всю ОС в BSOD |
|||
|
||||
| ApolloKiD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 7.6.2011 Где: Молдавия Репутация: нет Всего: нет |
Хотелось бы обойтись без всяких хуков. Это сообщение отредактировал(а) ApolloKiD - 30.1.2014, 00:10 |
|||
|
||||
| ApolloKiD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 7.6.2011 Где: Молдавия Репутация: нет Всего: нет |
Можно где-то почитать по подробнее об этом? Или пример посмотреть.. Заранее благодарен. Это сообщение отредактировал(а) ApolloKiD - 30.1.2014, 00:11 |
|||
|
||||
| DarthTon |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 7.2.2009 Репутация: 5 Всего: 6 |
Читать особо негде. Раньше на васме была статья о Device\PhysicalMemory, сейчас можно найти несколько тем на форуме по словам Device\PhysicalMemory. Касательно VAD, инфы ещё меньше. Можешь глянуть мой код - VADPurge - Github, там реализован поиск и удаление VAD дескриптора по виртуальному адресу. Но опять-таки, без использования ринг0 всё это будет работать до Хр включительно. Для современных ОС, самый правильный метод это ObRegisterCallbacks из драйвера. В колбеке фильтровать доступ на запись в АП. В придачу к этому нужно постоянно контролировать что никто посторонний твой колбек не убрал. 100% защиты нет, есть только максимальное усложнение жизни взломщику. И вообще, защита методом запрета WriteProcessMemory не лучший подход. Вместо этого лучше искать последствия WriteProcessMemory, т.е. саму изменённую память. |
|||
|
||||
| ApolloKiD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 7.6.2011 Где: Молдавия Репутация: нет Всего: нет |
Было бы так, было бы легко, но дело в том, что этот участок не статичный. Значение что мне нужно защитить меняется самим приложением. Поэтому мне надо чтобы нельзя было писать в память либо читать ее, посторонними программами. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |