Загрузка...

[Question] How to write a base for Inventory Changer in Dota 2 (Source 2)?

Thread in C/C++ created by Kleshzz Tuesday at 4:15 PM. 66 views

  1. Kleshzz
    Kleshzz Topic starter Tuesday at 4:15 PM 0 Jun 17, 2025
    Всем привет. Короче, хочу разобраться, как с нуля написать свой скинчейнджер (Inventory Changer) для Доты, но вообще не вдупляю, с чего начать архитектуру.

    Гуглил старые гайды - там всё про m_nFallbackPaintKit и старый движок, в нынешней Доте на Source 2 это не работает. Ничего не происходит, шмотки не подменяются, клиент их просто не видит.
    В чем конкретно прошу помощи:
    1. Каков вообще принцип работы сейчас? Я так понял, всё завязано на Protobuf пакетах и координаторе (GC). Как их ловить и подменять?
    2. Что нужно хукать? Какие библиотеки (dll) копать в первую очередь - client.dll, engine2.dll или что-то другое?
    3. Где взять инфу по структурам? Есть ли какие-то актуальные SDK или дампы классов для Source 2, чтобы понять, куда игра записывает инфу о шмотках в инвентаре?
    Я в этом деле пока полный ноль, знаний по реверсу мало, но хочу научиться и собрать рабочую базу. Если есть статьи, сурсы на гитхабе или просто советы, куда копать - буду благодарен.
     
  2. PowerFIVE
    PowerFIVE Tuesday at 4:19 PM киню guest 424 Nov 24, 2018
    поройся на yg или uc
     
  3. p4r4d0xy
    Source 2 перешёл на схему где всё инвентарное состояние живёт на стороне Game Coordinator (GC) и синхронизируется через Protobuf сообщения поверх Steam. Клиент не хранит "правду" о шмотках локально — он получает CMsgGCToClientInventoryResponse и рендерит по нему.
    Поэтому старый подход с патчем m_nFallbackPaintKit не работает — ты пишешь в память значение которое GC сразу перезапишет при следующем тике синхронизации.
    Щас: перехват и патч Protobuf пакетов до того как они десериализуются движком. Смотреть в сторону steamnetworkingsockets.dll + хук на recv, либо искать где CProtobufMsgBase::ReadFromBuffer вызывается в client.dll.
    По структурам — смотри GitHub SteamDatabase/GameTracking-Dota2 , там автодампы после каждого патча. Для реверса самого клиента — IDA/Ghidra + cs2-dumper как референс (CS2 тоже Source 2, структуры похожи).
     
Loading...