Пятница, 19 Апреля 2024, 20:53

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » C/C++ » Защита процесса. Защита файла (Создание защиты для неигрового проекта)
Защита процесса. Защита файла
firedayДата: Среда, 28 Ноября 2012, 23:40 | Сообщение # 1
частый гость
Сейчас нет на сайте
Всем доброго времени суток!
Программа для мониторинга компьютеров в учебные заведения.
Программа будет ставиться официально, т.е. прятать ее процесс и т.п. не надо, хотя, как защиту можно использовать.
Система клиент-сервер. Надо защитить клиент - процесс от закрытия, а файл от удаления.
Защита нужна дабы школьники не потерли софтину (клиент).
На компьютерах учеников нету прав Админа.
пишу на visual basic 6.0
===========
Какие есть идеи?
У меня пока такие:
От удаления: для начала сделать файл скрытым и системным.
От удаления защитить открытием файла на запись, но вот открыть работающий ехе-шник не получится.. Да и отцепить файл можно, тем же анлокером, да прибить.
В то же время запущенный файл тоже не удалить. И даже если запускать при закрытии заново, все равно пряморукие смогут снести.
Для защиты от закрытия процесса - сделать дополнительный процесс, который следит за первым. Если он обнаруживает что первого процесса нету, то, например, ребутит ПК или запускает процесс заново.
Для защиты второго процесса первый ведет аналогичную деятельность.
Но это может быть накладно в плане производительности (постоянно получать список процессов, искать в них нужный).
По этому думаю внедрить библиотеку в критически важный системный процесс. И что бы эта библа следила за работой программы.
В принципе как внедрять библу знаю, но на деле возникают накладки. Получается инжект тольк в себя.

п.с. Так же по поводу чтения файлов. Я сделал так, отдельная библа длл читает из файла/реестра, что бы не палить пути в поцессе.
Поможет ли это от пряморуких?
п.п.с. Клиент не консольный, а оконный, по этому заинжектить клиент в виде библы в процесс не вариант.


Сообщение отредактировал fireday - Четверг, 29 Ноября 2012, 00:38
ApatiДата: Четверг, 29 Ноября 2012, 00:09 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
А просто не давать админские права школьникам не вариант?
firedayДата: Четверг, 29 Ноября 2012, 00:37 | Сообщение # 3
частый гость
Сейчас нет на сайте
Прав админа там нету. Забыл это упомянуть.
Добавлю в топик.
RacotДата: Четверг, 29 Ноября 2012, 01:14 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
То, что я надумал:
1:
Quote (fireday)
Прав админа там нету. Забыл это упомянуть

Ставим на администратора свою прогу и ограничиваем ее изменение и удаление для конкретного пользователя.
а) ОС Линух: проблем не возникнет
б) ОС Виндос: локальная политика безопасности тебе в помощь
2: Сохранять все данные перед закрытием программы, а потом при перезагрузке возобновлять (некий бекап).
3: Поставить пароль на папку специальными прогами.
это что первое что пришло в голову. Можно изощрятся до посинения. Подмена процессов и подключение библиотек все же лучше. Я бы пользовался людским фактором и внедрил "подсадную утку" или ложный анИнсталлер, который просто восстанавливает, а не удаляет, прогу ))


Специалист "во всем" - специалист "ни в чем"
------------------------------------
Script Reference для Unity3D
Помогу со скриптами for Unity3D
stingerДата: Четверг, 29 Ноября 2012, 16:20 | Сообщение # 5
участник
Сейчас нет на сайте
Интересно,какой школьник станет специально удалят файлы анлокером?
firedayДата: Четверг, 29 Ноября 2012, 17:34 | Сообщение # 6
частый гость
Сейчас нет на сайте
Quote (Racot)
Ставим на администратора свою прогу и ограничиваем ее изменение и удаление для конкретного пользователя.
ОС Виндос:
1: локальная политика безопасности тебе в помощь
2: Сохранять все данные перед закрытием программы, а потом при перезагрузке возобновлять (некий бекап).
3: Поставить пароль на папку специальными прогами.
это что первое что пришло в голову. Можно изощрятся до посинения. Подмена процессов и подключение библиотек все же лучше. Я бы пользовался людским фактором и внедрил "подсадную утку" или ложный анИнсталлер, который просто восстанавливает, а не удаляет, прогу ))

Не понял причем тут анИнсталлер?)
Левый процесс как вариант, но его заметить можно.
2) раз восстанавливать - а идея нормальная...

