Forks: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
m (remove unnecessary line break)
(update)
Line 23: Line 23:
(from https://wiki.multitheftauto.com/wiki/Anti-cheat_support_for_custom_builds)
(from https://wiki.multitheftauto.com/wiki/Anti-cheat_support_for_custom_builds)


Custom MTA builds and forked projects will face some challenges relating to anti-cheat (AC). This is due to custom builds performing in ways that the anti-cheat module does not expect. The anti-cheat and netcode components (netc.dll, net.dll, FairplayKD.sys) are, unlike MTA itself, closed-source, and therefore without informing yourself it would be hard to overcome the challenges.
Custom MTA builds and forked projects will face some challenges relating to anti-cheat (AC). Due to the fact that many forks and custom builds perform in ways that the anti-cheat module does not expect, we were forced to remove plenty of advanced detections and protections from the anti-cheat, in order to create and provide a separate module (the one from https://mirror.mtasa.com/bdata/netc.dll) that, simply put, is a much weaker anti-cheat than the 'real' MTA has. So, unless you take measures of your own, your forked project can (and will) easily become infested with cheaters. Therefore reading the below information can help.
 
The anti-cheat and netcode components (netc.dll, net.dll, FairplayKD.sys) are, unlike MTA itself, closed-source, and therefore without informing yourself it would be hard to overcome the challenges.


AC is generally unsupported for forked projects and may be dropped entirely in the future. This means that you generally ''cannot'' rely on the MTA anti-cheat for your fork. '''We strongly advise that you write and implement your own AC.'''
AC is generally unsupported for forked projects and may be dropped entirely in the future. This means that you generally ''cannot'' rely on the MTA anti-cheat for your fork. '''We strongly advise that you write and implement your own AC.'''
Line 32: Line 34:
** To be specific, you can use the latest module that is bitstream version compatible
** To be specific, you can use the latest module that is bitstream version compatible
** You can fetch these modules by running https://github.com/multitheftauto/mtasa-blue/blob/master/win-build.bat
** You can fetch these modules by running https://github.com/multitheftauto/mtasa-blue/blob/master/win-build.bat
* Never block MTA traffic (client or server) in your project
* Never block any MTA traffic (client and server communicates with official MTAHQ servers) in your project


=== AC features missing in custom builds ===  
=== AC features missing in custom builds ===  
Line 40: Line 42:
* No detection against various Lua injection methods
* No detection against various Lua injection methods
* Much fewer AC heuristics and protection of internals
* Much fewer AC heuristics and protection of internals
* Continuous updates for all patched methods and vulnerabilities to write cheats based on aren't guaranteed (occasionally, they are cherry-picked; one of the reasons why updating netc.dll to the latest offered version is beneficial)
* Continuous updates for all patched methods and vulnerabilities to write cheats based on aren't guaranteed (occasionally, they are cherry-picked; one of the reasons why updating netc.dll to the latest offered version is beneficial). This is the biggest (and most important) part of the original anti-cheat.
* MTA modules aren't checked for modifications or remote hooking/memory writing
* MTA modules aren't checked for modifications or remote hooking/memory writing
* and much more
* and much more


Generally, most of what will work are some signature-based detections. No heuristics, patched methods, and patched vulnerabilities. Signature-based detections are the weakest kind, and the mainstream anti-cheat tackles the actual problem rather than being signature-based.
Generally, most of what will work are some signature-based detections. No heuristics, patched methods, and patched vulnerabilities. Signature-based detections are the weakest kind, and the mainstream anti-cheat tackles the actual problem rather than being signature-based.

Revision as of 01:07, 6 December 2020

[[{{{image}}}|link=|]] Note: Information on this page does not apply to the official builds of MTA.

Multi Theft Auto is open-source software, freely available on GitHub multitheftauto/mtasa-blue. Anyone is free to fork the project as long as they abide by the terms of our license, The GNU General Public License v3.

You can find explanations of the GNU GPL v3 here: choosealicense.com and tldrlegal.com. Our license takes precedence, but this generally means that you must:

  • state significant changes made to the software
  • disclose the source code
  • share your code under the same license
  • include the original copyright notice

If you are working on a fork, we ask that you include a link to your homepage and where we can find the source code. This allows us to keep up to date on projects and even introduce improvements to the vast majority of MTA players. Adding your Discord name is not compulsory, but if you ask for development help on our GitHub, forum or Discord, it helps us know what project you are from and that you are abiding by the license.

List of forked projects

Forks and anti-cheat

(from https://wiki.multitheftauto.com/wiki/Anti-cheat_support_for_custom_builds)

Custom MTA builds and forked projects will face some challenges relating to anti-cheat (AC). Due to the fact that many forks and custom builds perform in ways that the anti-cheat module does not expect, we were forced to remove plenty of advanced detections and protections from the anti-cheat, in order to create and provide a separate module (the one from https://mirror.mtasa.com/bdata/netc.dll) that, simply put, is a much weaker anti-cheat than the 'real' MTA has. So, unless you take measures of your own, your forked project can (and will) easily become infested with cheaters. Therefore reading the below information can help.

The anti-cheat and netcode components (netc.dll, net.dll, FairplayKD.sys) are, unlike MTA itself, closed-source, and therefore without informing yourself it would be hard to overcome the challenges.

AC is generally unsupported for forked projects and may be dropped entirely in the future. This means that you generally cannot rely on the MTA anti-cheat for your fork. We strongly advise that you write and implement your own AC.

If you cannot build your own AC, here are steps you can follow to get the most out of our (unsupported) AC:

  • Always use the version of our net modules (e.g netc.dll and net.dll) that matches our commit on master that your fork is based on
  • Never block any MTA traffic (client and server communicates with official MTAHQ servers) in your project

AC features missing in custom builds

  • No detection of changes to gta_sa code section
  • No detection of changes to certain gta_sa variables
  • SetElementData not protected against external changes
  • No detection against various Lua injection methods
  • Much fewer AC heuristics and protection of internals
  • Continuous updates for all patched methods and vulnerabilities to write cheats based on aren't guaranteed (occasionally, they are cherry-picked; one of the reasons why updating netc.dll to the latest offered version is beneficial). This is the biggest (and most important) part of the original anti-cheat.
  • MTA modules aren't checked for modifications or remote hooking/memory writing
  • and much more

Generally, most of what will work are some signature-based detections. No heuristics, patched methods, and patched vulnerabilities. Signature-based detections are the weakest kind, and the mainstream anti-cheat tackles the actual problem rather than being signature-based.