Гайд Продолжение. вбе(партикли)

Shitcode lord 💩
Забаненный
Статус
Оффлайн
Регистрация
25 Ноя 2020
Сообщения
272
Реакции[?]
84
Поинты[?]
8K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как теперь рисовать?
vgui2.dll vguisurface.dll окончательно удалили. Paintraverse больше нет.
Хочешь -- ебись с панорамой. Хочешь -- кайфуй с ImGui имея полную свободу и никаких зависимостей от прихотей Габена.
 
Начинающий
Статус
Оффлайн
Регистрация
12 Ноя 2022
Сообщения
63
Реакции[?]
23
Поинты[?]
3K
Хочешь -- ебись с панорамой. Хочешь -- кайфуй с ImGui имея полную свободу и никаких зависимостей от прихотей Габена.
Я больше про то как хукнуть onDraw(PainTraverse), не хукая графическое Апи, чтобы знать как часто рисовать.
Или хукнуть нажатие клавиши не хукая функции вингды в vgui2.dll был InputInternal.SetKeyCodeState(void *this, enum ButtonCode_t code, ...)
 
Shitcode lord 💩
Забаненный
Статус
Оффлайн
Регистрация
25 Ноя 2020
Сообщения
272
Реакции[?]
84
Поинты[?]
8K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я больше про то как хукнуть onDraw(PainTraverse), не хукая графическое Апи, чтобы знать как часто рисовать.
Или хукнуть нажатие клавиши не хукая функции вингды в vgui2.dll был InputInternal.SetKeyCodeState(void *this, enum ButtonCode_t code, ...)
Да, SetKeyCodeState мне и самому не хватает. Так-то это можно (в вечном цикле в отдельном потоке) чекать через GetAsyncKeyState.
Но это костыль по сравнению с SetKeyCodeState. Ну хули, помянем.
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
Я больше про то как хукнуть onDraw(PainTraverse), не хукая графическое Апи, чтобы знать как часто рисовать.
Или хукнуть нажатие клавиши не хукая функции вингды в vgui2.dll был InputInternal.SetKeyCodeState(void *this, enum ButtonCode_t code, ...)
чекай всякие CInputSystem и CInputService там как раз нажатия клавиш обрабатываются. можешь еще в других местах всякие там KeyEvent и подобное поискать попробовать
 
Начинающий
Статус
Оффлайн
Регистрация
26 Ноя 2017
Сообщения
11
Реакции[?]
1
Поинты[?]
0
Liberalist , привет. Есть пара вопросов.
1. Как находить функцию для VBE ?
2. Хранится ли в памяти переменная по которой я могу определить что кто-то телепортируется на тавер? И как ее найти ?
У меня есть опыт в создании VBE и я не хочу с него переходить на хуки или вызов API функций.
3. Как и 1 вопрос, хочу узнать на будущее - как искать эти BaseEntity и тд. Мне они нужны чтобы их читать.
Например если функция VBE 0, то меня видят, если нет, то не видят. Все очень просто и не палевно.
 
Shitcode lord 💩
Забаненный
Статус
Оффлайн
Регистрация
25 Ноя 2020
Сообщения
272
Реакции[?]
84
Поинты[?]
8K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Liberalist , привет. Есть пара вопросов.
1. Как находить функцию для VBE ?
Старый VBE больше не работает. Внутри CBaseEntity:
C++:
float GetSequenceCycle() {
    uintptr_t Addr = ((uintptr_t)this + Netvars::Offsets.m_flStartSequenceCycle);
    return *(float*)Addr;
}
bool VisibleByEnemy() {
    return this->GetSequenceCycle() == 0.f;
}
2. Хранится ли в памяти переменная по которой я могу определить что кто-то телепортируется на тавер? И как ее найти ?
Хукай нетчан. Там есть создание партикли телепорта. Там же и энтити, и её положение в мире.
Но для этого нужно либо sv_cheats 1 + dota_use_particle_fow, 1 либо хукать SetRenderingEnabled
95 функция у CParticleCollection.