Quote (stinger)
Интересно,какой школьник станет специально удалят файлы анлокером?
Там стоит анлокер.

===
Без прав Админа ведь не получится изменять автозагрузку в HKLM?
Думаю запилю "проверятор", который будет проверять целостность клиента.
А что на счет закрытия процесса?
Все таки придется библиотеку внедрять в процесс. Буду пробовать.
Всем спасибо за идеи. Если что еще придумаете - пишите, буду рад.
ArchidoДата: Пятница, 30 Ноября 2012, 14:02 | Сообщение # 7
Сэнсэй
Сейчас нет на сайте
Вообще когда хочется защититься от всего и вся - пишется небольшой драйвер smile .
В данном случае, драйвер открывает необходимые файлы (которые нужно защитить) и запоминает их хендлы, далее ставится хук на NtClose и если туда передается любой из наших хендлов, то мы пишем в память по невалидному адресу и получаем BSOD, т.к. в kernel mode портить память нельзя категорически. Unlocker не сможет "отцепить" эти файлы, т.к. он делает это как раз при помощи закрытия всех хендлов, а мы это дело контролируем. Для защиты процесса - достаточно запомнить его PID и периодически проверять, и если его нет - то портить память и получать аналогичный BSOD smile

Но, наверное тут это все излишне и первое что приходит в голову, действительно выехать на правах администратора (или к нему вообще доступа нет?). Если разрешить всем кроме админа только "читать" и "выполнять" необходимые файлы, то сделать плохое с ними как бы уже ничего и нельзя.
Для защиты процесса, можно сделать инжект в необходимый процесс и выполнить там небольшой код, вызвав одну недокументированную и интересную ф-цию из ntdll - "RtlSetProcessIsCritical". При попытке убить такой процесс - результатом будет BSOD happy


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
НохчиДата: Пятница, 30 Ноября 2012, 17:27 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Archido, интересная апи, не знал о ней.
DEL
Quote (Archido)
Вообще когда хочется защититься от всего и вся - пишется небольшой драйвер

+1. Правда зачем бсодить не понятно, просто вернуть управление и не закрывая хэндл и все.


Многие вопросы по Windows отпадут, если посмотреть тут

Сообщение отредактировал Нохчи - Пятница, 30 Ноября 2012, 17:39
ArchidoДата: Пятница, 30 Ноября 2012, 17:46 | Сообщение # 9
Сэнсэй
Сейчас нет на сайте
Quote (Нохчи)
Правда зачем бсодить не понятно, просто вернуть управление и не закрывая хэндл и все

Отбить желание у детишек пытаться делать плохие вещи happy , а так то, ессно, можно как хочешь сделать. При установке "RtlSetProcessIsCritical" ОС его откажется завершать, а при попытке завалить через отладку (SE_DEBUG_NAME) - будет BSOD. Снять можно точно также как и поставить.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)

Сообщение отредактировал Archido - Пятница, 30 Ноября 2012, 17:47
firedayДата: Пятница, 30 Ноября 2012, 20:54 | Сообщение # 10
частый гость
Сейчас нет на сайте
Archido, спасибо большое!
Такого ответа я и ждал!

Реализовал RtlSetProcessIsCritical, но пока только из процесса. Для этого потребовались права Администратора.
Теперь вопрос, если я сделаю это в библиотеке, которую загружу в процесс с админскими правами (ring выше user-a), то выходит моя библиотека приобретает те же права, верно?
Но для инжекта в такой процесс тоже нужны права... Замкнутый круг.
Как можно заинжектить без прав?

А по поводу драйвера, да, это самый разумный подход, но я программирую на visual basic 6.0. На нем не написать драйверы. Вот если бы вы мне помогли с этим. Был бы очень рад.
НохчиДата: Пятница, 30 Ноября 2012, 21:10 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
fireday, Archido предпологал, что у тебя есть права админа(иначе как ты дров грузить собрался?), а у школьников нет. Заинжектиться в процесс запущенный юзером с более высокими правами нельзя.

Многие вопросы по Windows отпадут, если посмотреть тут
TimKruzДата: Пятница, 30 Ноября 2012, 22:05 | Сообщение # 12
старожил
Сейчас нет на сайте
Quote (fireday)
Поможет ли это от пряморуких?

