-
Notifications
You must be signed in to change notification settings - Fork 27
/
README.GameGuard
315 lines (226 loc) · 12.8 KB
/
README.GameGuard
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
==============================================================================================
English
GameGuard v1.0 for Myth, (c) 2010-2011 Selector for Myth branch
https://bitbucket.org/sun/myth-core/
I express gratitude to authors of previous anticheat versions, on what base is made this code
- gimly
- CWN
- /dev/rsa (original author for mangos)
also thnx to those who wrote code for extra checking, what used in this code
- Insider42
- zhenya
- TOM_RUS
GameGuard configs can be changed in characters/anticheat_config table.
Config can be reloaded with ".reload gameguard" command.
In Myth configs left only these:
GameGuard.Enable = 0 (Yes/No)
GameGuard.Warden = 0 (Yes/No)
GameGuard.DelayAfterAction = 30 (skip this time after any actions, applyed to player
before other action be apply to his, but still all actions will be logged.)
GameGuard.GmLevel = 0 (level, higher levels wont be checked. 0 - player lvl.)
== Base
1. Checks
There are usual checks (from 0 to 99) and additional (sub-checks, numbers - 100* number of usual check + 1...99)
1st INT parameter is checked for all checks by default - time after what, countdown of puncture will drop.
If not set - time is taken from "GameGuard.DelayAfterAction".
main checks:
// Check types
CHECK_NULL = 0,
No parameters, empty check.
CHECK_MOVEMENT = 1,
Pseudo-check. this function holds information about other movement checks.
Parameters - period (should be 0), actions and messages(not used)
CHECK_SPELL = 2,
Pseudo-check. For now, nothing happens.
CHECK_QUEST = 3,
In progress.
CHECK_TRANSPORT = 4,
Check ON_TRANSPORT condition by Insider42
CHECK_DAMAGE = 5,
Check server bugs with damage.
CHECK_ITEM = 6,
Check ons WPE cheating with item duplicate.
CHECK_WARDEN = 7,
Warden checks from zhenya && TOM_RUS as part of GameGuard
2. Subchecks
additional checks:
// Check subtypes
// Movement checks
CHECK_MOVEMENT_SPEED = 100 * CHECK_MOVEMENT + 1,
Check for speed hack. Parameters - period (check default value in db), 1 float - speed (0,01 - max normal speed. In rare cases including lags can be 0,02).
CHECK_MOVEMENT_FLY = 100 * CHECK_MOVEMENT + 2,
check for fly hack
First parameter - height from what check is started (for avoiding (crashes, loops?? колодцев) and bug holes in vmaps).
CHECK_MOVEMENT_MOUNTAIN = 100 * CHECK_MOVEMENT + 3,
Checking Wall climb hack. First float parameter - Z speed max, second - tangens of moving angle.
CHECK_MOVEMENT_WATERWALKING = 100 * CHECK_MOVEMENT + 4,
Checking for water walk hack.
CHECK_MOVEMENT_TP2PLANE = 100 * CHECK_MOVEMENT + 5,
Parameter - delta from 0 for plane and delta for check. With default parameters works fine.
CHECK_MOVEMENT_AIRJUMP = 100 * CHECK_MOVEMENT + 6,
Jumping in air. First parameter - from what height check is triggered.
CHECK_MOVEMENT_TELEPORT = 100 * CHECK_MOVEMENT + 7,
If distance is greater then 1 (opcode) from number in parameter - alarm is triggered.
In future:
CHECK_MOVEMENT_FALL = 100 * CHECK_MOVEMENT + 8,
// Spell checks
CHECK_SPELL_VALID = 100 * CHECK_SPELL + 1,
If client is sending spell cast, but its not in dbc file - alarm is triggered.
Also could be result of damaged packets from clients.
CHECK_SPELL_ONDEATH = 100 * CHECK_SPELL + 2,
Not done yet
CHECK_SPELL_FAMILY = 100 * CHECK_SPELL + 3,
Check works only for skill 769 (only GM spells).
CHECK_SPELL_INBOOK = 100 * CHECK_SPELL + 4,
Still in progress (will do simple check - if player has spell in spell-book)
// Damage checks
CHECK_DAMAGE_SPELL = 100 * CHECK_DAMAGE + 1,
Spell damage limit. Parameter - limited meaning.
CHECK_DAMAGE_MELEE = 100 * CHECK_DAMAGE + 2,
Melee damage limit. Parameter - limited meaning.
// Item checks
CHECK_ITEM_UPDATE = 100 * CHECK_ITEM + 1,
Myth check on item duplicate with anicheat actions.
// Warden checks
CHECK_WARDEN_MEMORY = 100 * CHECK_WARDEN + 1,
Many warden-related memory checks
CHECK_WARDEN_KEY = 100 * CHECK_WARDEN + 2,
check encryption key
CHECK_WARDEN_CHECKSUM = 100 * CHECK_WARDEN + 3,
check checksum
// End of list
CHECK_MAX
3. Actions (what will happen if GameGuard will detect cheat)
Can be set to any check.
ANTICHEAT_ACTION_NULL = 0,
Empty action. Doesn't do nothing. If action1 = 0 then wont be logged.
ANTICHEAT_ACTION_LOG = 1,
Will only registrate detected check fails.
ANTICHEAT_ACTION_ANNOUNCE_GM = 2,
Announce to GMs about detected cheating action (GMs with lvl higher or equal to param1). If 0 - then message will be sent to all.
ANTICHEAT_ACTION_ANNOUNCE_ALL = 3,
Announce into public chat about detected cheating action.
ANTICHEAT_ACTION_KICK = 4,
Just kick.
ANTICHEAT_ACTION_BAN = 5,
Just ban. Parameter - time in seconds.
ANTICHEAT_ACTION_SHEEP = 6,
Transformation into random animal (if in fly - then with parachute).
Parameter - time in milliseconds.
ANTICHEAT_ACTION_STUN = 7,
Simple stun. Parameter - time in milliseconds.
ANTICHEAT_ACTION_SICKNESS = 8,
Adding resurrection sickness spell. Parameter - time in milliseconds.
================================================================================================
GameGuard v3 for Myth, (c) 2010-2011 Selector
https://bitbucket.org/sun/myth-core/
Выражаю благодарность авторам предыдущих атичитов, на базе которых сделан этот -
- gimly
- CWN
- /dev/rsa
а также людям написавшим отдельные проверки, использованные здесь
- Insider42
Настройка GameGuard производится в таблице characters/anticheat_config
Конфиг перегружается онлайн командой .reload GameGuard
в конфиге мангоса остались только
GameGuard.Enable = 0 (да/нет)
GameGuard.Warden = 0 (да/нет)
GameGuard.DelayAfterAction = 30 (время, которое после акции плеер не трогается (не применяются другие
actions). лог все равно ведется.)
GameGuard.GmLevel = 0 (уровень, выше которого не проверять. 0 - только игроков)
== база
1. Проверки
Проверки бывают основные (номера с 0 до 99) и дополнительные (subchecks, номера - 100* номер основной
проверки + 1...99)
у всех проверок 1й INT параметр по умолчанию - время через которого счетчик проколов сбрасывается.
если не указано - берется время из GameGuard.DelayAfterAction
основные проверки:
// Check types
CHECK_NULL = 0,
нет параметров. пустая проверка-заглушка.
CHECK_MOVEMENT = 1,
псевдопроверка. в ней проводится накопление информации для других проверок движения.
параметры - период (должен быть 0), экшны и сообщения (не используются)
CHECK_SPELL = 2,
псевдопроверка. в ней пока ничего не проводится.
CHECK_QUEST = 3,
в процессе.
CHECK_TRANSPORT = 4,
проверка ON_TRANSPORT состояния by Insider42
CHECK_DAMAGE = 5,
проверка на баги сервера с дамагом.
CHECK_ITEM = 6,
проверки на баги предметов (в настоящее время только на дуп при помощи WPE).
CHECK_WARDEN = 7,
Проверки встроенного анитичита WOW Warden как часть GameGuard
2. Субпроверки
дополнительные проверки:
// Check subtypes
// Movement checks
CHECK_MOVEMENT_SPEED = 100 * CHECK_MOVEMENT + 1,
Проверка на СХ. параметры - период (умолчания смотрите в базе), 1 float - скорость (0,01 - максимальная
нормализованная скорость. с учетом лагов божет быть до 0,02 но редко)
CHECK_MOVEMENT_FLY = 100 * CHECK_MOVEMENT + 2,
первый параметр - высота с которой начинаем проверять (для обхода колодцев и дыр в вмапсах).
CHECK_MOVEMENT_MOUNTAIN = 100 * CHECK_MOVEMENT + 3,
проверка на чит Wall climb. Первый параметр float - скорость перемещения по Z, второй - тангенс угла.
CHECK_MOVEMENT_WATERWALKING = 100 * CHECK_MOVEMENT + 4,
проверка на чит с хождением по воде.
CHECK_MOVEMENT_TP2PLANE = 100 * CHECK_MOVEMENT + 5,
параметры - дельта от 0 для plane и дельта для проверки. с дефолтными ловит нормально.
CHECK_MOVEMENT_AIRJUMP = 100 * CHECK_MOVEMENT + 6,
прыжок в воздухе. первый параметр - от какой высоты начинаем проверять.
CHECK_MOVEMENT_TELEPORT = 100 * CHECK_MOVEMENT + 7,
если расстояние за 1 тик (опкод) больше чем параметр - сразу аларм.
в планах:
CHECK_MOVEMENT_FALL = 100 * CHECK_MOVEMENT + 8,
// Spell checks
CHECK_SPELL_VALID = 100 * CHECK_SPELL + 1,
если клиент присылает каст спелла, а его в ДБЦ нету - сразу будет этот аларм.
может быть результатом битых пакетов.
CHECK_SPELL_ONDEATH = 100 * CHECK_SPELL + 2,
в процессе
CHECK_SPELL_FAMILY = 100 * CHECK_SPELL + 3,
в настоящее время проверка идет только на скилл 769 (ГМ-онли спеллы)
CHECK_SPELL_INBOOK = 100 * CHECK_SPELL + 4,
в процессе (будет просто проверка есть ли спелл в книге у плеера)
// Damage checks
CHECK_DAMAGE_SPELL = 100 * CHECK_DAMAGE + 1,
ограничение по спеллдамаге. параметр - просто предельное значение.
CHECK_DAMAGE_MELEE = 100 * CHECK_DAMAGE + 2,
ограничение по мили-дамаге. параметр - просто предельное значение.
// Item checks
CHECK_ITEM_UPDATE = 100 * CHECK_ITEM + 1,
просто экшн при непрохождении встроеной проверки мангоса на соответствие предмета.
// Warden checks
CHECK_WARDEN_MEMORY = 100 * CHECK_WARDEN + 1,
множество разных проверок памяти из Warden. Подробнее - в доку на Warden
CHECK_WARDEN_KEY = 100 * CHECK_WARDEN + 2,
проверка валидности ключа Warden.
CHECK_WARDEN_CHECKSUM = 100 * CHECK_WARDEN + 3,
проверка контрольной суммы пакетов. основной метод борьбы с WPE.
// End of list
CHECK_MAX
3. Экшны (действия которые производит GameGuard по обнаружению чита)
можно поставить на любую проверку.
ANTICHEAT_ACTION_NULL = 0,
пустой экшн. ничего не делать. если action1 = 0 то даже лог не ведется.
ANTICHEAT_ACTION_LOG = 1,
только регистрация срабатываний.
ANTICHEAT_ACTION_ANNOUNCE_GM = 2,
анонс найденного читера только ГМам с уровнем доступа выше или равным param1. если 0 -
значит всем
ANTICHEAT_ACTION_ANNOUNCE_ALL = 3,
анонс найденного читера в общий чат.
ANTICHEAT_ACTION_KICK = 4,
просто кик.
ANTICHEAT_ACTION_BAN = 5,
просто бан. параметр - время в секундах.
ANTICHEAT_ACTION_SHEEP = 6,
превращение в случайное животное (если в полете - то с парашютом).
параметр - время в миллисекундах.
ANTICHEAT_ACTION_STUN = 7,
просто стан. параметр - время в миллисекундах.
ANTICHEAT_ACTION_SICKNESS = 8,
наложение resurrection sickness. параметр - время в миллисекундах.
================================================================================================