RU/Полный античит MTA для форк-проектов: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
Полный античит МТА для форков.
__NOTOC__ {{Примечание|Информация на этой странице не относится к официальным сборкам MTA.}}


Source: English wiki page at https://wiki.multitheftauto.com/wiki/Forks_Full_AC
Форки MTA, которым недостаточно использовать "обычный netc для форков" (из bdata/netc.dll), как описано на вики-странице [[Forks]], из-за того, что он предлагает очень ограниченную античит-защиту, могут изучить возможности использования нового netc варианта: "полного античита для форков". Это, однако, имеет свои ограничения, относящиеся к особенностям вашего форк-проекта и реализации, которые нелегко объяснить, но эта страница стремится сделать это как можно точнее.


__NOTOC__ {{Примечание|Информация на этой странице не относится к официальным сборкам MTA.}}
''Эта операция превратит ваш форк в проект с "надлежащим античитом, основанным на методе исправлений", как описано в спойлере в этой теме: https://forum.multitheftauto.com/topic/66858-bounty-for-finding-security-flaws-and-working-cheats-in-mta/, а не максимум 15% 'основанным на сигнатурах' античитом, как описано на вики-странице [[Forks]] для обычных форков.''
__NOTOC__ {{Примечание|Это не окончательная версия этой страницы, она будет улучшаться/дополняться/переписываться.}}


