You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+6-2Lines changed: 6 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,8 @@ Here's what to do whenever adding new rules:
7
7
3. Add corresponding lines to [`tests/types/_NonMatchingTests.txt`](tests/types/_NonMatchingTests.txt) that your test should NOT pick up on. *To reduce merge conflicts, we suggest inserting new strings into random place in the file, instead of at the bottom.*
8
8
4. Add a corresponding file in [`descriptions`](descriptions) with a matching name describing the technology in a short manner.
9
9
10
+
Descriptions should be 1-2 sentences written in a neutral matter, rather than just marketing talk from the authors website (i.e. avoid saying #1 tool).
11
+
10
12
**Example:**
11
13
Let's say we want to add a rule to detect the FNA game engine. This one is very convenient because it can be matched by simply finding a file named `fna.dll`. However, we also want to be sure to match `some/directory/fna.dll`, but we *don't* want to return a match if we find `some_file_that_just_ends_with_fna.dll` or `fna.dllsomethingelse`.
12
14
@@ -29,6 +31,8 @@ Prefer making regex rules that end with a clean extension name, because we optim
29
31
- One: `\.dll$`
30
32
- Multiple: `\.(?:dylib|dll|so)$`
31
33
34
+
Prefer detecting unique file extensions, rather than `.dll`.
35
+
32
36
Then add some lines to [`tests/types/_NonMatchingTests.txt`](tests/types/_NonMatchingTests.txt) with this content:
33
37
34
38
```
@@ -41,15 +45,15 @@ sub/dir/fna.dllwhoops
41
45
42
46
If the rule is written correctly, it should NOT match any of these filenames.
43
47
44
-
Notice the `fna_dll` where there is a`_` in place of `.` to make sure the dot was escaped correctly in the regex.
48
+
Notice the `fna_dll` where there is an`_` in place of `.` to make sure the dot was escaped correctly in the regex.
45
49
46
50
- For `.`: replace them with another character to test that they are escaped, `.abc` -> `_abc` (must be a dot, and not any character)
47
51
- For `^`: add text before the matching regex, `^test` -> `abctest` (must start)
48
52
- For `$`: add text after the matching regex, `test$` -> `testabc` (must end)
49
53
50
54
New contributions should make sure they also provide tests and have run those tests themselves, and should be careful about introducing lots of false positives or negatives. Ideally, you want to look for the most unique looking file that is common to most or all games of a particular engine/technology, that is very unlikely to occur for other apps.
51
55
52
-
Also note that we are not particularly interested in maintaining rules for engines that only like 3 people have ever used.
56
+
Also note that we are not particularly interested in maintaining rules for engines that only about 3 people have ever used.
Copy file name to clipboardExpand all lines: README.md
+3-5Lines changed: 3 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -70,19 +70,17 @@ Some things to note:
70
70
71
71
A two-pass script runs over every file. On the first pass it tries to make a "slam dunk" identification based on a strong signal from any file. **Engine** patterns are primarily used here, looking for obvious things like Unity, Unreal, MonoGame, RPGMaker, XNA/FNA, AdobeAIR, etc. These game engines often have very clear signatures — ie "UnityEngine.dll". An "Engine" pattern should be strong enough to confidently match against a particular engine based on _one_ single positive match against any file in the depot.
72
72
73
-
**Evidence** patterns are meant for building up "hints" about what kind of engine or technology might be in use when a slam-dunk identification is not possible from a single pattern match. Once all the obvious tests have been made, if a particular app has no clear identification it will do a second pass in [`FileDetector.php`](tests/FileDetector.php) by calling the `TryDeduceEngine()` function. For instance, GameMaker games are hard to identify based on any single file, but they have a common pattern: an "options.ini" file, a "data.win" file, and an audio file matching the pattern `snd_<something>.ogg`. The problem is that these are pretty generic filenames that often occur outside of GameMaker games. However, once we have already ruled out most of the other engines from our first logic pass if we find two or more of these three file patterns chances are very good we're looking at a GameMaker game.
73
+
**Evidence** patterns are meant for building up "hints" about what kind of engine or technology might be in use when a slam-dunk identification is not possible from a single pattern match. Once all the obvious tests have been made, if a particular app has no clear identification it will do a second pass in [`FileDetector.php`](tests/FileDetector.php) by calling the `TryDeduceEngine()` function.
74
74
75
-
## Tests
76
-
77
-
If you have PHP installed locally, you can run the tests from the root directory by typing `php tests/Test.php`.
75
+
For instance, GameMaker games are hard to identify based on any single file, but they have a common pattern: an "options.ini" file, a "data.win" file, and an audio file matching the pattern `snd_<something>.ogg`. The problem is that these are pretty generic filenames that often occur outside of GameMaker games. However, once we have already ruled out most of the other engines from our first logic pass if we find two or more of these three file patterns chances are very good we're looking at a GameMaker game.
78
76
79
77
## Contributing
80
78
81
79
See [CONTRIBUTING.md](CONTRIBUTING.md) file.
82
80
83
81
## How SteamDB uses this information
84
82
85
-
SteamDB makes two sets of identifications — the technology the *file* likely represents, and the technology the *app* makes use of. Each file will match against at most one rule in a section. Therefore the order of the rules and the two-pass tests matters, but an app can have multiple rulings applied to it.
83
+
SteamDB makes two sets of identifications — the technology the *file* likely represents, and the technology the *app* makes use of. Each file will match at most one rule per section. Therefore the order of the rules and the two-pass tests matters, but an app can have multiple rulings applied to it.
86
84
87
85
It is even possible for an app to have multiple game engines — this happens when an app represents a multi-game compilation, or uses one technology for its launcher app and one for the game itself, or whatever.
[**BattlEye**](https://www.battleye.com/) is an anti-cheat system which protects games and their players from hacking, cheating and other forms of attacks.
1
+
[**BattlEye**](https://www.battleye.com/) is an anti-cheat system that protects games and their players from hacking, cheating, and other forms of attacks.
**Nexon Game Security** (also known as Black Cipher) is an anti-cheat technology developed by Nexon Korea Corporation.
1
+
[**Nexon Game Security**](https://www.nexon.com/) (also known as Black Cipher) is an anti-cheat technology developed by Nexon Korea Corporation that provides real-time monitoring and protection against cheating, hacking, and unauthorized game modifications in online multiplayer games.
[**Easy Anti-Cheat**](https://www.easy.ac/) is the industry-leading anti–cheat service, countering hacking and cheating in multiplayer PC games through the use of hybrid anti–cheat mechanisms.
1
+
[**Easy Anti-Cheat**](https://www.easy.ac/) is the industry-leading anti-cheat service, countering hacking and cheating in multiplayer PC games through the use of hybrid anti-cheat mechanisms.
HackShield is an anticheat software by [**AhnLab**](https://global.ahnlab.com/site/main.do).
1
+
[**HackShield**](https://global.ahnlab.com/site/main.do) is anti-cheat software developed by AhnLab that provides real-time protection against game hacking tools, memory manipulation, and unauthorized modifications, commonly used in Korean MMORPGs and online games to maintain fair gameplay.
[**TenProtect**](https://intl.cloud.tencent.com/) is an anti-cheat system developed by Tencent that provides comprehensive protection against cheating, hacking, and unauthorized game modifications in online multiplayer games, particularly used in Tencent's gaming portfolio and other Chinese game titles.
[**XIGNCODE3**](https://wellbia.com/) is a game anti-cheat software developed by Korean company Wellbia.
1
+
[**XIGNCODE3**](https://wellbia.com/) is a comprehensive game anti-cheat software developed by the Korean company Wellbia that provides real-time protection against game hacks, cheats, and unauthorized modifications, commonly used in Korean and international online games.
0 commit comments