|
Заблокирован
|
|
Реализация нескольких функций WindowsAPI01.05.2016, 20:47. Показов 2528. Ответов 20
Метки нет (Все метки)
Добрый день уважаемые пользователи, возникла проблема. Пишу ПО для защиты другого ПО(НЕ вирус, Игра) от ArtMoney, CheatEngine а также примитивных инжекторов.
В случае с инжекторами - я так понимаю, они добавляются в модули процесса. Нужно просто составить вайт лист. Ну а вообще, я нашел что мне нужны следующие функции: ObRegisterCallbacks, VirtualProtectEx, PsSetCreateThreadNotifyRoutine и PsSetLoadImageNotifyRoutine, а также PsSetCreateProcessNotifyRoutine Но я не нашел не одного их примера применения. Пожалуйста, кому не сложно - помогите. Напишите реализацию подгрузки(ImportDll) и строку, как правильно вызывать эти методы так, как в интернете не одного примера использования на C# Станьте тем самым, первым А с меня несомненный плюсик и признательная благодарность.
0
|
|
| 01.05.2016, 20:47 | |
|
Ответы с готовыми решениями:
20
Перегрузка функций. Реализация функций Курсор внутри текстового редактора на WindowsApi |
|
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 236
|
|
| 01.05.2016, 21:14 | |
|
Действительно интересно, а как защитится от "плохое ПО" если "плохое ПО" запущен с правами админа ?
0
|
|
|
Заблокирован
|
|
| 01.05.2016, 21:17 [ТС] | |
|
Да, это можно устроить. Полный доступ есть к сорцам игры. Но я буду писать связку из 2х ПО. Игра + ПО.
0
|
|
|
1498 / 1213 / 821
Регистрация: 29.02.2016
Сообщений: 3,631
|
|
| 01.05.2016, 21:21 | |
|
1
|
|
|
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 236
|
||
| 01.05.2016, 21:28 | ||
|
Я не системщик, да и вообще сам тока учусь. Но давайте подумаем на пальцах:
Я не понимаю, почему ваше ПО будет способно не давать менять память другого процесса, плохому ПО если плохое ПО запущенно будет под админом ? Вот если ваша игра запущена будет под админом, а плохое по, под юзером, тогда плохое ПО не сможет изменить память процесса игры. Но тогда этот вопрос решается на уровне админства ПК с паролями. Добавлено через 1 минуту Если же ПК загружен под админом, и соответственно игра тоже под админом, и плохое ПО тоже под админом, и сторожевое по тоже под админом, тот как сторожевое по сможет запретить изменять память плохому по, в процессе защищаемого по ? Тогда бы уже давно антивирусы могли бы охранять выбранное нами, в опциях, ПО. И оно бы не было источником распространения заразы в компах. Так ? Добавлено через 3 минуты Не думаю что на гитхабе лежит революционный антихакер...
0
|
||
|
Заблокирован
|
|
| 01.05.2016, 23:46 [ТС] | |
|
Смысл да, таков. Что игра должна быть под админом как и ПО.
Просто очень распространенный способ в игре без защиты сейчас - подменять SteamID через артмани и ему подобным. А также юзать читы, которые в 95% случаев - инжектят длл. Добавлено через 58 минут я думал, из всех кто тут, хоть кто нибудь знает =(
0
|
|
|
Ушел с форума
|
|||
| 02.05.2016, 00:12 | |||
|
Все эти функции очень простые, описание есть в MSDN. Если с разработкой драйверов дружишь, написать будет несложно. Во-вторых, "админ-не админ" - это уже немного устаревшая парадигма, сейчас на Windows 8.1 и выше есть, например, защищенные процессы, которые нельзя открыть ни с правами админа, ни даже LocalSystem.
1
|
|||
|
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 236
|
|||
| 02.05.2016, 09:07 | |||
|
Не ужели хакерам, которые используют отладчики, и прочие тулзы по RAM, пришел конец ? Если можно защитить желаемый процесс так хорошо, с помощью API OS, Тогда можно и вирус и троян защитить, что бы антивирус его не убил ? Откуда ос знает, что процесс1 надо защищать от процесса 2, а процесс 2 тогда защищать, в свою очередь от чего то еще, не надо ? Добавлено через 17 минут Античит в сетевых играх делают, имхо, на уровне логики на сервере. Например, что пуля не может вдруг повернуть за угол, или игрок не может резко переместиться в пространстве, если значения интерполяции не зашумляются перепадом пинга, а если есть большой перепад - отключить клиента ... и т.д. Я не видел что бы делали сторожевиков другие разрабы. Значит другие что-то знают уже лучше нас с вами ? Попробуйте лучше сделать обфускацию на вашем, логическом уровне, ваших данных в защищаемом по. Ну т.е. переменные хранить в разных местах, в разных форматах (string и double) , в контейнерах..Перепроверять в разных местах, восстанавливать, считывать в разных местах, создавать фиктивные операции, шифровать, перемещать в памяти. Что то сбрасывать на винт, если редко используется, в зашифрованом виде, и восстанавливать тупо... Как-то так... Если можно защитить желаемый процесс пользователя так хорошо, с помощью API OS, Тогда можно и вирус и троян защитить, что бы антивирус его не убил ? По моему для абсолютной защиты процесса, логично получить особое попечительство от ОС. Тогда у ОС, должен быть алгоритм генерации уникального ID, которое в свою очередь должно быть выдано мелокомягкими, этому пользовательскому процессу, как некий код, который говорит, что процесс добрый, хороший и его нужно особо хорошо защищать. Если же ВСЁ кодеры могут защищать свое по через функцию API, тогда и трояноделатели и прочие сомнительные личности защищали бы свои гадские поделия тоже.
0
|
|||
|
Ушел с форума
|
||||||
| 02.05.2016, 10:42 | ||||||
|
которые собраны и подписаны специальным образом. Любые защиты в конечном счете ломаются. Просто одно дело - запуск своего процесса под админом с включенной привилегией отладки, когда можно открывать чужие процессы с нужными правами, и совсем другое дело - внедрение в ядро и отключение защиты процесса через патч системных структур. А дают такую сигнатуру далеко не всем, у MS есть специальные требования на этот счет. Кроме того, даже для "обычной" ObRegisterCallbacks нужна цифровая подпись. (так называемый Protected Process Light), нужна специальная сигнатура от Microsoft, а ее выдают только AV-компаниям с хорошей репутацией и более 10 лет на рынке. Для ObRegisterCallback нужна цифровая подпись для загрузки драйвера. Чтобы отсечь ненужных, этого хватает в большинстве случаев.
2
|
||||||
|
Заблокирован
|
|
| 02.05.2016, 11:09 [ТС] | |
|
У меня цифровой подписи нет, с драйверами не когда в жизни не работал. Лишь реализовывал различные лаунчеры, боты и т д. Всё более чем примитивно.
Поэтому я и попросил, пример ImportDLL + метод который получает + сигнатуру если требуется хотя бы того кто знает хотя бы одну функция. А что касается серверных проверок - то всё это тяжело для сервера. Игра на Unity3d и инжектят простые Unity скрипты которые делают различные не приятные вещи от мала до велика. Даже тот же ESP не приятен. Вот к примеру, какие варианты есть что бы избавиться от ESP ? так как все читы в основном на нем и основываются. Я вот сейчас собираюсь составить вайт лист модулей и записать их зашифрованным видом в файлик. А также собрать сумарный хеш всех файлов игры и тоже засунуть в файлик. И при запуске игры чекать. А нужные лозейки обуфицировать. Я разговаривал с одним из читоделов и у него знания кодинга, как первокурсника. Они берут готовые наработки и модифицируют их, или просто инжектят DLL с примитивными Unity скриптами. А также есть беда с ArtMoney и ему подобными. Они взламывают свой индефикатор и разбаниваются таким образом. Тут я конечно могу написать и защитить индификатор но там сложно в игре это и не совсем удобно. Проще было бы избавиться от чтения и записи памяти процесса со стороны. Добавлено через 3 минуты И да, в сообщении #4 там на плюсах. Где я вообще не очень понял. Что и как. Так как там нету таких вещей как DLL импорт и структуры уже где то изначально заложены - как я понял.
0
|
|
|
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 236
|
|||
| 02.05.2016, 11:18 | |||
|
Добавлено через 7 минут TheRyuzaki, вы создали хорошую тему. Очень интересно почитать её! Кстати, а вы не думали, что еще есть просто EXE и ресурсы вашего защищаемого ПО. Пока оно не запущенно, и ваг охранник не запущен, это просто байты на носителе. Там же можно в них поковыряться и пропатчить. Тогда и процесс защищать бесполезно, если на уровне бинарника в файле, будут сделаны хакерские изменения. Опять мы возвращаемся к сильной обфускации, шифрованию переменных, дублированию, резервированию..Это всё конечно можно раскрутить в отладчике, и в мониторинге - но имхо, от читеров-школьников, скрипткиддисов поможет. Читерство в battlefiled 4, например выявляется самим серверным ПО, которое в т.ч. анализирует действия клиента на сервере, и разной "физике", боя и ситуаций. Выявление просиходит за счет того, что код обнаруживает последовательность действий, которая не может быть в "реальности" мира игры, и в реальности вообще. Как-то так...
0
|
|||
|
Заблокирован
|
|
| 02.05.2016, 11:33 [ТС] | |
|
Нет, тут народ такого не умеет. Тут нужна приметивная защита.
0
|
|
|
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 236
|
|||
| 02.05.2016, 11:53 | |||
|
А на шарпах у ваc IL. Посмотрите на него. Да он легко раскручивается обратно в исходник. Ваш EXE на IL это не EXE по сути, а просто кусочек EXE, который умеет орать под дос, что программе нужен Windows, ну и еще,если на компе есть CRL NET, то пихнуть все остальное в неё. и более ничего. Далее идет байт код IL - то самое, что вы накодили в шапрах. IL раскручивается обратно в исходник легко. Вашу сборку просто раскрутят в исходник, поменяют пару строк, и откомпилят заново. .NET= OpenSource. Конечно есть обфускаторы, котороые разрабы обноволяют часто, как только выходит деобфускаторы под них. Но имхо, это от детей только. Ну вот IL Protector был ничего так...Сейчас не знаю... Пишите серевную часть, и часть важного кода крутите на сервере. Так же на сервере делайте всякие логические проверки на целостность ЛОГИКИ клиентских алгоритмов. ВСЕ ИМХО. Прошу не бить. Я сам тока началь кодить , как месяц. Добавлено через 9 минут У вас в игре есть герой. И у него есть деньги. Счет. Когда герой продает что-то или выполняет что-то, покупает - счет меняется. Активный чит найдет ячейку, которая хранит число денег. И будет с интревалом в ..мсекунд писать в ней 1000000 денег. Как этого избежать ? Пишите журнал истории изменения счета героя. Т.е. у вас будет приход, расход, и код операции. Конвертируйте это строковый тип. Шифруйте. Храните в разных классах. При покупке героям стаффа, и овладевания героем новых свойств за счет стаффа,ссылайтесь не на его счет, а на журналы, и операйции в них. Т.е. вычисляейте сумму на счете по опрерациям, а не тупо берите ее из глобальной переменной. Также ведите другие похожие операции, но и делайте с ними тоже логические обработки, но в итоге, не давайте им влиять на героя - это фиктивные обманные операции. Как-то так..Это тоже примитивная защита.
0
|
|||
|
Заблокирован
|
||
| 02.05.2016, 15:08 [ТС] | ||
|
Я патчу игру своим доп кодом на уровне основной DLL, пишу свою DLL и вот так оно работает. Я достаточно долго уже ковыряю эту тему и уже писал несколько версий, и у меня вышло 1500+ коннектов по TCP каналу на сервер авторизации античита и анализа. Были проблемы при таком онлайне. Поэтому сейчас надо перенести на клиенскую часть всё, попытаться урезать общими способами всё, сделать скриншотер и обуфицировать всё что бы было не всё так просто а нужно было попотеть. И вуаля! Хороший античит готов. У меня есть множество наработок - как можно сделать и есть опыт в ковырянии всего. Я подхожу из смысла - что мне самому должно быть невозможно или очень трудоёмко всё это дело обойти. а вкончном итоге - это самообновляющийся античит с сбором информации и статистики о запущеных модулях процесса и т д. И как только есть подозрение что кто то читер - я это фикшу достаточно быстро - тем самым делая работу читоделам достаточно трудоёмкой.
0
|
||
|
Ушел с форума
|
|
| 02.05.2016, 17:04 | |
|
Я для одного проекта как-то делал примерно следующую защиту:
1. Устанавливал драйверные перехватчики на функции создания и завершения процесса, потока и загрузки модулей. Таким образом, можно было мониторить запуск читов, создание удаленных потоков (CreateRemoteThread) и загрузку "чужих" dll в процесс. 2. Все подозрительные события фиксировались в лог, который шифровался и отправлялся на сервер. На сервере специальные скрипты и парсеры анализировали активность пользователя и если было обнаружено нарушение, то пользователя банили, причем не сразу, а спустя определенный промежуток времени (рандомно). 3. Сам античит был защищен драйвером с помощью ObRegisterCallbacks, также он защищал от модификаций некоторые процессы. ArtMoney и т.п. сразу обломались. 4. На Windows 8.1 и выше мы дополнительно использовали для некоторых игр так называемые mitigation policies (защита процесса, обеспеченная ОС), а именно - запрет динамической генерации кода в процессе (обычно используется в инжекторах) и запрет загрузки любых dll, кроме тех, что подписаны Microsoft. 5. Сам античит был накрыт протектором и маскировался под компонент ОС. Вдобавок к написанному, там использовались и другие техники защиты, в том числе и на игровых серверах, но я о них не знаю, т.к. их писали другие разработчики.
1
|
|
|
Заблокирован
|
||
| 02.05.2016, 20:19 [ТС] | ||
|
0
|
||
|
Ушел с форума
|
|||
| 02.05.2016, 20:24 | |||
|
Реализация нескольких функций WindowsAPI раскопать принципы работы сможет любой школьник?
1
|
|||
|
Заблокирован
|
||
| 03.05.2016, 00:56 [ТС] | ||
Я всегда знал что вы компетентны. Если бы я мог юзать тот пример на C то не создавал бы тему как минимум, а так же даже если бы создал то не стал бы продолжать дальше четвертого поста. А вы милый друг. Помоему тут лишь с одной целью, всем своим видом показать "Прикиньте, я знаю но не скажу, можете и сами покопаться вон там, но я умею и мне лучше написать гору текста чем пару строк. Но я всё ровно умею а вы нет." В вашем случае. Что вы написали - что бы вы не написали. Лишь бд от ваших сообщений апнула лишние пару КБ
0
|
||
|
9 / 9 / 7
Регистрация: 15.03.2015
Сообщений: 34
|
|
| 03.05.2016, 02:20 | |
|
На сколько я знаю, Cheat Engine уже давно умеет работать в режиме ядра и его не удивить тем что вы не дадите читать/записывать память в пользовательском режиме. А от чтения в режиме ядра уже ничего не сделать.
0
|
|
|
Ушел с форума
|
||||
| 03.05.2016, 10:25 | ||||
Сообщение было отмечено edward_freedom как решение
РешениеПортировать их на .NET не получится по причинам архитектурного характера (CLR в ядре не работает). ввода-вывода, реализация калбэков, система исключений, хранение и отправка данных и т.п. Я не виноват, что в Гугле нет готовых примеров античитов со всеми наворотами, какие только возможны, а софт такого уровня писать достаточно долго и тяжело. Документацию и примеры можно найти в MSDN, с вопросами по конкретным проблемам - welcome на форум, с удовольствием помогу. А за халявой - это в другое место. Кто нет - тот ноет на форуме, какие кругом все дураки. Удачи с таким подходом.
1
|
||||
| 03.05.2016, 10:25 | |
|
Помогаю со студенческими работами здесь
20
Реализация функций
Реализация функций Реализация проверок в нескольких потоках Реализация нескольких окон в программе Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|