Примечание: Информация на этой странице не относится к официальным сборкам MTA.
Основная идея:
Примечание: Это не окончательная версия этой страницы, она будет улучшаться/дополняться/переписываться.
* Модуль netc "с полным античитом для форков" будет предоставлять 95% функций античита, имеющихся в официальных MTA (multitheftauto.com > Кнопка "Download") сборках.
* Чем больше несовместимых функций/реализаций (пользовательских изменений) имеет ваш форк-проект, которые '''вы''' можете отключить (добавив их в белый список обнаружения: '''disableac''' массив в '''mtaserver.conf''', как описано на странице [https://wiki.multitheftauto.com/wiki/RU/Anti-cheat_guide#%3Cdisableac%3E%3C/disableac%3E Anti-cheat guide / Руководство по античиту: DISABLEAC]), тем ниже будет указанное число защиты в процентах.
** '''Например''', если вам нужно отключить 3 различных типа обнаружения (допустим, для российских форков, учитывая загрузку внешних модов вне MTA API/limit adjuster'а, наиболее распространёнными являются: 5, 6, 21), вы получите 85% оставшейся античит-защиты. Хотя это число относительно, так как это даёт разработчикам читов возможность использовать именно эти отключенные категории обнаружения для обеспечения работы их читов/хаков, и эти 3 кода уже предоставляют некоторые конкретные пути для записи в память GTA.<br><br>


''Форкам MTA недостаточно для использования "обычного netc для форков" (из bdata/netc.dll ) как описано на вики-странице Forks, из-за того, что она ограничивает работу AЧ (Античита). Теперь можно испытать возможности использования нового варианта netc: "forks full AC". Это, однако, имеет свои ограничения, связанные с характером вашего проекта и реализаций, и также с вопросами, которые нелегко объяснить, но эта страница стремится сделать это как можно точнее.''
Понимаете, к чему всё это идёт? Ниже в этой статье появится ссылка на "полный античит для форков", и то, что вы будете делать с ним - это метод проб и ошибок. Попытка интегрировать полную поддержку античита в ваш форк - это вопрос "Мы можем попробовать, и если это сработает, то будет здорово.. если нам придётся отключить некоторые обнаружения, то процент защиты будет выше, чем у обычного античита форков: 15% и это уже огромный выигрыш.." и во многом зависит от меры возможностей. Потому что причина, по которой мы разделили netc форков (из bdata/netc.dll) на тот, в котором отсутствует большинство античит-функций, может быть понятна любому опытному разработчику: netc модуль (античит) не рассчитан на все типы настроек, которые разработчик форка может добавить в свою кодовую базу, это было сделано в духе предоставления максимальной свободы и гибкости. Тем более, что многие форки имеют не самых лучших разработчиков, не понимающих, почему им лучше следовать рекомендациям MTA (mtasa-blue) по написанию кода, структуре проекта и максимально приближать свои пользовательские реализации так, как это обычно делает участник MTA, прошедший проверку (ревью) кода. Таким образом, здесь происходит отделение 'чистых' изменений от 'грязного моддинга', который также часто встречается в российских форках, '''использующих один или несколько следующих подходов к кодовой базе своего проекта:
'''<br><br>


Эта операция превратит ваш форк в проект с "правильным AЧ, основанным на исправлении метода", как описано в официальном MTA в спойлере в этом разделе: https://forum.multitheftauto.com/topic/66858-bounty-for-finding-security-flaws-and-working-cheats-in-mta -  не более 15% AЧ на основе подписи, согласно описанию обычных AЧ/netc на странице [[Forks]] wiki.
* Реализация моддинговых GTA: SA проектов внешним 'грязным' способом, как limit adjuster (fastman92 и т.д.)
* Необработанная (raw) загрузка модифицированных данных GTA: SA & .IMG файлов, через распространение предварительно модифицированных установочных папок GTA среди игроков форк клиента. Тем самым полностью игнорируя MTA API для замены моделей и различных игровых процессов.
* Различные грязные патчи, в широком смысле описанные в абзаце выше. Также включает в себя несоблюдение рекомендаций MTA по "Raw memory access" (необработанному доступу к памяти), найденных здесь: https://github.com/multitheftauto/mtasa-blue/wiki/Dev-Tips, что является значительным фактором риска для сценариев, не ожидаемых netc.dll (античитом), так как если он защищает от модификаций памяти, зная их происхождение, и вы просто поместите грязный 'writeProcessMemory' или memcpy в случайный .cpp файл, это вызовет нарушение. Это далеко не всё, и это плохой пример, но просто чтобы вы поняли, почему существуют несовместимости.


Основная идея:


* Модуль netc "forks full AC" будет обеспечивать 95% функций AЧ, найденных в официальном MTA (multitheftauto.com > Кнопка "Загрузить").
* Чем больше несовместимых функций / реализаций (пользовательских изменений) есть в вашем форк-проекте, которые вы можете "отключить" (добавив их в массив detection # whitelist: disableac в mtaserver.conf, как описано в руководстве по борьбе с мошенничеством: DISABLEAC), тем ниже будет указанный показатель защиты в процентах.


** Например, если вам нужно отключить 3 различных типа обнаружения (скажем, для российских форков, учитывая внешнюю загрузку модов за пределами MTA API / limit adjusters, наиболее распространенными являются: 5, 6, 21), вы получите 85% защиты от работоспособности античита. Хотя это число относительно, поскольку оно предоставляет разработчикам читов возможность использовать именно "урезанные" категории обнаружения для выполнения своей хакерской работы, например, эти 3 кода уже предоставляют некоторые конкретные возможности для записи в память GTA.<br><br>
=== Получение максимального % античит-защиты ===


Можете ли вы определить, в каком направлении это происходит? Позже в этой статье появится ссылка на "forks full AC", и то, что вы будете делать с ней, - это метод проб и ошибок. Попытка интегрировать полную поддержку AЧ в ваш форк - это вопрос "Мы можем попробовать, и если это в конечном итоге сработает, это будет хорошо, если нам придется отключить некоторые обнаружения, процент защиты от чего-либо станет ниже, чем у обычных форков AC: 15% - это уже огромный выигрыш" и в высшей степени, на основе наилучших усилий. Потому что причина, по которой мы отделили форки netc (от bdata/netc.dll ) к тому, в котором отсутствует большинство функций AC, может быть ясно любому опытному разработчику: модуль netc (AC) не предназначен для ожидания всех типов настроек, которые разработчик форка может добавить в свою кодовую базу, это было сделано в духе обеспечения максимальной свободы и гибкости. Тем более, что во многих форках нет хороших разработчиков, которые не знают, почему им лучше следовать рекомендациям по кодированию MTA (mtasa-blue), структуры проекта и максимально приближать свои пользовательские реализации к тому, как это обычно делает участник MTA, прошедший проверку кода. Таким образом, здесь "чистые" изменения отделяются от "грязного моддинга", который также часто встречается в российских форках, '''использующих один или несколько из следующих подходов к кодовой базе своего проекта:
Поняв вышесказанное, а также то, что мы стараемся изо всех сил, так как такое использование в качестве "полного античита" для форков никогда не входило в наши планы, и что было бы трудно поддерживать пользовательские модификации каждого, вы можете понять, что мы не можем помочь вам выяснить, что является несовместимым сразу после того, как вы начнёте тестировать netc "с полным античитом" в своём форке. Поэтому вы сами должны либо отключить столько обнаружений, сколько требуется (если вы не можете их исправить - где 'не можете' является показателем отсутствия инженерного опыта), либо, что ещё лучше, разработать исправления, которые позволят вам избежать отключения слишком многих или любых типов обнаружения, тем самым максимизируя потенциальный % античит-функций.
'''<br><br>


Это означает, что без поддержки команды MTA вам предстоит выяснить, какие настройки/интеграции/несоблюдения MTA API/примеры проблем, описанные ранее в этой статье.. являются виновниками каждого конкретного типа обнаружения, который отправляет вам кики античита после добавления netc "с полным античитом" в ваш форк для тестирования. Мы советуем вам очистить свои интеграции, чтобы избежать необходимости много копаться вручную/выяснять виновника. Для этого обратите внимание на пункты маркированного списка из предыдущего абзаца. Однако, если же прямой виновник найден, приложив все свои усилия, вы должны без каких-либо указаний со стороны MTA придумать альтернативные (более чистые, более соответствующие рекомендациям MTA по написанию кода, API и структуре проекта.. следовательно, менее вероятно несовместимые с полным античитом и тем, что он ожидает) реализации проблемной настройки, найденной в кодовой базе вашего форка. Вы можете видеть, где возможность использовать 'полный античит для форков' становится скорее благосклонностью, чем данностью, особенно с тем состоянием кодовой базы, в котором многие форки, не начав свою разработку по сценарию 'полного античита', выросли, просто написав то, что работает для них, не учитывая такие аспекты. Общая картина того, почему мы не будем поддерживать процесс реинжиниринга, теперь должна быть ясна. Если вы не можете с этим справиться, либо наймите кого-то с большим опытом в компьютерных науках и инженерии, либо отключите больше типов обнаружения античита, и довольствуйтесь всем, что выше 15% обычного netc для форков, лучше что-то, чем ничего. '''Но мы не сможем протянуть руку помощи.''' Любое непонимание этих концепций указывает на отсутствие полноты разработчика (индивидуальных навыков, возможностей для роста) и не может быть отражено на разработчиках MTA.


* Реализация проектов моддинга GTA SA внешним "грязным" способом, таким как limit adjuster (fastman92 и т.д.)


* Необработанная загрузка модифицированных данных GTA SA & .Файлы IMG, посредством распространения предварительно модифицированных папок установки GTA для игроков-клиентов форка, тем самым полностью игнорируя MTA API для замены моделей и различных игровых процессов
= '''Давайте перейдём к делу''' =


* Разная грязь, в широком смысле того, что описано в параграфе выше этого также включает в себя несоблюдение рекомендаций MTA по "необработанному доступу к памяти", найденных здесь: https://github.com/multitheftauto/mtasa-blue/wiki/Dev-Tips что является значительным фактором риска для сценария, которого не ожидают netc.dll (AC), как будто он защищает от изменений памяти, зная источник, и вы просто помещаете грязный 'WriteProcessMemory' или memcpy в случайном порядке.файл cpp, это приведет к нарушению. Это еще не все и не плохой пример, но просто для того, чтобы вы получили основную идею о том, почему существуют несовместимости.
Если вы считаете, что поняли все концепции, описанные в этой статье, вы можете приступить к внедрению "полного античита для форков":


=== Получение максимальной отдачи от защиты от АЧ % ===
'''СКАЧАЙТЕ: https://mirror-cdn.multitheftauto.com/bdata/fork-support/netc.dll''' (для использования ''вместо'' "bdata/netc.dll" из стандартного mtasa-blue buildactions/install_data.lua)
Обратите внимание, что версия netc.dll по указанной выше ссылке будет регулярно обновляться, чтобы предоставить форкам все античит-улучшения, поставляемые также и для официальной MTA. Поэтому рекомендуется регулярно получать обновления для вашего форка для обеспечения оптимальной безопасности & надёжности античита


Поняв вышесказанное, а также то, что мы приложили все усилия, поскольку такое использование как "полный AC" для форков никогда не входило в наши намерения, и то, как было бы трудно поддерживать пользовательские модификации каждого пользователя, вы можете понять, что мы не можем помочь вам выяснить, что несовместимо сразу после того, как вы начнете тестировать "полный AC" netc “ на вашем проекте. Поэтому вы должны либо отключить столько обнаружений, сколько требуется (если вы не можете их исправить - где "невозможно" является показателем отсутствия технического надзора), либо, что еще лучше, придумать исправления, которые позволят вам избежать отключения слишком большого количества или любых типов обнаружения, тем самым максимизируя ваши потенциальные возможности переменного тока %.
{{Примечание|
* Важно: Начиная с июня 2023 года, вы должны извлечь все коммиты (получить все изменения) mtasa-blue (обновить до 1.6) и синхронизировать кодовую базу вашего форка, чтобы использовать последнюю версию netc, представленную по ссылке выше. Существуют несовместимые изменения, которые требуют обновления с обеих сторон. Предлагаемый netc модуль подходит для форка, основанного на MTA 1.6
}}
{{Примечание|
* Важно: Вы сами несёте ответственность за добавление средства проверки целостности/подлинности файлов, так как очевидно, что поскольку игровые DLL собираются вами (а не нами), нет возможности внедрить такие уникальные DLL в наши внутренние контрольные списки netc, равно как и нет ничего в других модулях для проверки самого netc. Если вы не доработаете это, читер может просто заменить любой модуль или добавить читерскую полезную нагрузку (payload) с помощью редактирования PE, это самый большой фактор риска при использовании "полного античита для форков". Как далеко вы хотели бы зайти с проверкой файлов, например, решить усилить её в пользовательском режиме (usermode) (с heartbeat'ами или около того) или использовать собственный дополнительный античит-драйвер в режиме ядра (kernelmode), зависит от вас и уровня приверженности безопасности вашего проекта. Если всё, что вас волнует, это небольшая преграда в отношении читерства, вы можете использовать базовую проверку файлов (MD5/SHA256) для всех игровых модулей


Это означает, что без поддержки команды MTA вам предстоит выяснить, какие настройки / интеграции / несоблюдение MTA API / примеры проблем, описанные ранее в этой статье .. являются причиной каждого конкретного типа обнаружения, который отправляет вам пинки AC после установки netc "full AC" в ваш форк для целей тестирования. Мы советуем вам очистить свои интеграции, чтобы избежать необходимости много копаться вручную / размышлять о виновнике. Для этого позаботьтесь о записях из маркированного списка из предыдущего абзаца. Однако, если был найден прямой виновник, приложив все наши усилия, вы должны без каких-либо указаний MTA придумать альтернативу (более чистую, более соответствующую рекомендациям MTA по кодированию, API и структуре проекта.. следовательно, менее вероятно, что несовместимые с полным AC и тем, что он ожидает) реализации проблемной настройки, найденной в кодовой базе вашего форка. Вы можете видеть, где возможность использовать "полный AC для форков" становится скорее благосклонностью, чем данностью, особенно с учетом состояния кодовой базы, в которое превратились многие форки, не начиная свою разработку в сценарии "полного AC", просто написав то, что работает для них, не рассматривая такие аспекты. Теперь должна быть ясна общая картина того, почему мы не будем поддерживать процесс реинжиниринга. Если вы не можете с этим справиться, либо наймите кого-нибудь с большим инженерным опытом (CS), либо отключите больше типов обнаружения переменного тока и соглашайтесь на все, что превышает 15% обычного netc для форков, лучше что-то, чем ничего. Но мы, естественно, не сможем протянуть руку помощи. Любое непонимание этих концепций указывает на недостаточную завершенность разработчика (индивидуальные навыки, возможности для роста) и не может быть отражено на разработчиках MTA.<br><br>
Есть ещё много подобных узких мест, которые слишком сложны для простого объяснения, но основаны на принципе "ничто никогда не бывает на 100% безопасным", и многие из них относятся к мосту между официальной MTA и форками, использующими 'полный античит'. Также полезно поразмыслить над всем этим в целом: Команда MTA потратила годы на создание античит-технологии и предоставляет многое форкам, если они того пожелают, бесплатно. Рассматривайте это как основной слой античита, который уже защищает многое в GTA, мы помогаем вам не создавать такое огромное количество технологий самостоятельно. Теперь о том, что ещё вы делаете, например, видите это как основной слой, а затем также создаёте свой собственный дополнительный слой античита, возможно, даже на уровне новичка, технически понятном вашим разработчикам, не имеющим серьёзного опыта разработки античитов - это полностью зависит от вашей креативности и того, насколько серьёзно вы относитесь к своему проекту. Если вы хотите дополнить основной слой, предоставляемый нами, то можете это сделать.
}}


- Замените netc.dll в вашем форк-проекте на вышеуказанный "поддерживаемый для форков" netc с полным античитом.
- Убедитесь, что тип сборки в version.h изменён на UNSTABLE, согласно рекомендациям "массового потребления" для форков в комментариях: [https://github.com/multitheftauto/mtasa-blue/blob/master/Shared/sdk/version.h Shared/sdk/version.h]. В противном случае, вы сведёте на нет все усилия по получению полной античит-защиты.


Давайте перейдем к делу
- Убедитесь, что вы обновили кодовую базу вашего форка до активной основной версии (для которой netc.dll), '''мастер'''-коммита mtasa-blue, по крайней мере до версии "Default", указанной на [https://nightly.mtasa.com/ver/] как "Auto-update default" для последней основной версии, затем сопоставьте указанную ревизию с SHA1-хешем коммита с помощью этого инструмента: https://buildinfo.mtasa.com/index.php - это означает, что не следует использовать начальный выпуск (версию, которая имеет метку выпуска на github), потому что MTA использует модель "MTA как услуга", где игроки получают регулярные обновления, содержащие все основные изменения для оптимального качества и опыта использования новых функций. Последние выпуски netc.dll основаны на этом и могут требовать присутствия мастер-изменений.
Если вы считаете, что понимаете все концепции, описанные в этой статье, вы можете начать внедрять "полный АЧ для форков".:


'''СКАЧАТЬ: https://mirror-cdn.multitheftauto.com/bdata/fork-support/netc.dll''' (поэтому ''вместо'' использования "bdata/netc.dll " из стандартного mtasa-blue buildactions/install_data.lua) Обратите внимание, что версия netc.dll ссылка выше будет регулярно обновляться, чтобы предоставить форкам все улучшения AC, также представленные в официальном MTA. Поэтому рекомендуется регулярно получать обновления для вашего форка для обеспечения оптимальной безопасности и надежности Антчита для форков<br><br>
- Для ваших выделенных серверов/узлов, к которым будут подключаться игроки, используйте эти net модули:<br>
Linux x64: https://mirror-cdn.multitheftauto.com/bdata/net_64.so (переименуйте в "net.so")<br>
Windows x64: https://mirror-cdn.multitheftauto.com/bdata/net_64.dll (переименуйте в "net.dll")<br>
Никогда не используйте x86 сервер для вашего форка, это плохо по многим причинам. Такое не поощряется и не приведёт к хорошим результатам.


- Замените netc.dll в вашем проекте с вышеуказанной "поддержкой форков" полный AЧ netc. - Убедитесь, что эта версия.тип сборки h установлен на НЕСТАБИЛЬНЫЙ, в соответствии с рекомендациями для форков"массовое потребление" в комментариях: Shared/sdk/version.h. Если это не так, вы сведете на нет все усилия по получению полной защиты от переменного тока.<br>
Давайте продолжим с настройкой клиента и 'полного античита'.<br>


- Убедитесь, что вы обновили кодовую базу вашего форка до активной основной версии (для которой netc.dll ) основная фиксация mtasa-blue, по крайней мере, версия "По умолчанию", указанная в [1] как "Автоматическое обновление по умолчанию" для последней основной версии, затем сопоставление указанной ревизии с фиксацией Хэш SHA1 с помощью этого инструмента: https://buildinfo.mtasa.com/index.php - это означает, что не следует использовать тег выпуска основной версии на github, потому что MTA использует модель "MTA как услуга", когда игроки получают регулярные обновления, содержащие все основные изменения для оптимального качества и использования новых функций. Последний netc.dll выпуски основаны на этом и могут потребовать присутствия основных изменений.<br>
- Столкнитесь с некоторыми киками античита в вашем форк-клиенте, этап проб и ошибок начинается здесь. Теперь используйте предыдущие части этого руководства, чтобы либо отключить типы обнаружения античита с помощью disableac в mtaserver.conf, либо, что ещё лучше, потратьте больше сил разработчиков на правильное исправление & очистку ваших пользовательских реализаций, как советовали ранее, чтобы сохранить как можно больше % античит-защиты. Мы советуем не опускаться ниже 85% (как в примере с 'disableac' кодами: 5, 6, 21 было упомянуто, что это относительно 85% и то, что требуется большинству российских тяжёлых модифицированных форков для немедленного запуска и возможности вам подключиться).


- Столкнитесь с некоторыми изменениями в вашем клиенте, здесь начинается этап проб и ошибок. Теперь используйте предыдущие части этого руководства, чтобы либо отключить типы обнаружения переменного тока с помощью disableac в mtaserver.conf, либо, что еще лучше, потратьте больше времени на их правильное исправление и очистку ваших пользовательских реализаций, как советовалось ранее, чтобы сохранить как можно больше % защиты от переменного тока. Мы советуем не опускаться ниже 85% (как в примере с кодами 'disableac': 5, 6, 21 упоминалось как относительно 85%, и это то, что требуется большинству российских мод-тяжелых форков для немедленного запуска и предоставления вам возможности подключиться)<br>


Заключительные слова: всегда будет лучше не быть форком в первую очередь. Используйте официальный клиент MTA и просто создайте сервер, со временем со своим пользовательским лаунчером, который будет подключать непосредственно к вашему ряду серверов. Просто внесите все настройки, которые вам нужны (причина для создания форка), взяв за основу "upstream" и создайте PR, Pull request (пул-реквест), используя официальный репозиторий MTA https://github.com/multitheftauto/mtasa-blue, чтобы все выиграли, а вы соблюдали лицензию & не сталкивались с препятствиями, включая античит и приток новых игроков, которые возникают при создании форка. MTA обычно имеет 30000 игроков онлайн одновременно, что также является огромным притоком новых игроков для открытия своего сообщества. Лучше просто не быть форком, но если вам действительно нужно, эта страница является нашим активным взаимодействием с форками для получения лучшего уровня античит-защиты.<br><br>
Мы создали этот вариант netc.dll "с полным античитом для форков" в ноябре/декабре 2022 года и опробовали практические результаты и некоторые специфические исправления для лучшей поддержки, с 2 крупнейшими российскими MTA форками, оба из которых готовятся выпустить обновление, включающее это в ближайшие несколько месяцев. Мы также взаимодействовали с разработчиками небольших форков, которые, однако, решили злоупотребить этим (а вместе с этим и нашим доверием), немедленно став токсичными и пытаясь продать netc модуль "с полным античитом", который мы им дали, что побудило написать и в спешке опубликовать эту вики-статью. Нехорошо, и, пожалуйста, не ведитесь на предложения от упомянутого круга токсичных разработчиков форков, пытающихся продать вам такой netc "с полным античитом", когда вы можете получить более новую версию из официального источника, от нас в этой статье. Работа над этой статьёй в контексте упомянутого инцидента обсуждалась в MTA development discord (приглашение: https://discord.gg/GNN6PRtTnu) в этом посте: https://discord.com/channels/801330706252038164/801330706252038170/1044757943071023155 и аналогично в основном, официальном MTA discord (приглашение: https://discord.gg/mtasa) в этом посте: https://discord.com/channels/278474088903606273/278521065435824128/1044758439357849661


Заключительные слова: всегда будет лучше не быть форком в первую очередь. Чтобы использовать официальный клиент MTA и просто создать сервер, в конечном итоге с пользовательским лаунчером, который подключается непосредственно к вашему массиву серверов. Чтобы просто внести все настройки, которые вам понадобятся (причина для того, чтобы вместо этого стать форком) "вверх по течению", что означает в PR, запрос на извлечение, в официальный репозиторий MTA по адресу https://github.com/multitheftauto/mtasa-blue таким образом, все выигрывают, и вы соблюдаете лицензию и не сталкиваетесь с препятствиями, включая AC и приток новых игроков, из быть вилкой. MTA обычно имеет 30 000 игроков онлайн одновременно, что также является огромным притоком новых игроков для знакомства с вашим сообществом. Лучше просто не быть форком, но если вам действительно нужно, эта страница является нашей активной поддержкой форков, чтобы получить лучшую степень защиты от обмана (AЧ).
[[EN:Forks_Full_AC]]

Latest revision as of 14:48, 25 June 2023

[[{{{image}}}|link=|]] Примечание: Информация на этой странице не относится к официальным сборкам MTA.

Форки MTA, которым недостаточно использовать "обычный netc для форков" (из bdata/netc.dll), как описано на вики-странице Forks, из-за того, что он предлагает очень ограниченную античит-защиту, могут изучить возможности использования нового netc варианта: "полного античита для форков". Это, однако, имеет свои ограничения, относящиеся к особенностям вашего форк-проекта и реализации, которые нелегко объяснить, но эта страница стремится сделать это как можно точнее.

Эта операция превратит ваш форк в проект с "надлежащим античитом, основанным на методе исправлений", как описано в спойлере в этой теме: https://forum.multitheftauto.com/topic/66858-bounty-for-finding-security-flaws-and-working-cheats-in-mta/, а не максимум 15% 'основанным на сигнатурах' античитом, как описано на вики-странице Forks для обычных форков.

Основная идея:

  • Модуль netc "с полным античитом для форков" будет предоставлять 95% функций античита, имеющихся в официальных MTA (multitheftauto.com > Кнопка "Download") сборках.
  • Чем больше несовместимых функций/реализаций (пользовательских изменений) имеет ваш форк-проект, которые вы можете отключить (добавив их в белый список обнаружения: disableac массив в mtaserver.conf, как описано на странице Anti-cheat guide / Руководство по античиту: DISABLEAC), тем ниже будет указанное число защиты в процентах.
    • Например, если вам нужно отключить 3 различных типа обнаружения (допустим, для российских форков, учитывая загрузку внешних модов вне MTA API/limit adjuster'а, наиболее распространёнными являются: 5, 6, 21), вы получите 85% оставшейся античит-защиты. Хотя это число относительно, так как это даёт разработчикам читов возможность использовать именно эти отключенные категории обнаружения для обеспечения работы их читов/хаков, и эти 3 кода уже предоставляют некоторые конкретные пути для записи в память GTA.

Понимаете, к чему всё это идёт? Ниже в этой статье появится ссылка на "полный античит для форков", и то, что вы будете делать с ним - это метод проб и ошибок. Попытка интегрировать полную поддержку античита в ваш форк - это вопрос "Мы можем попробовать, и если это сработает, то будет здорово.. если нам придётся отключить некоторые обнаружения, то процент защиты будет выше, чем у обычного античита форков: 15% и это уже огромный выигрыш.." и во многом зависит от меры возможностей. Потому что причина, по которой мы разделили netc форков (из bdata/netc.dll) на тот, в котором отсутствует большинство античит-функций, может быть понятна любому опытному разработчику: netc модуль (античит) не рассчитан на все типы настроек, которые разработчик форка может добавить в свою кодовую базу, это было сделано в духе предоставления максимальной свободы и гибкости. Тем более, что многие форки имеют не самых лучших разработчиков, не понимающих, почему им лучше следовать рекомендациям MTA (mtasa-blue) по написанию кода, структуре проекта и максимально приближать свои пользовательские реализации так, как это обычно делает участник MTA, прошедший проверку (ревью) кода. Таким образом, здесь происходит отделение 'чистых' изменений от 'грязного моддинга', который также часто встречается в российских форках, использующих один или несколько следующих подходов к кодовой базе своего проекта:

  • Реализация моддинговых GTA: SA проектов внешним 'грязным' способом, как limit adjuster (fastman92 и т.д.)
  • Необработанная (raw) загрузка модифицированных данных GTA: SA & .IMG файлов, через распространение предварительно модифицированных установочных папок GTA среди игроков форк клиента. Тем самым полностью игнорируя MTA API для замены моделей и различных игровых процессов.
  • Различные грязные патчи, в широком смысле описанные в абзаце выше. Также включает в себя несоблюдение рекомендаций MTA по "Raw memory access" (необработанному доступу к памяти), найденных здесь: https://github.com/multitheftauto/mtasa-blue/wiki/Dev-Tips, что является значительным фактором риска для сценариев, не ожидаемых netc.dll (античитом), так как если он защищает от модификаций памяти, зная их происхождение, и вы просто поместите грязный 'writeProcessMemory' или memcpy в случайный .cpp файл, это вызовет нарушение. Это далеко не всё, и это плохой пример, но просто чтобы вы поняли, почему существуют несовместимости.


Получение максимального % античит-защиты

Поняв вышесказанное, а также то, что мы стараемся изо всех сил, так как такое использование в качестве "полного античита" для форков никогда не входило в наши планы, и что было бы трудно поддерживать пользовательские модификации каждого, вы можете понять, что мы не можем помочь вам выяснить, что является несовместимым сразу после того, как вы начнёте тестировать netc "с полным античитом" в своём форке. Поэтому вы сами должны либо отключить столько обнаружений, сколько требуется (если вы не можете их исправить - где 'не можете' является показателем отсутствия инженерного опыта), либо, что ещё лучше, разработать исправления, которые позволят вам избежать отключения слишком многих или любых типов обнаружения, тем самым максимизируя потенциальный % античит-функций.

Это означает, что без поддержки команды MTA вам предстоит выяснить, какие настройки/интеграции/несоблюдения MTA API/примеры проблем, описанные ранее в этой статье.. являются виновниками каждого конкретного типа обнаружения, который отправляет вам кики античита после добавления netc "с полным античитом" в ваш форк для тестирования. Мы советуем вам очистить свои интеграции, чтобы избежать необходимости много копаться вручную/выяснять виновника. Для этого обратите внимание на пункты маркированного списка из предыдущего абзаца. Однако, если же прямой виновник найден, приложив все свои усилия, вы должны без каких-либо указаний со стороны MTA придумать альтернативные (более чистые, более соответствующие рекомендациям MTA по написанию кода, API и структуре проекта.. следовательно, менее вероятно несовместимые с полным античитом и тем, что он ожидает) реализации проблемной настройки, найденной в кодовой базе вашего форка. Вы можете видеть, где возможность использовать 'полный античит для форков' становится скорее благосклонностью, чем данностью, особенно с тем состоянием кодовой базы, в котором многие форки, не начав свою разработку по сценарию 'полного античита', выросли, просто написав то, что работает для них, не учитывая такие аспекты. Общая картина того, почему мы не будем поддерживать процесс реинжиниринга, теперь должна быть ясна. Если вы не можете с этим справиться, либо наймите кого-то с большим опытом в компьютерных науках и инженерии, либо отключите больше типов обнаружения античита, и довольствуйтесь всем, что выше 15% обычного netc для форков, лучше что-то, чем ничего. Но мы не сможем протянуть руку помощи. Любое непонимание этих концепций указывает на отсутствие полноты разработчика (индивидуальных навыков, возможностей для роста) и не может быть отражено на разработчиках MTA.


Давайте перейдём к делу

Если вы считаете, что поняли все концепции, описанные в этой статье, вы можете приступить к внедрению "полного античита для форков":

СКАЧАЙТЕ: https://mirror-cdn.multitheftauto.com/bdata/fork-support/netc.dll (для использования вместо "bdata/netc.dll" из стандартного mtasa-blue buildactions/install_data.lua) Обратите внимание, что версия netc.dll по указанной выше ссылке будет регулярно обновляться, чтобы предоставить форкам все античит-улучшения, поставляемые также и для официальной MTA. Поэтому рекомендуется регулярно получать обновления для вашего форка для обеспечения оптимальной безопасности & надёжности античита


[[{{{image}}}|link=|]] Примечание:
  • Важно: Начиная с июня 2023 года, вы должны извлечь все коммиты (получить все изменения) mtasa-blue (обновить до 1.6) и синхронизировать кодовую базу вашего форка, чтобы использовать последнюю версию netc, представленную по ссылке выше. Существуют несовместимые изменения, которые требуют обновления с обеих сторон. Предлагаемый netc модуль подходит для форка, основанного на MTA 1.6
[[{{{image}}}|link=|]] Примечание:
  • Важно: Вы сами несёте ответственность за добавление средства проверки целостности/подлинности файлов, так как очевидно, что поскольку игровые DLL собираются вами (а не нами), нет возможности внедрить такие уникальные DLL в наши внутренние контрольные списки netc, равно как и нет ничего в других модулях для проверки самого netc. Если вы не доработаете это, читер может просто заменить любой модуль или добавить читерскую полезную нагрузку (payload) с помощью редактирования PE, это самый большой фактор риска при использовании "полного античита для форков". Как далеко вы хотели бы зайти с проверкой файлов, например, решить усилить её в пользовательском режиме (usermode) (с heartbeat'ами или около того) или использовать собственный дополнительный античит-драйвер в режиме ядра (kernelmode), зависит от вас и уровня приверженности безопасности вашего проекта. Если всё, что вас волнует, это небольшая преграда в отношении читерства, вы можете использовать базовую проверку файлов (MD5/SHA256) для всех игровых модулей

Есть ещё много подобных узких мест, которые слишком сложны для простого объяснения, но основаны на принципе "ничто никогда не бывает на 100% безопасным", и многие из них относятся к мосту между официальной MTA и форками, использующими 'полный античит'. Также полезно поразмыслить над всем этим в целом: Команда MTA потратила годы на создание античит-технологии и предоставляет многое форкам, если они того пожелают, бесплатно. Рассматривайте это как основной слой античита, который уже защищает многое в GTA, мы помогаем вам не создавать такое огромное количество технологий самостоятельно. Теперь о том, что ещё вы делаете, например, видите это как основной слой, а затем также создаёте свой собственный дополнительный слой античита, возможно, даже на уровне новичка, технически понятном вашим разработчикам, не имеющим серьёзного опыта разработки античитов - это полностью зависит от вашей креативности и того, насколько серьёзно вы относитесь к своему проекту. Если вы хотите дополнить основной слой, предоставляемый нами, то можете это сделать.

- Замените netc.dll в вашем форк-проекте на вышеуказанный "поддерживаемый для форков" netc с полным античитом. - Убедитесь, что тип сборки в version.h изменён на UNSTABLE, согласно рекомендациям "массового потребления" для форков в комментариях: Shared/sdk/version.h. В противном случае, вы сведёте на нет все усилия по получению полной античит-защиты.

- Убедитесь, что вы обновили кодовую базу вашего форка до активной основной версии (для которой netc.dll), мастер-коммита mtasa-blue, по крайней мере до версии "Default", указанной на [1] как "Auto-update default" для последней основной версии, затем сопоставьте указанную ревизию с SHA1-хешем коммита с помощью этого инструмента: https://buildinfo.mtasa.com/index.php - это означает, что не следует использовать начальный выпуск (версию, которая имеет метку выпуска на github), потому что MTA использует модель "MTA как услуга", где игроки получают регулярные обновления, содержащие все основные изменения для оптимального качества и опыта использования новых функций. Последние выпуски netc.dll основаны на этом и могут требовать присутствия мастер-изменений.

- Для ваших выделенных серверов/узлов, к которым будут подключаться игроки, используйте эти net модули:
Linux x64: https://mirror-cdn.multitheftauto.com/bdata/net_64.so (переименуйте в "net.so")
Windows x64: https://mirror-cdn.multitheftauto.com/bdata/net_64.dll (переименуйте в "net.dll")
Никогда не используйте x86 сервер для вашего форка, это плохо по многим причинам. Такое не поощряется и не приведёт к хорошим результатам.

Давайте продолжим с настройкой клиента и 'полного античита'.

- Столкнитесь с некоторыми киками античита в вашем форк-клиенте, этап проб и ошибок начинается здесь. Теперь используйте предыдущие части этого руководства, чтобы либо отключить типы обнаружения античита с помощью disableac в mtaserver.conf, либо, что ещё лучше, потратьте больше сил разработчиков на правильное исправление & очистку ваших пользовательских реализаций, как советовали ранее, чтобы сохранить как можно больше % античит-защиты. Мы советуем не опускаться ниже 85% (как в примере с 'disableac' кодами: 5, 6, 21 было упомянуто, что это относительно 85% и то, что требуется большинству российских тяжёлых модифицированных форков для немедленного запуска и возможности вам подключиться).


Заключительные слова: всегда будет лучше не быть форком в первую очередь. Используйте официальный клиент MTA и просто создайте сервер, со временем со своим пользовательским лаунчером, который будет подключать непосредственно к вашему ряду серверов. Просто внесите все настройки, которые вам нужны (причина для создания форка), взяв за основу "upstream" и создайте PR, Pull request (пул-реквест), используя официальный репозиторий MTA https://github.com/multitheftauto/mtasa-blue, чтобы все выиграли, а вы соблюдали лицензию & не сталкивались с препятствиями, включая античит и приток новых игроков, которые возникают при создании форка. MTA обычно имеет 30000 игроков онлайн одновременно, что также является огромным притоком новых игроков для открытия своего сообщества. Лучше просто не быть форком, но если вам действительно нужно, эта страница является нашим активным взаимодействием с форками для получения лучшего уровня античит-защиты.

Мы создали этот вариант netc.dll "с полным античитом для форков" в ноябре/декабре 2022 года и опробовали практические результаты и некоторые специфические исправления для лучшей поддержки, с 2 крупнейшими российскими MTA форками, оба из которых готовятся выпустить обновление, включающее это в ближайшие несколько месяцев. Мы также взаимодействовали с разработчиками небольших форков, которые, однако, решили злоупотребить этим (а вместе с этим и нашим доверием), немедленно став токсичными и пытаясь продать netc модуль "с полным античитом", который мы им дали, что побудило написать и в спешке опубликовать эту вики-статью. Нехорошо, и, пожалуйста, не ведитесь на предложения от упомянутого круга токсичных разработчиков форков, пытающихся продать вам такой netc "с полным античитом", когда вы можете получить более новую версию из официального источника, от нас в этой статье. Работа над этой статьёй в контексте упомянутого инцидента обсуждалась в MTA development discord (приглашение: https://discord.gg/GNN6PRtTnu) в этом посте: https://discord.com/channels/801330706252038164/801330706252038170/1044757943071023155 и аналогично в основном, официальном MTA discord (приглашение: https://discord.gg/mtasa) в этом посте: https://discord.com/channels/278474088903606273/278521065435824128/1044758439357849661