Skip to content
Все статьи
This article is available in English
Опубликовано8 мин чтения

Дюп денег в RedM: как он происходит и как поймать его до краха экономики

Дюп денег в RedM редко заметен в чате. Типичные причины, симптомы, которые пропускают владельцы, что делать в день находки и как проводить аудит.

RedManticheatдетекцияэксплуатация

Также доступно на языках:EnglishFrançaisEspañolRomână

Дюп денег в RedM почти никогда не объявляет о себе. Никто не выкладывает скриншот, никого не банят. В один вечер несколько игроков становятся богатыми, магазины кажутся дешёвыми, а через две недели новички не могут купить лошадь, потому что все цены тихо вздули, компенсируя это. К тому времени, как персонал заметит, экономика, которую вы строили, уже стала другой экономикой.

Эта статья об этом медленном крахе: откуда берётся эксплойт дюпа в RedM, как он выглядит в ваших данных, что делать в день, когда вы нашли его, и что античит может и чего не может с этим сделать. Причины мы намеренно описываем в общем виде. Цель в том, чтобы помочь вам исправлять и замечать проблемы, а не вручить кому-то рецепт.

Дюп денег в RedM это обычно логическая ошибка, а не чит

Слово «дюп» покрывает две очень разные вещи, и если их перепутать, вы пойдёте не к тому исправлению.

  • Читер создаёт ценность из ничего. Чит-меню вызывает скрытое серверное событие или злоупотребляет событием, которое открывает ваш скрипт, и выдаёт себе деньги или предметы. Это проблема для античита.

  • Законный игрок находит брешь в вашей логике. Никакого чит-софта: просто неудачная последовательность обычных действий, которые ваши скрипты обрабатывают плохо. Это проблема разработки, и ни один античит не остановит её, следя за игроком.

Большинство реальных инцидентов относятся ко второму виду или смешанные: игрок обнаруживает логическую брешь, делится ею, и десяток других её повторяет. Поэтому экономический эксплойт в RedM нужно сначала разбирать как ошибку вашего сервера и лишь затем как проблему поведения.

Типичные причины дюпа на VORP и RSG

Фреймворк важен меньше, чем можно подумать. Дюп на VORP и дюп на сервере RSG или RedEM обычно происходят от одного короткого списка ошибок в скриптах, ваших или сторонних ресурсов.

Сервер верит тому, что говорит клиент

Серверное событие это сообщение, которое может отправить кто угодно, а аргументы выбирает клиент. Если ваш обработчик берёт сумму, цену или количество предметов из аргументов и применяет их, исход решает игрок. Сервер должен вычислять сумму сам. Полный шаблон и почему source единственное, чему можно доверять, описаны в статье как защитить серверные события RedM.

The shape of a safe handler (server side, simplified)
RegisterNetEvent('shop:sell', function(itemName)
  local src = source
  -- The client only names the item. Quantity, price and
  -- ownership are all decided here, from server state.
  local owned = GetOwnedCount(src, itemName)
  local price = GetServerPrice(itemName)
  if owned < 1 or not price then return end

  -- Take first, pay second, and only once.
  if RemoveItem(src, itemName, 1) then
    AddMoney(src, price)
  end
end)

Записи в инвентарь и базу данных, гоняющиеся друг с другом

Выдача предмета и сохранение персонажа часто отдельные шаги. Если два действия пересекаются, например два запроса обрабатываются почти одновременно, оба могут прочитать одно и то же начальное состояние, и оба могут пройти успешно. Результат: ценность, созданная одним лишь таймингом. Лекарство скучное: проверять и менять состояние за один шаг и никогда не позволять обработчику платить до того, как списание действительно произошло.

Тайминг отключения и переподключения

Игрок, вышедший во время транзакции или сохранения, может получить обратно старое состояние, тогда как результат действия сохранится где-то ещё. Представьте обмен, продажу или перенос в тайник, прерванные в неудачный момент. Каждый скрипт, переносящий ценность между двумя местами, должен определять, что происходит, если игрок отвалился на полпути.

Синхронизация тайников и контейнеров

Тайники, седельные сумки, фургоны и общие хранилища это самое частое место дюпа предметов, потому что к одному контейнеру могут обращаться несколько игроков и несколько скриптов. Слабая синхронизация между тем, что показывает клиент, и тем, что хранит сервер, и есть место, где предметы появляются дважды.

Аккаунты-мулы переносят добычу

Тот, кто нашёл брешь, редко оставляет добычу на аккаунте, который её произвёл. Она уходит на чистого персонажа, часто созданного для этой цели и связанного с первым общей машиной или сетью. Этот обходной путь также ваша возможность: источник видно плохо, но получатель образует закономерность. О том, как ловят связанные аккаунты, мы рассказываем в статье о банах по HWID.

Как дюп денег в RedM выглядит из кресла владельца

Вы не увидите само событие. Вы увидите его след в данных:

  • Денежная масса подскакивает. Общая сумма наличных и банка по всем персонажам растёт быстрее, чем объясняют часы игры, или ступенькой, совпадающей с одним вечером.

  • Новый игрок богаче ваших ветеранов. Богатство обычно следует за игровым временем. Новый персонаж с состоянием и малым временем онлайн это самый ясный одиночный признак.

  • Балансы меняются, пока владельца нет в сети. Деньги, изменившиеся на аккаунте, игрок которого был офлайн, редко невинны.

  • Невозможные стаки. Количество, намного превышающее допустимое в игре, или отрицательное число это классический отпечаток дюпа предметов или сломанного переполнения вниз.

  • Много аккаунтов кормят один. Несколько персонажей, часто связанных, отправляют ценность одному и тому же получателю.

День, когда вы нашли эксплойт дюпа в RedM

Порядок важен. Команды, спешащие банить, обычно ничего не исправляют, а иногда делают хуже.

  1. 1

    Заморозьте утечку. Отключите подозрительную функцию или ресурс сейчас, даже если вы не уверены, что причина в нём. Магазин, закрытый на час, обходится дешевле, чем ещё одна ночь дублирования.

  2. 2

    Сделайте снимок. Сделайте бэкап базы данных, прежде чем что-либо трогать, чтобы сравнить до и после и отменить собственные ошибки.

  3. 3

    Проследите источник. Найдите первый аккаунт, ненормально разбогатевший, затем проследите ценность вперёд до получателей. Сопоставьте время с логами ваших скриптов, чтобы найти обработчик.

  4. 4

    Откатывайте осторожно. Убирайте только то, что доказуемо незаконно, аккаунт за аккаунтом, вместо того чтобы восстанавливать глобальный бэкап, стирающий прогресс честных игроков. Документируйте, что вы убрали и почему.

  5. 5

    Исправьте обработчик до разбана или повторного открытия чего-либо. Если брешь ещё открыта, вернувшийся игрок воспользуется ею снова. Затем решайте о санкциях, с доказательствами, для тех, кто сознательно наживался.

  6. 6

    Расскажите сообществу. Короткое фактическое сообщение лучше слухов, а чёткая политика заставляет следующего задуматься дважды.

Что Baobab AC делает с экономическим эксплойтом в RedM

Baobab AC подходит к этому с двух сторон: не даёт ценности внедряться и находит то, что просочилось.

У двери: Anti Economy Trigger Exploit

Anti Economy Trigger Exploit не даёт читерам внедрять скрытые команды, чтобы выдать себе деньги, золото или ценные предметы из ниоткуда. Он нацелен на путь через чит-меню. Он не заменяет безопасный обработчик: если один из ваших собственных скриптов платит по присланному клиентом числу легитимным путём, логику исправлять вам, а детектор, следящий за игроком, не может знать, что число было неверным.

Anti Multi-Account Exploit закрывает шаг с мулом. Он обнаруживает переводы денег и предметов между связанными альт-аккаунтами, сопоставляя общий IP, HWID и идентичность Discord, и отмечает также повторный вход после бана.

Потом: Economy Forensics

Economy Forensics (экономическая экспертиза) это аудит того, что первый слой увидеть не смог. Это аудит вашей игровой базы данных в режиме только чтения, сопоставленный с игровым временем, известным только античиту. Он смотрит на:

  • денежную массу во времени, чтобы заметить ступеньку, не совпадающую с вашей активностью;

  • выбросы богатства, то есть богатство, несоразмерное сыгранному времени;

  • сети мулов, где несколько аккаунтов кормят один;

  • дюп предметов и невозможные стаки, включая отрицательные количества.

Сопоставление с игровым временем это то, что инструмент для базы данных в одиночку сделать не может. Ваша база знает баланс. Только античит знает, был ли этот игрок вообще подключён, когда баланс изменился, и сколько он играет в сумме.

Аудит запускается по расписанию, а также его можно запустить вручную из панели.

Ваша схема, а не догадка о ней

У аудита есть чтение для VORP, семейства QB (в него входят RSG и QBR) и RedEM. Серверы редко работают на этих схемах без изменений, поэтому есть и помощник сопоставления для собственных или изменённых баз данных: дополнительная валюта, переименованная таблица инвентаря, банк в отдельной таблице, инвентарь в JSON или самодельный фреймворк. Таблицы и столбцы вы выбираете из списков, прочитанных на вашей реальной базе, а не печатаете имена, и каждая сопоставленная часть должна пройти тест, прежде чем её можно сохранить. Если сопоставление перестаёт соответствовать базе, аудит возвращается к автоматическому определению и объясняет причину в своём отчёте о покрытии.

Это важно, потому что неверное сопоставление ломается тихо: оно возвращает пустые инвентари и нулевые балансы, а не ошибку. Если вы работаете именно на VORP, остальную настройку описывает руководство по античиту для VORP.

Что на самом деле значит «только чтение» и чего аудит не делает

Прямота в этом вопросе избавит вас от неприятных сюрпризов позже.

  • Он только читает. Аудит отправляет запросы SELECT по идентификаторам, сверенным с вашей реальной схемой. Он никогда не правит баланс, не убирает предмет и не трогает аккаунт.

  • Он никогда не выдаёт санкций. Каждый результат это зацепка для проверки человеком. Ничто не банится, не кикается и не откатывается автоматически из-за находки аудита.

  • Он идёт через ваш игровой сервер. Запросы идут через ресурс вашего сервера и его подключение к базе, по одному, поэтому большая база означает более медленный аудит. Он задуман аккуратным, а не мгновенным.

  • Он находит симптомы, а не причины. Аудит сообщает, кто аномален и когда. Найти обработчик, через который произошла утечка, по-прежнему ваша задача, с вашими собственными логами.

  • Это не слой предотвращения. Он не может остановить дюп в момент, когда тот происходит. Он сокращает время между первым злоупотреблением и днём, когда вы о нём узнаёте.

  • Действуют ограничения тарифа. Economy Forensics входит в тарифы Pro и Network, но не в Starter. См. цены.

Для зацепки нужен человек, отличающий ограбление от дюпа, и та же дисциплина применима к любой детекции: посмотрите, как мы относимся к ложным срабатываниям во всём остальном продукте.

Короткий чек-лист для вашего сервера

  • Проверьте каждое серверное событие, затрагивающее деньги, предметы или работы: клиент называет действие, но никогда не сумму.

  • Сделайте «сначала списать, потом заплатить» правилом в каждой транзакции.

  • Решите, что происходит с обменом или продажей, если игрок отключился на полпути.

  • Регулярно смотрите на общую денежную массу, а не только после жалобы.

  • Храните бэкапы базы данных, восстановление из которых вы проверяли.

  • Считайте богатый новый аккаунт вопросом, на который нужно ответить, а не победой, которую можно проигнорировать.

Экономика RedM живёт, пока игроки верят в её справедливость. Дюпы будут случаться, потому что в скриптах есть ошибки. Вы контролируете то, как долго один из них остаётся незамеченным. Если хотите увидеть более широкую картину того, как складывается детекция, начните со статьи как работает античит RedM и посмотрите что делает каждая возможность, прежде чем выбирать тариф.

Читать дальше

Судите по фактам, а не по обещаниям

Демо-панель открыта только для чтения на реальных данных, без регистрации.

Everything on one page: Baobab anticheat, detections, evidence and panel.