Моя цель — вызвать функцию, которая получает текущее количество посетителей, но я не совсем понимаю, как это сделать, чтобы не привести к сбою игры. Я хорошо разбираюсь в C++, но я новичок в реверс-инжиниринге и работе со стеком.
Вот функция, которую я хочу использовать:
ShoppingVisitorsCount getter accessed! at [2024-09-09 04:53:52]
EBP Value: 00F2E7DC at [2024-09-09 04:53:52]
Value at [EBP + 0x8]: 48C40AA0 at [2024-09-09 04:53:52]
User pointer captured: 48C40AA0 at [2024-09-09 04:53:52]
Visitors Count: 2 at [2024-09-09 04:53:52]
но при вызове функции происходит сбой игры
Вызов кода:
Моя цель — вызвать функцию, которая получает текущее количество посетителей, но я не совсем понимаю, как это сделать, чтобы не привести к сбою игры. Я хорошо разбираюсь в C++, но я новичок в реверс-инжиниринге и работе со стеком. Вот функция, которую я хочу использовать: [code]"Signature": "int32_t User__get_VisitorsCount (User_o* __this, const MethodInfo* method);",[/code] Когда я подключаю функцию и печатаю значения, она работает: [code]void Mods::HookGetShoppingVisitorsCount(void* thisPtr) { Utils::HookData& hook = hooks[1];
__asm { mov ebpValue, ebp // Capture the current EBP mov eax, [ebp + 0x8] // Capture the value at EBP + 0x8 mov valueAtEBPPlus8, eax // Store it in valueAtEBPPlus8 }
// Re-hook // Hook(hook.address, (void*)(&Mods::HookGetShoppingVisitorsCount), 5, hook.originalBytes); } [/code] Это значение возвращает: [code]ShoppingVisitorsCount getter accessed! at [2024-09-09 04:53:52] EBP Value: 00F2E7DC at [2024-09-09 04:53:52] Value at [EBP + 0x8]: 48C40AA0 at [2024-09-09 04:53:52] User pointer captured: 48C40AA0 at [2024-09-09 04:53:52] Visitors Count: 2 at [2024-09-09 04:53:52] [/code] но при вызове функции происходит сбой игры Вызов кода: [code]void Hacks::CallUserFunction() { if (userPointer) {
// Get the base addy of dll uintptr_t baseAddress = BaseAddy; if (!baseAddress) { WriteToConsole("Failed to get base address!", FOREGROUND_RED | FOREGROUND_INTENSITY); return; }
// base address WriteToConsole("Base Address: %p", FOREGROUND_GREEN | FOREGROUND_INTENSITY, baseAddress);
// real address of the VisitorsCount function uintptr_t realAddress = baseAddress + 0xC810E0;