![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| ApolloKiD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 7.6.2011 Где: Молдавия Репутация: нет Всего: нет |
Доброго времени суток, возникла проблема, я пишу Анти-Чит для онлайн игры, анти-чит работает нормально, но есть уязвимость, можно заморозить поток - SuspendThread или убить его TerminateThread и тогда тред с лупом анти-чита, работать не будет, и читеры смогут играть свободно с читами.
Вот и вопрос: как можно сделать так, чтобы не смогли замораживать или убивать поток? Если можно приведите примеры. Спасибо заранее. |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Хукать SuspendThread и TerminateThread т.е. подменять на свои процедуры. В этих процедурах проверять идет обращение к твоему процесу ???? да - то ничего не делать иначе вызвать настоящие SuspendThread и TerminateThread.
Мне кажется твой процесс проще грохнуть. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| ApolloKiD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 7.6.2011 Где: Молдавия Репутация: нет Всего: нет |
если грохнуть процесс - закроется игра, а пример с хуком можно?
|
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
http://www.rsdn.ru/article/qna/baseserv/hookapi.xml
http://habrahabr.ru/blogs/cpp/90377/ Это сообщение отредактировал(а) Dem_max - 10.9.2011, 14:07 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| ApolloKiD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 7.6.2011 Где: Молдавия Репутация: нет Всего: нет |
я читал что надо не хукать, а ставить параметры безопасности при создании потока, с помощью первого параметра LPSECURITY_ATTRIBUTES lpThreadAttributes.
если можно, покажите кто-то пример созданого потока с параметрами безопасности. Это сообщение отредактировал(а) ApolloKiD - 11.9.2011, 10:47 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Вам надо создать Security Descriptor с запретом для всех (само создание SD абсолютно не зависит от того, где вы собираетесь его применять). Вот пример создания SD (надеюсь вы сможете адаптировать его под свой случай) |
|||
|
||||
| ApolloKiD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 7.6.2011 Где: Молдавия Репутация: нет Всего: нет |
Прошу прощения, я в C++ не очень разбераюсь, но когда я создаю поток
Поток не запускается не знаю почему. надо просто сделать чтобы не смогли заморозить поток или убить его. Если вам не трудно и есть пару минут, можете показать что и как, пожалуйста. Это сообщение отредактировал(а) ApolloKiD - 11.9.2011, 23:29 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Более эффективно не сопротивляться явно закрытию проверяющего потока, а запустить второй (третий... десятый...) которые будут просто проверять, что проверка работает. А если нет - запускать снова. Ну или карательное что-нибудь, по желанию. Такая тактика обычно эффективнее, чем прямое противодействие, а код, который непосредственно не оказывает влияния на защищаемые сущности, обнаружить сложнее. Проверять, что проверка работает тоже лучше не прямо, а по каким-нибудь косвенным признакам...
Есть еще механизм тайм-бомб. Коротко, суть в том, что запускается таймер, который потихоньку сбрасывает некую переменную. Когда переменная дойдет до 0, делаешь что-то нехорошее (для пользователя). Например убиваешь процесс с разрушением стека. А поток проверки эту нехорошую переменную восстанавливает, кроме прочего. Т.е. работает проверка - все хорошо, перестает - все рушится, но не сразу, а через какое-то время, причем связь эту обнаружить непросто. -------------------- ... |
|||
|
||||
| ApolloKiD |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 7.6.2011 Где: Молдавия Репутация: нет Всего: нет |
WaitForSingleObject(hEvent,1);
ResumeThread(hThread); От Suspend спасает, а от TerminateThread нет, я незнаю как сделать проверку, если Поток убит, чтобы его запустили снова. |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 13 Всего: 85 |
||||
|
||||
| ApolloKiD |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 7.6.2011 Где: Молдавия Репутация: нет Всего: нет |
спасибо, проблему практически решил, но для полной безопасности надо ещё аттрибуты безопасности =/ и ещё 1 проблемка, каждый поток кушает по 20 ЦП - в итоге у меня запущенно 3 потока + игра кушает 50 цп, нельзя както снизить нагрузку со стороны потоков?
Это сообщение отредактировал(а) ApolloKiD - 12.9.2011, 12:55 |
||||||
|
|||||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
||||
|
||||
| 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. |