C++:
typedef void(*SetRenderingEnabledFn)(CParticleCollection*, bool);
SetRenderingEnabledFn oSetRenderingEnabled;
void hkSetRenderingEnabled(CParticleCollection* thisptr, bool state) {
    bool FakeState = state;

    if (Config::camera.render_all_particles)
        FakeState = true;

    oSetRenderingEnabled(thisptr, FakeState);
}
3. Как и 1 вопрос, хочу узнать на будущее - как искать эти BaseEntity и тд. Мне они нужны чтобы их читать.
OnAdd\OnRemove Entity хукай, записывай себе куда-нибудь в std::set, например.
C++:
typedef CBaseEntity* (*OnEntityListChangedFn)(CGameEntitySystem*, CBaseEntity*, unsigned int);

CBaseEntity* hkOnAddEntity(CGameEntitySystem* exc, CBaseEntity* BaseEntity, unsigned int index) {
// Ну и тут себе их сохраняешь
}

CBaseEntity* hkOnRemoveEntity(CGameEntitySystem * exc, CBaseEntity * BaseEntity, unsigned int index) {
// Тут удаляешь
}

// void* OnAddEntity = Memory::GetVFunc<void*>(vmt.EntitySystem, 14);
// void* OnRemoveEntity = Memory::GetVFunc<void*>(vmt.EntitySystem, 15);
// Ну ты понял короче
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
26 Ноя 2017
Сообщения
11
Реакции[?]
1
Поинты[?]
0
@ Wolf49406 , да не работает. Его теперь сложно найти через CE, как я делал раньше с 6 и 14 поиском.
1. Как мне найти "CBaseEntity* " вот это. Я хочу это находить в памяти.
2. Как мне реверсить доту и чем, чтобы находить эти структуры в игре?
Я не буду в своей программе использовать или вызывать API доты. Знаю, что это очень легко и исходников много, но античит это сразу помечает на очередь в следующем банвейве.

Чтобы лучше меня понять, я опишу как я пишу чит для доты.
Нахожу в памяти игры Переменную. Читаю ее. И все.
Никаких Api/Sdk/патчеров.
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
@ Wolf49406 , да не работает. Его теперь сложно найти через CE, как я делал раньше с 6 и 14 поиском.
1. Как мне найти "CBaseEntity* " вот это. Я хочу это находить в памяти.
2. Как мне реверсить доту и чем, чтобы находить эти структуры в игре?
Я не буду в своей программе использовать или вызывать API доты. Знаю, что это очень легко и исходников много, но античит это сразу помечает на очередь в следующем банвейве.

Чтобы лучше меня понять, я опишу как я пишу чит для доты.
Нахожу в памяти игры Переменную. Читаю ее. И все.
Никаких Api/Sdk/патчеров.
1. https://yougame.biz/threads/139583/
читай комменты там тоже инфа всякая есть
2. идой, дебагером, реклассом, чит енджином
3. никто тебе не мешает сдампить шему и захардкодить себе оффсет m_flStartSequenceCycle
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
Старый VBE больше не работает. Внутри CBaseEntity:
C++:
float GetSequenceCycle() {
    uintptr_t Addr = ((uintptr_t)this + Netvars::Offsets.m_flStartSequenceCycle);
    return *(float*)Addr;
}
bool VisibleByEnemy() {
    return this->GetSequenceCycle() == 0.f;
}

Хукай нетчан. Там есть создание партикли телепорта. Там же и энтити, и её положение в мире.
Но для этого нужно либо sv_cheats 1 + dota_use_particle_fow, 1 либо хукать SetRenderingEnabled
95 функция у CParticleCollection.

C++:
typedef void(*SetRenderingEnabledFn)(CParticleCollection*, bool);
SetRenderingEnabledFn oSetRenderingEnabled;
void hkSetRenderingEnabled(CParticleCollection* thisptr, bool state) {
    bool FakeState = state;

    if (Config::camera.render_all_particles)
        FakeState = true;

    oSetRenderingEnabled(thisptr, FakeState);
}


OnAdd\OnRemove Entity хукай, записывай себе куда-нибудь в std::set, например.
C++:
typedef CBaseEntity* (*OnEntityListChangedFn)(CGameEntitySystem*, CBaseEntity*, unsigned int);

CBaseEntity* hkOnAddEntity(CGameEntitySystem* exc, CBaseEntity* BaseEntity, unsigned int index) {
// Ну и тут себе их сохраняешь
}