От пряморуких ничего не поможет. smile Пряморукий загрузится через свой LiveCD и занулит всю лишнюю информацию на жёстком диске. wink Только какому школьнику это может понадобиться? Да и накажут потом, когда вычислят виновника.
Quote (fireday)
Система клиент-сервер. Надо защитить клиент - процесс от закрытия, а файл от удаления.

А что если сервер, не дождавшись от компьютера-клиента ответа, просто удалённо перезагружает его? Или сам копирует и запускает нужный файл на нём. Всё равно ведь всё в локальную сеть подключено. Конечно, можно выдернуть сетевой шнур, но кому нужен школьный комп без доступа в интернет?..
Quote (fireday)
пишу на visual basic 6.0

Почему тогда тема в разделе "C/C++"?!
Quote (Archido)
Отбить желание у детишек пытаться делать плохие вещи

Ну как бы после BSOD'а детишки попытаются сделать это ещё несколько раз, предполагая BSOD всего лишь случайной ошибкой системы. А вот если программа просто перезапускается или выдаёт окошко-предупреждение - после пары десятков попыток желание её убить отпадает и вообще теряется смысл жизни, потому что какая-то там программулька от криворукого школьного сисадмина устояла перед безусловно пряморуким учеником... sad
Quote (fireday)
Программа для мониторинга компьютеров в учебные заведения.

А что она конкретно мониторит? Интересно просто. Вроде бы существуют стандартные средства мониторинга пользовательских компьютеров в сети с компьютера администратора сети.
Чтобы не выдумывать лишние программы-костыли, нужно просто кабинеты закрывать на ключ на переменах и запрещать учителям убегать в неизвестном направлении чай пить прямо с урока, когда ученики делают, что хотят. angry


firedayДата: Пятница, 30 Ноября 2012, 22:42 | Сообщение # 13
частый гость
Сейчас нет на сайте
Quote (Нохчи)
fireday, Archido предпологал, что у тебя есть права админа(иначе как ты дров грузить собрался?), а у школьников нет. Заинжектиться в процесс запущенный юзером с более высокими правами нельзя.
Драйвер достаточно заинсталить один раз под правами Админа.
А вот инжект нуждается в постоянных правах, так как загружается со старт апа -> под правами юзера.

Добавлено (30.11.2012, 22:31)
---------------------------------------------
Quote (TimKruz)
От пряморуких ничего не поможет. Пряморукий загрузится через свой LiveCD и занулит всю лишнюю информацию на жёстком диске. Только какому школьнику это может понадобиться? Да и накажут потом, когда вычислят виновника.
Пряморукость разной степени есть. Для того что бы загрузится с LiveCD так же нужны некие вещи, хотя бы привод и включенная загрузка с него (или доступ к биосу).

Quote (TimKruz)
А что если сервер, не дождавшись от компьютера-клиента ответа, просто удалённо перезагружает его? Или сам копирует и запускает нужный файл на нём. Всё равно ведь всё в локальную сеть подключено. Конечно, можно выдернуть сетевой шнур, но кому нужен школьный комп без доступа в интернет?..
Учительский ПК сидит под локальным админом.
В общем, лучше сделать систему независимую от локальных сетей. Тем более что система должна функционировать даже с выключенным сервером. Сервер лишь отдает команды.

Quote (TimKruz)
Почему тогда тема в разделе "C/C++"?!
Тему создал в разделе с++, так как тут сидят самые продвинутые.

Quote (TimKruz)
Ну как бы после BSOD'а детишки попытаются сделать это ещё несколько раз, предполагая BSOD всего лишь случайной ошибкой системы. А вот если программа просто перезапускается или выдаёт окошко-предупреждение - после пары десятков попыток желание её убить отпадает и вообще теряется смысл жизни, потому что какая-то там программулька от криворукого школьного сисадмина устояла перед безусловно пряморуким учеником...
Спасибо, подумаю над этим.

Quote (TimKruz)
А что она конкретно мониторит? Интересно просто. Вроде бы существуют стандартные средства мониторинга пользовательских компьютеров в сети с компьютера администратора сети.
Программа довольно проста.
Может подсматривать что происходит на экране.
Выключать монитор, отправлять сообщение, блокировать систему банером с сообщением.
Выключать/перезагружать пк.
Получать список процессов, убивать/блокировать процессы.

Дело в том, что компьютеры не всегда возможно контролировать с сетевого Администратора.
Много школ/лицеев/и т.д. ученики/учителя сидят под локальными пользователями.

