И вот эти товарищи, много раз применяя ошибки и уязвимости клиента (которые там появились по вине и недосмотру разработчиков!) демонстрировали что может делать человек, знающий о них.
Не совсем так. Клиент находится на компьютере игрока, а значит ему априори нельзя доверять. Если там нет ошибок и уязвимостей, их можно создать. Потому что клиент находится целиком в руках читера или хакера и с ним можно делать что угодно.
Вот одна из уязвимостей, которыми пользовались RaOV. Даже человеку, далекому от программирования можно будет понять ее суть.
Когда мы хотим скастовать спелл, мы нажимаем кнопочку или мышкой в спеллбуке. Упрощенно, это заставляет клиент WoW послать на сервер пакет с названием CMSG_CAST_SPELL, где префикс CMSG -
Client
Me
Ssa
Ge - клиентское сообщение. Что в этот пакет входит? Не будем вдаваться в детали глубоко, но там есть например spellID - номер кастуемого спелла. Сервер должен обработать этот запрос и послать либо SMSG_CAST_FAILED, т.е по каким-то причинам запретить каст, либо послать SMSG_SPELL_START - разрешающий пакет, помимо всего прочего, он запускает полоску каста в интерфейсе. SMSG -
Server
Me
Ssa
Ge - серверное сообщение.
Первое, что приходит на ум, если сервер просто берет и подставляет spellID из пакета клиента в своим внутренние функции каста (ну пусть будет как на пиратке Spell::prepare и дальше вся цепочка), просто подменить ID спелла на любой ГМский, например ID 5 или Death Touch. Чтобы не дать читеру это сделать, на сервере достаточно поставить проверку, а выучен ли этот спелл у игрока? ГМские и внутренние заклинания не могут быть выучены в книжку ясен пень. Вроде как проверка работает, ура, мы победили читеров. Нет, близы решили что им слишком скучно и создали механику, при которой спелл мог кастоваться, но в книжке его могло не быть. Первое появление таких спеллов - это ExtraActionButton, а далее это были спеллы гарнизона (кто-то их помнит??). И наша проверка, такая хорошая, будет ломать эту механику, поскольку не даст этим спеллам кастоваться тоже. Что делать? Возможно стоит добавить таким спеллам особое свойство - но тут кроется дьявол. Это в будущем нужно добавлять КАЖДОМУ спеллу в игре с этой механикой, новым и старым. Когда близы за патч создают более 75к спеллов, легко забыть поставить нужной свойство.
Ну тут пришла новая фича - Пиратская буря. И там спеллы вроде как бы отдельного режима, и конечно же они тоже не учатся в книжку. Потому что в Пиратской Буре нет настоящих заклинаний. Это эмуляция, обман, наебка. Нас сажают в скрытое транспортное средство (vehicle) со своей панелью абилок и прописанных свойств. Соответственно, эти спеллы тоже требуют особые условия проверки на сервере. И конечно про них забыли. Потому что в отличие от простой проверки, выучен ли спелл в книжку, это куда более технически сложный аспект. Этим RAoV и воспользовались. Я рассказал очень упрощенно, возможно там были иные нюансы, но суть одна.
И еще могу добавить, что сейчас нет почти настоящих программистов, есть кодеры, люди, которые пишут код, не задумываясь о безопасности и оптимизации. Может они делают больше работы, чем программисты, которые нормально обучены, но качество их работы весьма невысокое. И в конечном итоге такие ошибки могут повлечь не только "безобидные" хаки в игре, но и взлом инфраструктуры. В WotLK-клиенте официальном присутствует уязвимость, через которую пиратский сервер, например, может выполнять любой произвольный код на компьютере игрока.