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

Вопрос Краш читов после обновы

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
KeyValuesSystem обновили теперь есть 2 доп аргумента int
 
А ну @NiceL просвети что прийзошло пожалуйста ?

Код:
Expand Collapse Copy
static auto fnCKeyValues_Init = reinterpret_cast<CKeyValues*(__thiscall*)(CKeyValues*, const char*, void*, void*)>(MEM::PatternScan(GetModuleHandleA("client.dll"), "55 8B EC 56 8B F1 33 C0 8B 4D 0C 81 26 ? ? ? ? 89 46 10 8A 45 10 C6 46 03 00 89 4E 14 88 46 18 C7 46 ? ? ? ? ? C7 46"));
Or CKeyValues::Init relative: "6A ? 6A ? 68 ? ? ? ? 8B C8 E8 ? ? ? ? 89 86 ? ? ? ? 33 C0 66 89 06 8B C6 5E C3" + 12
Last 2 args can be 0

CKeyValues (size 44 bytes):
Код:
Expand Collapse Copy
class CKeyValues
{
public:
    uint32            m_iKeyName : 24;
    uint32            m_iKeyNameCaseSensitive1 : 8;
    char*            m_sValue;
    wchar_t*        m_wsValue;
    void*            m_Value; // Now this var stores int/float values here
    char            m_iDataType;
    char            m_bHasEscapeSequences;
    uint16            m_iKeyNameCaseSensitive2;
    BYTE            __pad_0014[4];
    unsigned char    m_Color[4];
    CKeyValues*        m_pPeer;
    CKeyValues*        m_pSub;
    CKeyValues*        m_pChain;
    BYTE            __pad_0028[4];
};

Also, 1 more virtual function was added to the class IKeyValuesSystem at the beginning
Код:
Expand Collapse Copy
class IKeyValuesSystem
{
public:
    virtual void unk0() = 0;
    virtual void RegisterSizeofKeyValues(int size) = 0;
    virtual void* AllocKeyValuesMemory(int size) = 0;
    virtual void FreeKeyValuesMemory(void* pMem) = 0;
    virtual HKeySymbol GetSymbolForString(const char* name, bool bCreate = true) = 0;
    virtual const char* GetStringForSymbol(HKeySymbol symbol) = 0;
    virtual void AddKeyValuesToMemoryLeakList(void* pMem, HKeySymbol name) = 0;
    virtual void RemoveKeyValuesFromMemoryLeakList(void* pMem) = 0;
    virtual void SetKeyValuesExpressionSymbol(const char* name, bool bValue) = 0;
    virtual bool GetKeyValuesExpressionSymbol(const char* name) = 0;
    virtual HKeySymbol GetSymbolForStringCaseSensitive(HKeySymbol& hCaseInsensitiveSymbol, const char* name, bool bCreate = true) = 0;
}


Ну, и если используешь паблик обход retaddr чеков через хук в IKeyValues интерфейсе, который сейчас везде, то нужно будет обновить эти паттерны также и индекс +1, тут уже сам
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
@NiceL слушай
а почему у меня вообще после обновы крашит
static auto load_from_buffer_address = util::FindSignature(crypt_str("client.dll"), crypt_str("55 8B EC 83 E4 F8 83 EC 34 53 8B 5D 0C 89"));
 
@NiceL слушай
а почему у меня вообще после обновы крашит
static auto load_from_buffer_address = util::FindSignature(crypt_str("client.dll"), crypt_str("55 8B EC 83 E4 F8 83 EC 34 53 8B 5D 0C 89"));
Потому что проблема с инициализацией и размером CKeyValues, выше все расписано, LoadFromBuffer тут не причем, проблема до вызова этой функции
 

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


Код:
Expand Collapse Copy
static auto fnCKeyValues_Init = reinterpret_cast<CKeyValues*(__thiscall*)(CKeyValues*, const char*, void*, void*)>(MEM::PatternScan(GetModuleHandleA("client.dll"), "55 8B EC 56 8B F1 33 C0 8B 4D 0C 81 26 ? ? ? ? 89 46 10 8A 45 10 C6 46 03 00 89 4E 14 88 46 18 C7 46 ? ? ? ? ? C7 46"));
Or CKeyValues::Init relative: "6A ? 6A ? 68 ? ? ? ? 8B C8 E8 ? ? ? ? 89 86 ? ? ? ? 33 C0 66 89 06 8B C6 5E C3" + 12
Last 2 args can be 0

CKeyValues (size 44 bytes):
Код:
Expand Collapse Copy
class CKeyValues
{
public:
    uint32            m_iKeyName : 24;
    uint32            m_iKeyNameCaseSensitive1 : 8;
    char*            m_sValue;
    wchar_t*        m_wsValue;
    void*            m_Value; // Now this var stores int/float values here
    char            m_iDataType;
    char            m_bHasEscapeSequences;
    uint16            m_iKeyNameCaseSensitive2;
    BYTE            __pad_0014[4];
    unsigned char    m_Color[4];
    CKeyValues*        m_pPeer;
    CKeyValues*        m_pSub;
    CKeyValues*        m_pChain;
    BYTE            __pad_0028[4];
};

Also, 1 more virtual function was added to the class IKeyValuesSystem at the beginning
Код:
Expand Collapse Copy
class IKeyValuesSystem
{
public:
    virtual void unk0() = 0;
    virtual void RegisterSizeofKeyValues(int size) = 0;
    virtual void* AllocKeyValuesMemory(int size) = 0;
    virtual void FreeKeyValuesMemory(void* pMem) = 0;
    virtual HKeySymbol GetSymbolForString(const char* name, bool bCreate = true) = 0;
    virtual const char* GetStringForSymbol(HKeySymbol symbol) = 0;
    virtual void AddKeyValuesToMemoryLeakList(void* pMem, HKeySymbol name) = 0;
    virtual void RemoveKeyValuesFromMemoryLeakList(void* pMem) = 0;
    virtual void SetKeyValuesExpressionSymbol(const char* name, bool bValue) = 0;
    virtual bool GetKeyValuesExpressionSymbol(const char* name) = 0;
    virtual HKeySymbol GetSymbolForStringCaseSensitive(HKeySymbol& hCaseInsensitiveSymbol, const char* name, bool bCreate = true) = 0;
}


Ну, и если используешь паблик обход retaddr чеков через хук в IKeyValues интерфейсе, который сейчас везде, то нужно будет обновить эти паттерны также и индекс +1, тут уже сам
 
Последнее редактирование:
@NiceL listen
why does it crash after the update
static auto load_from_buffer_address = util::FindSignature(crypt_str("client.dll"), crypt_str("55 8B EC 83 E4 F8 83 EC 34 53 8B 5D 0C 89"));

Fix for lw:
Код:
Expand Collapse Copy
using KeyValuesFn = void(__thiscall*)(void*, const char*, int, int);
reinterpret_cast <KeyValuesFn> (key_values_address)(keyValues, type.c_str(), 0, 0);
 
Последнее редактирование:
Назад
Сверху Снизу