Quote (TimKruz)
Чтобы не выдумывать лишние программы-костыли, нужно просто кабинеты закрывать на ключ на переменах и запрещать учителям убегать в неизвестном направлении чай пить прямо с урока, когда ученики делают, что хотят.
Вы себе как это представляете?

Добавлено (30.11.2012, 22:37)
---------------------------------------------
Quote (Archido)
ставится хук на NtClose и если туда передается любой из наших хендлов, то мы пишем в память по невалидному адресу и получаем BSOD, т.к. в kernel mode портить память нельзя категорически. Unlocker не сможет "отцепить" эти файлы, т.к. он делает это как раз при помощи закрытия всех хендлов, а мы это дело контролируем. Для защиты процесса - достаточно запомнить его PID и периодически проверять, и если его нет - то портить память и получать аналогичный BSOD

Quote (Нохчи)
зачем бсодить не понятно, просто вернуть управление и не закрывая хэндл и все.

Хм, а идея с хуком на закрытие хороша. Я устанавливал хук на клавиатуру и мышь без прав Админа. Для NtClose нужны права Админа?

Добавлено (30.11.2012, 22:42)
---------------------------------------------
Знаете, что я еще хотел реализовать. Так это смену пользователя.
Есть же программа LogMeIn. С помощью нее можно подключаться к ПК с незалогиненным пользователем.
Если так сделать и автоматом заполнять поля логина/пароля, то можно реализовать быструю смену юзера.
Дело в том, что в лицее, для которого я делаю программу, каждый класс сидит под своим юзером (например 9-А, 9-Б и т.д.).
можно было бы автоматизировать процесс смены пользователей по расписанию.


Сообщение отредактировал fireday - Пятница, 30 Ноября 2012, 22:46
НохчиДата: Пятница, 30 Ноября 2012, 22:57 | Сообщение # 14
заслуженный участник
Сейчас нет на сайте
1) Никуда инжектиться не надо, просто запустить свой собственный процесс с правами админа и сделать его критическим
2) чтобы похукать NtClose нужен дров, это не твой вариант


Многие вопросы по Windows отпадут, если посмотреть тут
TimKruzДата: Пятница, 30 Ноября 2012, 23:12 | Сообщение # 15
старожил
Сейчас нет на сайте
Quote (fireday)
Для того что бы загрузится с LiveCD так же нужны некие вещи, хотя бы привод.))

Проще всего записать образ диска на USB-флешку, а USB в школьных компьютерах точно должны быть, хотя бы 1 свободный (или мышь/клавиатуру на время загрузки отключить)... Потом по-быстрому в BIOS настройки поменять или выбрать девайс из меню выбора устройства для бута...
Quote (fireday)
Пряморукость разной степени есть.

Загрузиться с LiveCD проще (скачал - записал - воткнул - выбрал устройство), чем искать способ убить заблокированную программу в системе без админ-прав. Способ всё равно остаётся, только это надо много чего знать и понимать, а загрузить какую-нибудь WinXP LiveCD и удалить файлик любой сможет. Так что единственный эффективный способ - визуальный контроль за учениками...
Quote (fireday)
Вы себе как это представляете?

В идеальной школе компьютерный класс должен закрываться на перемену и иметь хоть какую-то защиту, учителя должны контролировать своих учеников на протяжении всего урока, ну и т.д., и т.п.... На практике всем пофиг на всё и всех. Но и особо буйных школьников-хакеров не так уж много, максимум в игрушки сидят играют, или меняют обои/заставки на какую-нибудь прикольную фигню...
Quote (fireday)
Тему создал в разделе с++, так как тут сидят самые продвинутые.

facepalm Ну тогда в "Общие обсуждения программистов". К C++ тут вообще никакого отношения нет. А люди тут (на подфоруме "Программирование") сидят одни и те же, потому что тем не так много...
Quote (fireday)
От удаления: для начала сделать файл скрытым и системным.

Совсем не нужно, достаточно поместить в папку C:/Program Files/ и запретить доступ всем, у кого права ниже админа, ко всем папкам кроме C:/Temp (где сохраняются программульки учеников и всё такое) и, если нужно - отдельного логического диска D. Исполнять программу из заблокированной на изменения папки будет по-прежнему можно, но удалить/изменить нельзя.
Quote (fireday)
анлокером

Unclocker прав админа требует, если не ошибаюсь.


firedayДата: Пятница, 30 Ноября 2012, 23:33 | Сообщение # 16
частый гость
Сейчас нет на сайте
Quote (TimKruz)
Проще всего записать образ диска на USB-флешку, а USB в школьных компьютерах точно должны быть, хотя бы 1 свободный (или мышь/клавиатуру на время загрузки отключить)... Потом по-быстрому в BIOS настройки поменять или выбрать девайс из меню выбора устройства для бута...
Quote (TimKruz)
Загрузиться с LiveCD проще (скачал - записал - воткнул - выбрал устройство), чем искать способ убить заблокированную программу в системе без админ-прав. Способ всё равно остаётся, только это надо много чего знать и понимать, а загрузить какую-нибудь WinXP LiveCD и удалить файлик любой сможет. Так что единственный эффективный способ - визуальный контроль за учениками...
Вопрос так е решаем - загрузка только с hdd. Остальное отключается. Так же биос под пароль - не загрузится с флешки/диска.
По поводу визуального контроля за учениками. А я говорил что надо обеспечить контроль так, что бы визуальный не требовался? Об этом речи не шло.
Quote (TimKruz)
В идеальной школе компьютерный класс должен закрываться на перемену и иметь хоть какую-то защиту, учителя должны контролировать своих учеников на протяжении всего урока, ну и т.д., и т.п.... На практике всем пофиг на всё и всех. Но и особо буйных школьников-хакеров не так уж много, максимум в игрушки сидят играют, или меняют обои/заставки на какую-нибудь прикольную фигню...
Как написал выше - я не говорил об визуальном контроле вообще. На счет такого что всем на всех пофиг - согласен.

Quote (TimKruz)
Ну тогда в "Общие обсуждения программистов". К C++ тут вообще никакого отношения нет. А люди тут (на подфоруме "Программирование") сидят одни и те же, потому что тем не так много...
Что же рука лицо сразу? Про продвинутость я сказал, так как обычно именно люди работающие на с++ имеют дела с подобными вещами. Да, тут действительно именно к с++ отношения нету.

Quote (TimKruz)
Совсем не нужно, достаточно поместить в папку C:/Program Files/ и запретить доступ всем, у кого права ниже админа, ко всем папкам кроме C:/Temp (где сохраняются программульки учеников и всё такое) и, если нужно - отдельного логического диска D. Исполнять программу из заблокированной на изменения папки будет по-прежнему можно, но удалить/изменить нельзя.

Да, это в порядке вещей, я так и сделаю, но все же я перестрахуюсь сделав файл скрытым и системным (привычка прятать).

Quote (TimKruz)
Unclocker прав админа требует, если не ошибаюсь.

Да, действительно требует. Я об этом думал - он там работает, однако что-то левое запустить - открывает окошко с запросом прав сетевого админа.
Если поулчится прикрутить к своей программе Админские права - проблема решена.)

Добавлено (30.11.2012, 23:33)
---------------------------------------------

Quote (Нохчи)
1) Никуда инжектиться не надо, просто запустить свой собственный процесс с правами админа и сделать его критическим
2) чтобы похукать NtClose нужен дров, это не твой вариант

2) не знал.
1) Думаю, что так и сделаю. Так же прикручу программку для проверки валидности.
"запустить свой собственный процесс с правами админа и сделать его критическим " - Обойти такое без прав админа не получится?
НохчиДата: Пятница, 30 Ноября 2012, 23:43 | Сообщение # 17
заслуженный участник
Сейчас нет на сайте
Quote (fireday)
Обойти такое без прав админа не получится?

Не получится.


Многие вопросы по Windows отпадут, если посмотреть тут
firedayДата: Суббота, 01 Декабря 2012, 15:27 | Сообщение # 18
частый гость
Сейчас нет на сайте
Quote (Нохчи)
Не получится.
Ясно, спасибо.

Quote (Archido)
Отбить желание у детишек пытаться делать плохие вещи , а так то, ессно, можно как хочешь сделать. При установке "RtlSetProcessIsCritical" ОС его откажется завершать, а при попытке завалить через отладку (SE_DEBUG_NAME) - будет BSOD. Снять можно точно также как и поставить.
А можно обойтись без BSOD? Т.е. просто заблокировать попытку закрытия/вызвать перезагрузку через 30 сек, как при закрытии некоторых сист. процессов (ее же нельзя отменить shutdown -a?)? Ведь по мимо "SE_DEBUG_NAME", есть еще куча подобных параметров. Вот только какой мне нужен не знаю.


Сообщение отредактировал fireday - Понедельник, 03 Декабря 2012, 00:10
ArchidoДата: Воскресенье, 02 Декабря 2012, 14:06 | Сообщение # 19
Сэнсэй
Сейчас нет на сайте
Quote (fireday)
Т.е. просто заблокировать попытку закрытия/вызвать перезагрузку через 30 сек, как при закрытии некоторых сист. процессов

Честно говоря - без понятия как делать "неубиваемые" системные процессы smile Про XP не скажу, но в W7 по-моему так даже и нельзя.

fireday
А винда, кстати, какая? Если семерка, то UAC включено?
Под аккаунтом "обычного" пользователя, конечно, в user mode довольно грустно (особенно в W7 c UAC). Ничего так особо и не сделаешь, нужны либо драйвер \ служба, либо получать права повыше.
Права можно прикрутить через некие костыли, вроде виндовой тулзы "runas", которая позволяет запустить любую программу от нужного пользователя (в том числе и админа), но требует явного ввода пароля (окошко). Есть надстройки над ней (CPAU, скрипты AutoIt, etc), которые позволяют "избавиться" от этого окошка, неявно вводя пароль + шифровать его... Таким образом можно запустить что угодно с необходимыми правами, вариант, конечно, так себе - но в данном случае может подойти.

В принципе, в твоем случае можно сделать небольшую софтину, контролирующую программу мониторинга и поглядывающую на файлы (на всякий случай) и предпринимающую некие действия (если что-то будет отсутствовать), запустить с повышенными правами и сделать ей RtlSetProcessIsCritical, закинуть в папку System32 и обозвать каким-нибудь очередным svchost'ом, чтобы лишнее внимания не привлекать. Если убьют - будет BSOD. Остальное убьют - можно что-нибудь попроще сделать (перезапустить, файлы из кэша скопировать, etc).

Но я бы лично делал именно BSOD конкретного процесса (инжект), ибо какого фига процессы убивать? Хотите убивать - получите и распишитесь smile . Если процесс, который проводит инжект, обладает правами админа, можно сделать простой CreateRemoteThread, куда передать адрес ф-ции LoadLibrary и параметром путь то библиотеки... несколько строк всего. Либа эта сделает процесс критическим и усе. И не за кем следить не надо.


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
firedayДата: Понедельник, 03 Декабря 2012, 00:19 | Сообщение # 20
частый гость
Сейчас нет на сайте
Archido
win 7 (32/64). UAC включен. А вообще, программа должна нормально отрабатывать на ОС начиная с XP.
Думаю, что сделаю так
Контролирующая софтина будет грузится только при старте. Проверила - выключилась. Если чего-то не хватает, она копирует и запускает.
А уже сам клиент будет защищен bsod-ом.

Добавлено (02.12.2012, 22:18)
---------------------------------------------
Quote (Archido)
При установке "RtlSetProcessIsCritical" ОС его откажется завершать, а при попытке завалить через отладку (SE_DEBUG_NAME) - будет BSOD. Снять можно точно также как и поставить.
По поводу снятия. Пожалуйста, можно по точнее.

Добавлено (02.12.2012, 22:57)
---------------------------------------------
Делаю вот так:
модуль:


Вызываю вот так.
Code
Private Sub Form_Load()
ObtenerPrivilegios SE_DEBUG_NAME
RtlSetProcessIsCritical False, False, True
End Sub


Добавлено (03.12.2012, 00:19)
---------------------------------------------
Заметил вот что - защита работает, только если вызывать ObtenerPrivilegios SE_DEBUG_NAME в событии load (я так понимаю пока форма визуально не загрузилась).
А вот снять защиту потом не получается.
Снимаю так:
Code
RtlSetProcessIsCritical False, False, False
ObtenerPrivilegios SE_ASSIGNPRIMARYTOKEN_NAME

Если делать так:
Quote (Archido)
Для защиты процесса, можно сделать инжект в необходимый процесс и выполнить там небольшой код, вызвав одну недокументированную и интересную ф-цию из ntdll - "RtlSetProcessIsCritical". При попытке убить такой процесс - результатом будет BSOD
Надо сделать две dll-ки, первая делает процесс критическим. Вторая снимает защиту. Так работать будет?


Сообщение отредактировал fireday - Понедельник, 03 Декабря 2012, 00:22
Форум игроделов » Программирование » C/C++ » Защита процесса. Защита файла (Создание защиты для неигрового проекта)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг