#include <windows.h>
typedef void(__thiscall* TargetFunc)(int);
DWORD WINAPI MainThread(LPVOID param) {
// Base Adresi
DWORD_PTR baseMetin2 = (DWORD_PTR)GetModuleHandleW(L"metin2client.exe");
if (!baseMetin2) return 1;
// ECX
DWORD_PTR ecxValue = *(DWORD_PTR*)(baseMetin2 + 0x2AAF1B8);
// Fonksiyonun adresi
TargetFunc func = (TargetFunc)(baseMetin2 + 0x2339900);
// Parametre (örnek: 1)
int paramValue = 1;
// F6'ya basılmasını bekle
while (!(GetAsyncKeyState(VK_F6) & 1)) {
Sleep(10);
}
// F6 tekrar basılana kadar döngüde fonksiyonu çağır
while (!(GetAsyncKeyState(VK_F6) & 1)) {
__asm {
mov ecx, ecxValue
push paramValue
call func
}
Sleep(1000); // 1 saniye bekle
}
return 0;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
DisableThreadLibraryCalls(hModule);
CreateThread(0, 0, MainThread, hModule, 0, 0);
}
return TRUE;
}