Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Заблокирован

Реализация нескольких функций WindowsAPI

01.05.2016, 20:47. Показов 2528. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день уважаемые пользователи, возникла проблема. Пишу ПО для защиты другого ПО(НЕ вирус, Игра) от ArtMoney, CheatEngine а также примитивных инжекторов.

В случае с инжекторами - я так понимаю, они добавляются в модули процесса. Нужно просто составить вайт лист.
Ну а вообще, я нашел что мне нужны следующие функции: ObRegisterCallbacks, VirtualProtectEx, PsSetCreateThreadNotifyRoutine и PsSetLoadImageNotifyRoutine, а также PsSetCreateProcessNotifyRoutine

Но я не нашел не одного их примера применения. Пожалуйста, кому не сложно - помогите. Напишите реализацию подгрузки(ImportDll) и строку, как правильно вызывать эти методы так, как в интернете не одного примера использования на C#
Станьте тем самым, первым А с меня несомненный плюсик и признательная благодарность.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.05.2016, 20:47
Ответы с готовыми решениями:

ProgressBar+WindowsAPI
Здравствуйте, товарищи эксперты! Помогите, пожалуйста, разобраться с проблемой. У меня есть поток, который выполняет некоторое...

Перегрузка функций. Реализация функций
Разработать функцию f(x) , которая возвращает младшую цифру натурального числа x . Вычислить с ее помощью значение выражения z= f(a) +...

Курсор внутри текстового редактора на WindowsApi
Я тут в качестве тренинга взялся текстовый редактор с подсветкой писать что бы ключевые слова выделял. Вьюер уже написал. А теперь мне...

20
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
Это то ?
https://github.com/Microsoft/W... obcallback
1
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 236
01.05.2016, 21:28
Я не системщик, да и вообще сам тока учусь. Но давайте подумаем на пальцах:
Я не понимаю, почему ваше ПО будет способно не давать менять память другого процесса, плохому
ПО если плохое ПО запущенно будет под админом ?
Вот если ваша игра запущена будет под админом, а плохое по, под юзером, тогда плохое ПО не сможет
изменить память процесса игры. Но тогда этот вопрос решается на уровне админства ПК с паролями.

Добавлено через 1 минуту
Если же ПК загружен под админом, и соответственно игра тоже под админом, и плохое ПО тоже под админом, и
сторожевое по тоже под админом, тот как сторожевое по сможет запретить изменять память плохому по, в процессе защищаемого по ?
Тогда бы уже давно антивирусы могли бы охранять выбранное нами, в опциях, ПО. И оно бы не было источником распространения заразы в компах. Так ?

Добавлено через 3 минуты
Цитата Сообщение от afront Посмотреть сообщение
https://github.com/Microsoft/Windows...ral/obcallback
А развье когда плохое по прочтет хэндл хорошего по, он не сделает это через ObRegisterCallbacks ?
Не думаю что на гитхабе лежит революционный антихакер...
0
Заблокирован
01.05.2016, 23:46  [ТС]
Смысл да, таков. Что игра должна быть под админом как и ПО.
Просто очень распространенный способ в игре без защиты сейчас - подменять SteamID через артмани и ему подобным.
А также юзать читы, которые в 95% случаев - инжектят длл.

Добавлено через 58 минут
я думал, из всех кто тут, хоть кто нибудь знает =(
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.05.2016, 00:12
Цитата Сообщение от TheRyuzaki Посмотреть сообщение
я думал, из всех кто тут, хоть кто нибудь знает =(
TheRyuzaki, тебе уже ответили выше. Ссылка в сообщении #4.
Все эти функции очень простые, описание есть в MSDN.
Если с разработкой драйверов дружишь, написать будет несложно.

Цитата Сообщение от Леманофф Посмотреть сообщение
Если же ПК загружен под админом, и соответственно игра тоже под админом, и плохое ПО тоже под админом, и
сторожевое по тоже под админом, тот как сторожевое по сможет запретить изменять память плохому по, в процессе защищаемого по ?
Ну во-первых, ObRegisterCallbacks и прочие функции как раз для таких ситуаций и задуманы.
Во-вторых, "админ-не админ" - это уже немного устаревшая парадигма, сейчас на Windows 8.1 и
выше есть, например, защищенные процессы, которые нельзя открыть ни с правами админа, ни
даже LocalSystem.
1
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 236
02.05.2016, 09:07
Цитата Сообщение от Убежденный Посмотреть сообщение
сейчас на Windows 8.1 и
выше есть, например, защищенные процессы, которые нельзя открыть ни с правами админа, ни
даже LocalSystem.
Защищенные процессы любых пользовательских программ или процессы ОС ? Если ядро не охраняет специально, какой то процесс, то как его защищать то ? Даже если где-то есть права на доступ, почему бы их не затереть эти права другими (своими) ?
Не ужели хакерам, которые используют отладчики, и прочие тулзы по RAM, пришел конец ?
Если можно защитить желаемый процесс так хорошо, с помощью API OS, Тогда можно и вирус и троян защитить, что бы антивирус его не убил ?

Откуда ос знает, что процесс1 надо защищать от процесса 2, а процесс 2 тогда защищать, в свою очередь от чего то еще, не надо ?

Добавлено через 17 минут
Цитата Сообщение от TheRyuzaki Посмотреть сообщение
Смысл да, таков. Что игра должна быть под админом как и ПО.
Просто очень распространенный способ в игре без защиты сейчас - подменять SteamID через артмани и ему подобным.
А также юзать читы, которые в 95% случаев - инжектят длл.
Добавлено через 58 минут
я думал, из всех кто тут, хоть кто нибудь знает =(
А вы подумайте, почему другие фирмы, которые тратят миллионы на игру, не делают как вы хотите ?
Античит в сетевых играх делают, имхо, на уровне логики на сервере. Например, что пуля не может вдруг повернуть за угол, или игрок не может резко переместиться в пространстве, если значения интерполяции не зашумляются перепадом пинга, а если есть большой перепад - отключить клиента ... и т.д. Я не видел что бы делали сторожевиков другие разрабы. Значит другие что-то знают уже лучше нас с вами ?

Попробуйте лучше сделать обфускацию на вашем, логическом уровне, ваших данных в защищаемом по. Ну т.е. переменные хранить в разных местах, в разных форматах (string и double) , в контейнерах..Перепроверять в разных местах, восстанавливать, считывать в разных местах, создавать фиктивные операции, шифровать, перемещать в памяти. Что то сбрасывать на винт, если редко используется, в зашифрованом виде, и восстанавливать тупо...
Как-то так...

Если можно защитить желаемый процесс пользователя так хорошо, с помощью API OS, Тогда можно и вирус и троян защитить, что бы антивирус его не убил ?
По моему для абсолютной защиты процесса, логично получить особое попечительство от ОС. Тогда у ОС, должен быть алгоритм генерации уникального ID, которое в свою очередь должно быть выдано мелокомягкими, этому пользовательскому процессу, как некий код, который говорит, что процесс добрый, хороший и его нужно особо хорошо защищать. Если же ВСЁ кодеры могут защищать свое по через функцию API, тогда и трояноделатели и прочие сомнительные личности защищали бы свои гадские поделия тоже.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.05.2016, 10:42
Цитата Сообщение от Леманофф Посмотреть сообщение
Защищенные процессы любых пользовательских программ или процессы ОС ?
Защищаются обычные пользовательские процессы. Не все, конечно, а только те,
которые собраны и подписаны специальным образом.

Цитата Сообщение от Леманофф Посмотреть сообщение
Не ужели хакерам, которые используют отладчики, и прочие тулзы по RAM, пришел конец ?
Конечно же нет.
Любые защиты в конечном счете ломаются. Просто одно дело - запуск своего
процесса под админом с включенной привилегией отладки, когда можно открывать
чужие процессы с нужными правами, и совсем другое дело - внедрение в ядро и
отключение защиты процесса через патч системных структур.

Цитата Сообщение от Леманофф Посмотреть сообщение
Если можно защитить желаемый процесс так хорошо, с помощью API OS, Тогда можно и вирус и троян защитить, что бы антивирус его не убил ?
Для этого троянец должен получить специальную сигнатуру от Microsoft.
А дают такую сигнатуру далеко не всем, у MS есть специальные требования
на этот счет. Кроме того, даже для "обычной" ObRegisterCallbacks нужна
цифровая подпись.

Цитата Сообщение от Леманофф Посмотреть сообщение
Откуда ос знает, что процесс1 надо защищать от процесса 2, а процесс 2 тогда защищать, в свою очередь от чего то еще, не надо ?
ОС не знает. Она просто делает то, что ей говорят.

Цитата Сообщение от Леманофф Посмотреть сообщение
По моему для абсолютной защиты процесса, логично получить особое попечительство от ОС. Тогда у ОС, должен быть алгоритм генерации уникального ID, которое в свою очередь должно быть выдано мелокомягкими, этому пользовательскому процессу, как некий код, который говорит, что процесс добрый, хороший и его нужно особо хорошо защищать.
Именно так это и происходит. Чтобы сделать защищенный процесс на Windows 8.1 и выше
(так называемый 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
Цитата Сообщение от Убежденный Посмотреть сообщение
Для этого троянец должен получить специальную сигнатуру от Microsoft.
А дают такую сигнатуру далеко не всем, у MS есть специальные требования
на этот счет. Кроме того, даже для "обычной" ObRegisterCallbacks нужна
цифровая подпись.
Цитата Сообщение от Убежденный Посмотреть сообщение
Именно так это и происходит. Чтобы сделать защищенный процесс на Windows 8.1 и выше
(так называемый Protected Process Light), нужна специальная сигнатура от Microsoft, а
ее выдают только AV-компаниям с хорошей репутацией и более 10 лет на рынке.
Для ObRegisterCallback нужна цифровая подпись для загрузки драйвера.
Чтобы отсечь ненужных, этого хватает в большинстве случаев.
Спасибо, за хороший ликбез!

Добавлено через 7 минут
TheRyuzaki, вы создали хорошую тему. Очень интересно почитать её!
Кстати, а вы не думали, что еще есть просто EXE и ресурсы вашего защищаемого ПО. Пока оно не запущенно, и ваг охранник не запущен, это просто байты на носителе. Там же можно в них поковыряться и пропатчить. Тогда и процесс защищать бесполезно, если на уровне бинарника в файле, будут сделаны хакерские изменения. Опять мы возвращаемся к сильной обфускации, шифрованию переменных, дублированию, резервированию..Это всё конечно можно раскрутить в отладчике, и в мониторинге - но имхо, от читеров-школьников, скрипткиддисов поможет.

Читерство в battlefiled 4, например выявляется самим серверным ПО, которое в т.ч. анализирует действия клиента на сервере, и разной "физике", боя и ситуаций.
Выявление просиходит за счет того, что код обнаруживает последовательность действий, которая не может быть в "реальности" мира игры, и в реальности вообще. Как-то так...
0
Заблокирован
02.05.2016, 11:33  [ТС]
Нет, тут народ такого не умеет. Тут нужна приметивная защита.
0
10 / 10 / 3
Регистрация: 28.04.2016
Сообщений: 236
02.05.2016, 11:53
Цитата Сообщение от TheRyuzaki Посмотреть сообщение
И да, в сообщении #4 там на плюсах
Конечно, потому что там натив.
А на шарпах у ваc IL. Посмотрите на него. Да он легко раскручивается обратно в исходник.
Ваш EXE на IL это не EXE по сути, а просто кусочек EXE, который умеет орать под дос, что программе нужен Windows, ну и еще,если на компе есть CRL NET, то пихнуть все остальное в неё. и более ничего. Далее идет байт код IL - то самое, что вы накодили в шапрах. IL раскручивается обратно в исходник легко.
Вашу сборку просто раскрутят в исходник, поменяют пару строк, и откомпилят заново.
.NET= OpenSource.
Конечно есть обфускаторы, котороые разрабы обноволяют часто, как только выходит деобфускаторы под них. Но имхо, это от детей только. Ну вот IL Protector был ничего так...Сейчас не знаю...
Пишите серевную часть, и часть важного кода крутите на сервере. Так же на сервере делайте всякие логические проверки на целостность ЛОГИКИ клиентских алгоритмов.

ВСЕ ИМХО. Прошу не бить. Я сам тока началь кодить , как месяц.

Добавлено через 9 минут
Цитата Сообщение от TheRyuzaki Посмотреть сообщение
Тут нужна приметивная защита.
Давайте представим упрощенно.
У вас в игре есть герой. И у него есть деньги. Счет.
Когда герой продает что-то или выполняет что-то, покупает - счет меняется.
Активный чит найдет ячейку, которая хранит число денег. И будет с интревалом в ..мсекунд писать в ней 1000000 денег. Как этого избежать ?
Пишите журнал истории изменения счета героя. Т.е. у вас будет приход, расход, и код операции.
Конвертируйте это строковый тип. Шифруйте. Храните в разных классах.
При покупке героям стаффа, и овладевания героем новых свойств за счет стаффа,ссылайтесь не на его счет, а на журналы, и операйции в них. Т.е. вычисляейте сумму на счете по опрерациям, а не тупо берите ее из глобальной переменной. Также ведите другие похожие операции, но и делайте с ними тоже логические обработки, но в итоге, не давайте им влиять на героя - это фиктивные обманные операции. Как-то так..Это тоже примитивная защита.
0
Заблокирован
02.05.2016, 15:08  [ТС]
Цитата Сообщение от Леманофф Посмотреть сообщение
У вас в игре есть герой. И у него есть деньги. Счет.
Всё не много сложноее. Есть игра - Rust. Я её сам раскручиваю до исходников. Так как проект для которого я работаю - имеет ряд серверов. И нужна защита. Саму игру переписывать не резонно так как игра обновляется каждую неделю.
Я патчу игру своим доп кодом на уровне основной DLL, пишу свою DLL и вот так оно работает. Я достаточно долго уже ковыряю эту тему и уже писал несколько версий, и у меня вышло 1500+ коннектов по TCP каналу на сервер авторизации античита и анализа. Были проблемы при таком онлайне. Поэтому сейчас надо перенести на клиенскую часть всё, попытаться урезать общими способами всё, сделать скриншотер и обуфицировать всё что бы было не всё так просто а нужно было попотеть. И вуаля! Хороший античит готов.
У меня есть множество наработок - как можно сделать и есть опыт в ковырянии всего. Я подхожу из смысла - что мне самому должно быть невозможно или очень трудоёмко всё это дело обойти. а вкончном итоге - это самообновляющийся античит с сбором информации и статистики о запущеных модулях процесса и т д. И как только есть подозрение что кто то читер - я это фикшу достаточно быстро - тем самым делая работу читоделам достаточно трудоёмкой.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
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  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
1. Устанавливал драйверные перехватчики на функции создания и завершения процесса,
потока и загрузки модулей. Таким образом, можно было мониторить запуск читов, создание
удаленных потоков (CreateRemoteThread) и загрузку "чужих" dll в процесс.
Эт то всё хорошо, вот только примеров вообще нету не где =( Копай как хочешь - называется.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
02.05.2016, 20:24
Цитата Сообщение от TheRyuzaki Посмотреть сообщение
примеров вообще нету не где
Просто кое-кто упорно не хочет их замечать:
Реализация нескольких функций WindowsAPI

Цитата Сообщение от TheRyuzaki Посмотреть сообщение
Копай как хочешь - называется.
Именно так. Какой смысл в защите, если примеры валяются на каждом углу, а
раскопать принципы работы сможет любой школьник?
1
Заблокирован
03.05.2016, 00:56  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
Просто кое-кто упорно не хочет их замечать:
Реализация нескольких функций WindowsAPI
Я всегда знал что вы компетентны. Если бы я мог юзать тот пример на C то не создавал бы тему как минимум, а так же даже если бы создал то не стал бы продолжать дальше четвертого поста. А вы милый друг. Помоему тут лишь с одной целью, всем своим видом показать "Прикиньте, я знаю но не скажу, можете и сами покопаться вон там, но я умею и мне лучше написать гору текста чем пару строк. Но я всё ровно умею а вы нет." В вашем случае. Что вы написали - что бы вы не написали. Лишь бд от ваших сообщений апнула лишние пару КБ
0
9 / 9 / 7
Регистрация: 15.03.2015
Сообщений: 34
03.05.2016, 02:20
На сколько я знаю, Cheat Engine уже давно умеет работать в режиме ядра и его не удивить тем что вы не дадите читать/записывать память в пользовательском режиме. А от чтения в режиме ядра уже ничего не сделать.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
03.05.2016, 10:25
Лучший ответ Сообщение было отмечено edward_freedom как решение

Решение

Цитата Сообщение от TheRyuzaki Посмотреть сообщение
Если бы я мог юзать тот пример на C то не создавал бы тему как минимум, а так же даже если бы создал то не стал бы продолжать дальше четвертого поста.
Так уж принято в Windows, что драйверы в подавляющем большинстве случаев пишут на C.
Портировать их на .NET не получится по причинам архитектурного характера (CLR в
ядре не работает).

Цитата Сообщение от TheRyuzaki Посмотреть сообщение
А вы милый друг. Помоему тут лишь с одной целью, всем своим видом показать "Прикиньте, я знаю но не скажу, можете и сами покопаться вон там, но я умею и мне лучше написать гору текста чем пару строк. Но я всё ровно умею а вы нет."
Увы, парой строк там далеко не обойтись: регистрация драйвера, реализация поддержки
ввода-вывода, реализация калбэков, система исключений, хранение и отправка данных и т.п.
Я не виноват, что в Гугле нет готовых примеров античитов со всеми наворотами, какие только
возможны, а софт такого уровня писать достаточно долго и тяжело. Документацию и примеры
можно найти в MSDN, с вопросами по конкретным проблемам - welcome на форум, с
удовольствием помогу. А за халявой - это в другое место.

Цитата Сообщение от TheRyuzaki Посмотреть сообщение
Я всегда знал что вы компетентны.
Отписался от темы. Кто хочет - тот ищет, учится и находит.
Кто нет - тот ноет на форуме, какие кругом все дураки.
Удачи с таким подходом.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.05.2016, 10:25
Помогаю со студенческими работами здесь

Реализация функций
Здравствуйте, помогите пожалуйста дописать программу, нужно чтобы на кнопки можно было расшифровать и зашифровать, было 4 поля:1- ввод...

Реализация функций
Подскажите пожалуйста как это расписать в C#

Реализация функций
Помогите, пожалуйста, реализовать методы классов (заголовки даны в biTree.g) Я плохо шарю, а завтра сдавать! Очень надо( Дан: biTree.h...

Реализация проверок в нескольких потоках
В цикле идет проверка. как реализовать в нескольких потоках? public string WhoIsWho(string domen) { ...

Реализация нескольких окон в программе
Всем привет. В общем есть у меня меню из n пунктов и мне нужно чтобы при нажатии на один из пунктов, текущий виджет с меню скрывался и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
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 и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru