Логотип игрового форума RF-Cheats.ru    
Новости онлайн игр Обход античитов Чёрный рынок Реклама и привилегии Разработка читов ИИ и читы

Регистрация Бан-лист Сообщество ПОПУЛЯРНОЕ
Вернуться   RF-Cheats.ru - форум читеров и ботоводов > > >

Пакетный уровень RFO / WPF-скрипты

: Обсуждение пакетов, способа отсылки/редактирования пакетов и багов на их основе. Технически говоря - обсуждение сетевого протокола RF.
Читы и обход фроста для RF Online без хайдаБоты и читы для Perfect World бесплатно без хайдаМоды и читы для World of Tanks (WoT) бесплатно без хайдаМоды и читы для Armored Warfare бесплатно без хайдаБоты и читы для DOTA 2 бесплатно без хайдаБоты и читы для Black Desert Online бесплатно без хайдаЧиты на ArcheAge бесплатно без хайдаЧиты для Warface бесплатно без хайдаВзлом ВКонтакте и ОдноклассниковСписок разделов со всеми играмиЧиты для онлайн игр






Ответ
 
Опции темы
Старый 14.10.2026, 21:46   #1
Владислt66
Нуб
Аватар для Владислt66
OFFLINE
Регистрация: 26.11.2015
Сообщений: 0
Благодарностей:
0 всего
Репутация: 1

Хук функции покупки


нашёл в клиенте конструктор покупки (адрес 0x00577380) и функцию отправки пакетов (0x005770F0). Выяснил, что конструктор собирает пакет вида 1d 00 ... | dword слота | count (15 байт), где dword — номер слота товара в магазине. Внутри он также обращается к коллекции «предпокупки» — то, что лежит в корзине окна магазина перед покупкой (нашёл функции begin/end/next для перебора).

Пробовал три подхода:

Собрать пакет руками и отправить через нативный send. Сервер покупку принимает, деньги списываются, присылает ответ с данными предмета (опкод 0x020C: instance-id, item_id, счётчик). Но предмет в инвентаре появляется только после перезахода в игру.

Вызвать конструктор и подменить номер слота уже в готовом пакете (в хуке send, перед отправкой). Результат тот же: сервер принимает, ответ приходит, рендера нет.

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

проблема:
конструктор строит не только пакет, но и какое-то внутреннее состояние покупки. Перед работой он читает два поля shop-объекта ([ecx+0x30] и [ecx+0x34]). Похоже, после настоящей покупки через UI там лежит указатель на выбранный товар, а без выбора — мусор.

когда я подменяю пакет на лету, пакет говорит «покупаем слот 14», а внутреннее состояние клиента построено от другого товара (или от пустой корзины). Ответ сервера 0x020C клиент сверяет со своим состоянием, не находит совпадения — и молча выбрасывает пакет.

Вопросы:

Верно ли я понимаю, что пакет и внутреннее состояние покупки строятся из одного источника (корзины магазина), и без совпадения ответ сервера просто игнорируется? Как это надёжно проверить?

Как лучше отследить, что делает обработчик пакета 0x020C: бэктрейсы из recv дают мусор, нормального трейса не выходит. Ставить хуки на весь код после диспетчера пакетов? Искать обработчик по опкоду в таблице?

Может, кто-то уже разбирал — интересует структура shop-объекта (поля +0x30/+0x34) и корзина магазина.
 
Ответить с цитированием


Старый 14.10.2026, 22:35   #2
rule-z
Гильдия RF-Cheats
Аватар для rule-z
OFFLINE
Регистрация: 11.02.2008
Возраст: 35
Сообщений: 2,279
Благодарностей:
1,510 всего
Мнения: + 4803
Репутация: 4648
Отправить сообщение для rule-z с помощью ICQ

Цитата:
Сообщение от Владислt66 Посмотреть сообщение
нашёл в клиенте конструктор покупки (адрес 0x00577380) и функцию отправки пакетов (0x005770F0). Выяснил, что конструктор собирает пакет вида 1d 00 ... | dword слота | count (15 байт), где dword — номер слота товара в магазине. Внутри он также обращается к коллекции «предпокупки» — то, что лежит в корзине окна магазина перед покупкой (нашёл функции begin/end/next для перебора).

Пробовал три подхода:

Собрать пакет руками и отправить через нативный send. Сервер покупку принимает, деньги списываются, присылает ответ с данными предмета (опкод 0x020C: instance-id, item_id, счётчик). Но предмет в инвентаре появляется только после перезахода в игру.

Вызвать конструктор и подменить номер слота уже в готовом пакете (в хуке send, перед отправкой). Результат тот же: сервер принимает, ответ приходит, рендера нет.

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

проблема:
конструктор строит не только пакет, но и какое-то внутреннее состояние покупки. Перед работой он читает два поля shop-объекта ([ecx+0x30] и [ecx+0x34]). Похоже, после настоящей покупки через UI там лежит указатель на выбранный товар, а без выбора — мусор.

когда я подменяю пакет на лету, пакет говорит «покупаем слот 14», а внутреннее состояние клиента построено от другого товара (или от пустой корзины). Ответ сервера 0x020C клиент сверяет со своим состоянием, не находит совпадения — и молча выбрасывает пакет.

Вопросы:

Верно ли я понимаю, что пакет и внутреннее состояние покупки строятся из одного источника (корзины магазина), и без совпадения ответ сервера просто игнорируется? Как это надёжно проверить?

Как лучше отследить, что делает обработчик пакета 0x020C: бэктрейсы из recv дают мусор, нормального трейса не выходит. Ставить хуки на весь код после диспетчера пакетов? Искать обработчик по опкоду в таблице?

Может, кто-то уже разбирал — интересует структура shop-объекта (поля +0x30/+0x34) и корзина магазина.
Тебе же уже отвечали на этот вопрос. Еще раз. Пакет «купить у торговца» — это только запрос от клиента к серверу. Он не создаёт вещь на клиенте. Ты руками шлешь пакет, он уходит на сервер. Сервер проверяет условия, списывает деньги и добавляет предмет в своё состояние / БД. После этого сервер шлет на клиент:
- подтверждение покупки,
- обновление денег,
- обновление инвентаря / добавление предмета.

Если ты шлёшь пакет руками, ты воспроизводишь только одну часть диалога — запрос. А нормальная покупка — это целая цепочка: открытие торговца, выбор товара, запрос, подтверждение, синхронизация инвентаря. Сервер может обработать запрос и списать деньги, но:
- может не прийти ответный пакет,
- или клиент его отбрасывает, потому что нет активной торговой сессии,
- или не совпал sequence/session/transaction id,
- или клиент не ждёт этот ответ, потому что покупка была инициирована не через обычный UI,
- или античит/логика сервера не отправляет повторное обновление.

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

Тигрь дал тебе лучший совет - захукать функцию отвечающую за покупку предмета. Не посмотреть на нее и сделать руками пакет, а именно захукать.

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

Последний раз редактировалось rule-z; 14.10.2026 в 22:38.

silence is golden
 
Ответить с цитированием
Сказали спасибо:
dark (15.10.2026)
Ответ



Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват функции. Получение сессионного ключа Teem Взлом и программирование 1 06.08.2019 10:01
Чит Physics+ обновление 04.06.2016 (Есть бесплатные функции) Сергей МM14 tankionline.com читы 4 17.08.2016 22:05
Рабочие функции программы для R2 online kotikzadrotik RFLogin для Aion, RF Online, R2 Online 0 14.05.2013 19:36
Патч, для возвращения функции кота ТГК Тюнинг PW клиента 0 11.01.2012 13:57

Мир танков | Проект "Армата" | ArcheAge | Black Desert | РФ Онлайн | Айон | Майнкрафт | Браузерные игры
Элдер скролс | Р2 Онлайн | Реквием Онлайн | ПУБГ | Роял Квест | ГТА Санадреас | Контра | Дота 2
Мир кораблей | Лост Арк | Arma2 DayZ mod | The War Z | Карос: Начало | Tera Online
Читы для всех Онлайн-игр