• Я зарабатываю 100 000 RUB / месяц на этом сайте!

    А знаешь как? Я всего-лишь публикую (создаю темы), а админ мне платит. Трачу деньги на мороженое, робуксы и сервера в Minecraft. А ещё на паль из Китая. 

    Хочешь так же? Пиши и узнавай условия: https://t.me/alex_redact
    Реклама: https://t.me/yougame_official

Краш update client side animations

Статус
В этой теме нельзя размещать новые ответы.
Участник
Участник
Статус
Оффлайн
Регистрация
30 Дек 2020
Сообщения
398
Реакции
293
Столкнулся с проблемой при вызове апдейта анимаций в базе CSGO Simple.
C++:
Expand Collapse Copy
void C_BasePlayer::UpdateClientSideAnimation(){
    return CallVFunction<void(__thiscall*)(void*)>(this, 223)(this);
}
Посидел в дебагере половил мемы по типу player-> был nullptr или this-> был nullptr (т.е не this и player, а именно player-> & this->)
Добавил дополнительных чеков по типу if(!this) return;, но это не помогло.
Начал перебирать индексы (223 и 224), но все равно крашило.
Через некоторое время заметил мем в самой функции call virtual
1653391965492.png

1653392013608.png
не спрашивайте почему 0xFFFFFFFF
После "фикса", который под спойлером, вылезла ошибка "run-time check failure #0". Посидел почитал информацию по этой ошибке, но так ничего не начитал.
Решил зайти в иду, чтобы быть 100% уверенным, что 224 индекс правильный:
1653392385060.png

Итого - индекс правильный. Подумал, что можно через сигнатуру, попробовал "E8 ? ? ? ? 8B 0D ? ? ? ? 8B 01 FF 50 10" и "55 8B EC 51 56 8B F1 80 BE ? ? ? ? ? 74" - крашит (
Пожалуйста, авторизуйтесь для просмотра ссылки.
).
 
i dont have any crash 4 this subject

my clientsideanim code:

Код:
Expand Collapse Copy
void C_BasePlayer::UpdateClientSideAnimation()
{
    return CallVFunction<void(__thiscall*)(void*)>(this, 224)(this);
}


template<typename FuncType>
__forceinline static FuncType CallVFunction(void* ppClass, int index)
{
    int* pVTable = *(int**)ppClass;
    int dwAddress = pVTable[index];
    return (FuncType)(dwAddress);
}
if it still continues, check where you call
 
try
C++:
Expand Collapse Copy
void Player::UpdateClientSideAnimation()
{
    using Fn = void(__thiscall*)(void*);
    CallVFunction<Fn>(this, 224)(this);
}
 
/del
Проблема была в поинтере игрока и системе рекордов.
 
Вообще, говорю на будущее, если что-то будешь тестить на этой базе, эта ошибка постоянно вылезала из-за настроек проекта ( надо отключить отладочные библиотеки ). Но и так же учитываем, что она говорит про ошибки, связанные с соглашением о вызовах ( __fastcall, __stdcall и др. ).
 
Вообще, говорю на будущее, если что-то будешь тестить на этой базе, эта ошибка постоянно вылезала из-за настроек проекта ( надо отключить отладочные библиотеки ). Но и так же учитываем, что она говорит про ошибки, связанные с соглашением о вызовах ( __fastcall, __stdcall и др. ).
Я тоже думал на счет настроек проекта, но один мой друг опроверг мои догадки, поэтому я не стал их изменять, но все же, спасибо за подсказку.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху Снизу