Вопрос Reveal ranks crash

Начинающий
Статус
Оффлайн
Регистрация
8 Янв 2022
Сообщения
11
Реакции[?]
20
Поинты[?]
0
Стало крашить при включении

Main function:
if (cmd->buttons & UserCmd::CommandButtons::IN_SCORE)
    i::client->DispatchUserMessage(CS_UM_ServerRankRevealAll, 0, 0, nullptr);
DispatchUserMessage:
using DispatchUserMessageFn = int(__thiscall*)(void*, int, uint32_t, int, const void*);
inline DispatchUserMessageFn DispatchUserMessageOriginal = { nullptr };
bool __stdcall DispatchUserMessage(int type, uint32_t flags, int size, const void* message);
Знает кто-нибудь, как это можно пофиксить?
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,574
Реакции[?]
595
Поинты[?]
34K
что происходит...

dispatchusermsg - функция кса, 38 индекс в client.dll
dispatchusermsg:
bool dispatch_user_msg( int type, unsigned int flags, int size, const void* data )
{
    return util::call_v_func<bool>(this, 38, type, flags, size, data );
}
 
Начинающий
Статус
Оффлайн
Регистрация
8 Янв 2022
Сообщения
11
Реакции[?]
20
Поинты[?]
0
что происходит...

dispatchusermsg - функция кса, 38 индекс в client.dll
dispatchusermsg:
bool dispatch_user_msg( int type, unsigned int flags, int size, const void* data )
{
    return util::call_v_func<bool>(this, 38, type, flags, size, data );
}
Оно так и есть
C++:
const auto dispatchUserMessage = m::Get(i::client, 38);

if (MH_CreateHook(dispatchUserMessage, &DispatchUserMessage, reinterpret_cast<void**>(&DispatchUserMessageOriginal)))
        throw std::runtime_error("Unable to hook DispatchUserMessage()");
 
Пользователь
Статус
Оффлайн
Регистрация
19 Ноя 2019
Сообщения
263
Реакции[?]
50
Поинты[?]
2K
Оно так и есть
C++:
const auto dispatchUserMessage = m::Get(i::client, 38);

if (MH_CreateHook(dispatchUserMessage, &DispatchUserMessage, reinterpret_cast<void**>(&DispatchUserMessageOriginal)))
        throw std::runtime_error("Unable to hook DispatchUserMessage()");
U trying to hook a vfunc ? 🤔
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,574
Реакции[?]
595
Поинты[?]
34K
Оно так и есть
C++:
const auto dispatchUserMessage = m::Get(i::client, 38);

if (MH_CreateHook(dispatchUserMessage, &DispatchUserMessage, reinterpret_cast<void**>(&DispatchUserMessageOriginal)))
        throw std::runtime_error("Unable to hook DispatchUserMessage()");
bool, не void*
 
VirtualAllocEx
Пользователь
Статус
Оффлайн
Регистрация
30 Дек 2021
Сообщения
358
Реакции[?]
83
Поинты[?]
5K
Стало крашить при включении

Main function:
if (cmd->buttons & UserCmd::CommandButtons::IN_SCORE)
    i::client->DispatchUserMessage(CS_UM_ServerRankRevealAll, 0, 0, nullptr);
DispatchUserMessage:
using DispatchUserMessageFn = int(__thiscall*)(void*, int, uint32_t, int, const void*);
inline DispatchUserMessageFn DispatchUserMessageOriginal = { nullptr };
bool __stdcall DispatchUserMessage(int type, uint32_t flags, int size, const void* message);
Знает кто-нибудь, как это можно пофиксить?
C++:
class IBaseClientDLL
{
public:
    virtual int              Connect(CreateInterfaceFn appSystemFactory, CGlobalVarsBase *pGlobals) = 0;
    virtual int              Disconnect(void) = 0;
    virtual int              Init(CreateInterfaceFn appSystemFactory, CGlobalVarsBase *pGlobals) = 0;
    virtual void             PostInit() = 0;
    virtual void             Shutdown(void) = 0;
    virtual void             LevelInitPreEntity(char const* pMapName) = 0;
    virtual void             LevelInitPostEntity() = 0;
    virtual void             LevelShutdown(void) = 0;
    virtual ClientClass*     GetAllClasses(void) = 0;
    
    bool DispatchUserMessage(int messageType, int arg, int arg1, void* data)
    {
        using DispatchUserMessage_t = bool* (__thiscall*)(void*, int, int, int, void*);
        return CallVFunction<DispatchUserMessage_t>(this, 38)(this, messageType, arg, arg1, data);
    }
};
 
Сверху Снизу