CBaseEntity* hkOnRemoveEntity(CGameEntitySystem * exc, CBaseEntity * BaseEntity, unsigned int index) {
// Тут удаляешь
}

// void* OnAddEntity = Memory::GetVFunc<void*>(vmt.EntitySystem, 14);
// void* OnRemoveEntity = Memory::GetVFunc<void*>(vmt.EntitySystem, 15);
// Ну ты понял короче
C++:
void hkSetRenderingEnabled(CParticleCollection* thisptr, bool state) {
    bool FakeState = state;

    if (Config::camera.render_all_particles)
        FakeState = true;

    oSetRenderingEnabled(thisptr, FakeState);
}
oSetRenderingEnabled(thisptr, state || Config::camera.render_all_particles)
если Config::camera.render_all_particles тру то результат операции || Config::camera.render_all_particles будет тру независимо ни от чего
если Config::camera.render_all_particles фалс то операция || Config::camera.render_all_particles не будет ничего делать, то есть все будет зависеть от state

и на всякий рекомендую не делать void никогда в хуках если ты лично не удостоверился что там реально воид. если не уверен то на всякий случай делаешь std::uintptr_t(это полный регистр eax/rax на 86/64. то есть ты тупо весь регистр возврата после вызова оригинала передаешь обратно в ретурне) тип возврата и return'ишь оригинал(тайпдеф оригинала тоже std::uintptr_t возврат делаешь). если там воид - то ничего плохого не случится. если же там не войд - то что бы там ни было ты его вернул и все норм(исключение: функции которые float и тд возвращают - там в xmm0 летит возврат а не в rax). а то у меня было такое что я сделал хук войд(логически рассуждая(судя по названию) функция которую я хукал не должна была ничего возвращать но по факту я не чекал тип возврата в самой приложухе) и не возвращал нужное значение и потом пизды получал
 
kira yoshikage
Пользователь
Статус
Оффлайн
Регистрация
21 Янв 2020
Сообщения
885
Реакции[?]
115
Поинты[?]
3K
C++:
void hkSetRenderingEnabled(CParticleCollection* thisptr, bool state) {
    bool FakeState = state;

    if (Config::camera.render_all_particles)
        FakeState = true;

    oSetRenderingEnabled(thisptr, FakeState);
}
oSetRenderingEnabled(thisptr, state || Config::camera.render_all_particles)
если Config::camera.render_all_particles тру то результат операции || Config::camera.render_all_particles будет тру независимо ни от чего
если Config::camera.render_all_particles фалс то операция || Config::camera.render_all_particles не будет ничего делать, то есть все будет зависеть от state

