Yo,
Troche zaczalem bawic sie w RE i nie moge odwzorowac kodu assemblera w __fastcall. Wersja __fastcall crashuje mi gierke a wersja z _asm dziala.
Problem jest tutaj MOV ECX, DWORD PTR DS : [0x667D90], gdyz nie wiem jak to wywolac w __fastcallu. Bede wdzieczny za wskazowki :)
typedef void(__fastcall* _AttackSpeed)(int val);
_AttackSpeed AttackSpeed;
void attack(int value) {
DWORD func = 0x0046D810;
_asm {
MOV ECX, DWORD PTR DS : [0x667D90]
SETNE AL
MOVZX EAX, AL
PUSH value
CALL func
}
}
DWORD WINAPI HackThread(HMODULE hModule)
{
AllocConsole();
FILE* f;
freopen_s(&f, "CONOUT$", "w", stdout);
std::cout << "dll injected\n" << std::endl;
uintptr_t moduleBase = (uintptr_t)GetModuleHandle(L"game.exe");
AttackSpeed = (_AttackSpeed)(0x0046D810);
while (true)
{
if (GetAsyncKeyState(VK_CONTROL) & 1)
{
attack(1);
}
if (GetAsyncKeyState(VK_SHIFT) & 1)
{
AttackSpeed(1);
}
Sleep(10);
}
fclose(f);
FreeConsole();
FreeLibraryAndExitThread(hModule, 0);
return 0;
}