Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Вопрос Damagetype

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
30 Мар 2020
Сообщения
368
Реакции
26
почему у дагона тип урона None??

1uhR4Rb.png
 
А также, как отличить обычную способку от Innate (та которая прокаченная на 1 постоянно у всех героев) ?
Код:
Expand Collapse Copy
abilities.find_first_of(abil => !!abil.ability_definition?.m_bInnate)
дефинишн(он у тебя на скринах в ОП) на C_DOTABaseAbility@0x560
C++:
Expand Collapse Copy
class DOTAAbilityDefinition_t(size: 0x260 bytes, project "client", binding @ client.dll + 0x4a9bd30, scope "!GlobalTypes")

-----members of class DOTAAbilityDefinition_t-----
...
    bitfield {
...
        uint8_t m_bInnate : 1(offset 0x257, mask = 0x80)
...
    }
...
 
Код:
Expand Collapse Copy
abilities.find_first_of(abil => !!abil.ability_definition?.m_bInnate)
дефинишн(он у тебя на скринах в ОП) на C_DOTABaseAbility@0x560
C++:
Expand Collapse Copy
class DOTAAbilityDefinition_t(size: 0x260 bytes, project "client", binding @ client.dll + 0x4a9bd30, scope "!GlobalTypes")

-----members of class DOTAAbilityDefinition_t-----
...
    bitfield {
...
        uint8_t m_bInnate : 1(offset 0x257, mask = 0x80)
...
    }
...
ты дампишь энамы с помощью FindDeclaredEnum? я пробую вызвать но оно постоянно возвращает 0
C++:
Expand Collapse Copy
class CSchemaSystemTypeScope
{
public:
    virtual void func0() = 0;
    virtual void func1() = 0;
    virtual void* FindDeclaredClass(void* ptr, const char* className) = 0;
    virtual void* FindDeclaredEnum(void* ptr, const char* enumName) = 0;
    virtual void* TestFindEnum(void* ptr, const char* enumName) = 0;
}
FindDeclaredClass работает норм, пытаюсь сдампить с иды класс DOTAAbilityDefinition_t но нифига не находит
 
ты дампишь энамы с помощью FindDeclaredEnum? я пробую вызвать но оно постоянно возвращает 0
C++:
Expand Collapse Copy
class CSchemaSystemTypeScope
{
public:
    virtual void func0() = 0;
    virtual void func1() = 0;
    virtual void* FindDeclaredClass(void* ptr, const char* className) = 0;
    virtual void* FindDeclaredEnum(void* ptr, const char* enumName) = 0;
    virtual void* TestFindEnum(void* ptr, const char* enumName) = 0;
}
FindDeclaredClass работает норм, пытаюсь сдампить с иды класс DOTAAbilityDefinition_t но нифига не находит
нет я не использую в дампере ничего из этого, я просто хукаю регистрацию шемы и заставляю доту регистрироваться в шеме(я не с живой доты дамплю(инжекчя длл) я ее сам "запускаю" частично(дллки доты гружу в свою ехешку)) и всё что регается пролетает через меня.
"пытаюсь сдампить с иды класс DOTAAbilityDefinition_t но нифига не находит"
неправда, ищешь плохо. у биндинга на +8 есть указатель(VA(virtual address - полноценный адрес который является RVA с уже прибавленной к нему имейджбазой(в файле имейджбаза 0x180000000(ну это дефолтная так то конечно она в самом .exe/.dll файле указывается в заголовках)))), на нём лежат буковки DOTAAbilityDefinition_t; соответственно ищешь буковки DOTAAbilityDefinition_t, вычисляешь(если в файле ищешь) их VA(это из файл оффсета делаешь рва и потом из рва делаешь ва), ищешь просто qword(литтл ендиан естественно) который равен этому VA и вот ты нашел биндинг + 8. в иде за тебя уже всё посчитано(там уже адреса в стиле 0x180blablabla показывает) если что и поиск там тоже одной кнопкой(X английская хрефы показывает). если не в файле ищешь а в живой доте то чит енджином тот же самый алгоритм(ток вычислять ничего не надо)
 
Назад
Сверху Снизу