и на всякий рекомендую не делать void никогда в хуках если ты лично не удостоверился что там реально воид. если не уверен то на всякий случай делаешь std::uintptr_t(это полный регистр eax/rax на 86/64. то есть ты тупо весь регистр возврата после вызова оригинала передаешь обратно в ретурне) тип возврата и return'ишь оригинал(тайпдеф оригинала тоже std::uintptr_t возврат делаешь). если там воид - то ничего плохого не случится. если же там не войд - то что бы там ни было ты его вернул и все норм(исключение: функции которые float и тд возвращают - там в xmm0 летит возврат а не в rax). а то у меня было такое что я сделал хук войд(логически рассуждая(судя по названию) функция которую я хукал не должна была ничего возвращать но по факту я не чекал тип возврата в самой приложухе) и не возвращал нужное значение и потом пизды получал
[

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.

 
Последнее редактирование:
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
781
Реакции[?]
331
Поинты[?]
63K
[
Скрытое содержимое
не совсем понял вопрос. если тебе нужно рисовать чтото над игроком(например манабары кд абилок и тд):
ent->m_pGameSceneNode->m_vecAbsOrigin + {0.0f, 0.0f, ent->m_iHealthBarOffset} это будет 3д точка над головой юнита(ось z - высота в сурс/сурс2 играх) дальше в2с и сам разберешься сколько там потом отступать
у партиклей есть контрол поинты, там есть vecOrigin и прочая хуйня попробуй там пореверси в том районе
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Shitcode lord 💩
Забаненный
Статус
Оффлайн
Регистрация
25 Ноя 2020
Сообщения
272
Реакции[?]
84
Поинты[?]
8K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
@ Wolf49406 , да не работает. Его теперь сложно найти через CE, как я делал раньше с 6 и 14 поиском.
1. Как мне найти "CBaseEntity* " вот это. Я хочу это находить в памяти.
2. Как мне реверсить доту и чем, чтобы находить эти структуры в игре?
Я не буду в своей программе использовать или вызывать API доты. Знаю, что это очень легко и исходников много, но античит это сразу помечает на очередь в следующем банвейве.

Чтобы лучше меня понять, я опишу как я пишу чит для доты.
Нахожу в памяти игры Переменную. Читаю ее. И все.
Никаких Api/Sdk/патчеров.
Иди поспи, ты чет тупишь жестко...
 
Начинающий
Статус
Оффлайн
Регистрация
26 Ноя 2017
Сообщения
11
Реакции[?]
1
Поинты[?]
0
https://qweme.dev
Пользователь
Статус
Оффлайн
Регистрация
25 Май 2022
Сообщения
165
Реакции[?]
87
Поинты[?]
21K
Я тут ответы жду, а не вопросы.
Но если ты подскажешь как реверсить доту, то я поясню за безопасность.
античита в доте нет, серверный вроде бы есть, а вроде бы и нет.) и твой ебучий экстернал так же задетектится, если вальв резко станет не похуй на читеров (спойлер: такого не будет)
 
Пользователь
Статус
Оффлайн
Регистрация
26 Окт 2017
Сообщения
520
Реакции[?]
95
Поинты[?]
2K
Да, SetKeyCodeState мне и самому не хватает. Так-то это можно (в вечном цикле в отдельном потоке) чекать через GetAsyncKeyState.
Но это костыль по сравнению с SetKeyCodeState. Ну хули, помянем.
Минимум 1 способ еще есть для получения таких данных. Самой игрой. Не говоря уже о win методах и это не о GetAsyncKeyState.
 
Начинающий
Статус
Оффлайн
Регистрация
26 Ноя 2017
Сообщения
11
Реакции[?]
1
Поинты[?]
0
Liberalist
Без sv_cheats 1 в памяти игры есть даные которые хранят телепорт соперника на тавер или когда соперник стоит на крипах?
 
https://qweme.dev
Пользователь
Статус
Оффлайн
Регистрация
25 Май 2022
Сообщения
165
Реакции[?]
87
Поинты[?]
21K
Liberalist
Без sv_cheats 1 в памяти игры есть даные которые хранят телепорт соперника на тавер или когда соперник стоит на крипах?
конечно, отлови создание партикли (они приходят даже в ноу вижене)
 
Начинающий
Статус
Оффлайн
Регистрация
26 Ноя 2017
Сообщения
11
Реакции[?]
1
Поинты[?]
0
конечно, отлови создание партикли (они приходят даже в ноу вижене)
А как оно выглядит в памяти? Мне бы вручную найти.
Для примера vbe. Я нахожу его вручную. Оно привязано к текущему герою и в памяти имеет вид 0 в случае если враг видит, а когда не видит, то там три байта постоянно меняются и если переводить во флоат, то они идут циклом от 0,1 до 0,9.
.
А что представляет из себя "Создание партикля в момент телепорта на тавер" ?
Это булевое значение или что это? Оно так же привязано к таверу? Его можно найти в памяти как я нахожу vbe ?
 
https://qweme.dev
Пользователь
Статус
Оффлайн
Регистрация
25 Май 2022
Сообщения
165
Реакции[?]
87
Поинты[?]
21K
А как оно выглядит в памяти? Мне бы вручную найти.
Для примера vbe. Я нахожу его вручную. Оно привязано к текущему герою и в памяти имеет вид 0 в случае если враг видит, а когда не видит, то там три байта постоянно меняются и если переводить во флоат, то они идут циклом от 0,1 до 0,9.
.
А что представляет из себя "Создание партикля в момент телепорта на тавер" ?
Это булевое значение или что это? Оно так же привязано к таверу? Его можно найти в памяти как я нахожу vbe ?
нет в экстернал это анрил найти, нужно хукать создание ее (интернал)
либо хукать нетчан(канал связи доты) там приходит евенет в протобафе (парсить его)
 
Сверху Снизу