А ну NiceL просвети что прийзошло пожалуйста
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"));
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];
};
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;
}
У меня так же xDNiceL слушай
а почему у меня вообще после обновы крашит
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 тут не причем, проблема до вызова этой функции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"));
Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.
Or CKeyValues::Init relative: "6A ? 6A ? 68 ? ? ? ? 8B C8 E8 ? ? ? ? 89 86 ? ? ? ? 33 C0 66 89 06 8B C6 5E C3" + 12Код: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"));
Last 2 args can be 0
CKeyValues (size 44 bytes):
Also, 1 more virtual function was added to the class IKeyValuesSystem at the beginningКод: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]; };
Код: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, тут уже сам
Hidden content
Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.
Fix for lw: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"));
using KeyValuesFn = void(__thiscall*)(void*, const char*, int, int);
reinterpret_cast <KeyValuesFn> (key_values_address)(keyValues, type.c_str(), 0, 0);
/delFix for lw:
Код:using KeyValuesFn = void(__thiscall*)(void*, const char*, int, int); reinterpret_cast <KeyValuesFn> (key_values_address)(keyValues, type.c_str(), 0, 0);
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz