New screenshot
This works for both international kalonline and private servers too!, completely undetected and 100% ban proof cannot get banned with this tool
To run it you basically just put the DLL it into your kalonline folder.
It comes with a advertiser (chat spammer)
and a ditto bot on top
commands are
wait 500
this waits 500 milliseconds.
wait 5s
this waits 5000 milliseconds or 5 seconds.
wait 5m
this waits 300000 milliseconds or 5 minutes.
keypress tab
presses the tab key inside game only.
keypress commands are
a-z,0-9,spacebar,tab,left,right,up,down.
keypresswait commands are
a-z,0-9,spacebar,tab,left,right,up,down.
but with wait time at end, example:
keypresswait left, 2000
this would hold left key for 2 seconds before letting it go.
keypresswait left, 2s
this would hold left key for 2 seconds before letting it go.
keypresswait left, 2m
this would hold left key for 2 minutes before letting it go.
leftclick x,y
leftclick 300,300
clicks at coordinate x:300 y:300 in game.
rightclick x,y
leftdblclick x,y
leftdoubleclick x,y
clicks 2 times instantly with left click on coordinates
rightdblclick x,y
rightdoubleclick x,y
clicks 2 times instantly with right click on cooordinates
mousemove x,y
all these keys work flawlessly
if you remove the wait times and run this script
Code:
keypress tab keypress spacebar keypress 1 keypress 2 keypresswait left, 2000
Here is the source code it add this to the d3d9 undetected hook i released.
Code:
static HWND KalHandle = NULL;
static void SendMapKey(int key)
{
PostMessageW(KalHandle, WM_KEYDOWN, (unsigned int)key, MapVirtualKeyW((unsigned int)key, 0u) << 16);
Sleep(5);
PostMessageW(KalHandle, WM_KEYUP, (unsigned int)key, MapVirtualKeyW((unsigned int)key, 0u) << 16);
}
static void SendMapKeyWait(int key, int wait)
{
PostMessageW(KalHandle, WM_KEYDOWN, (unsigned int)key, MapVirtualKeyW((unsigned int)key, 0u) << 16);
Sleep(wait);
PostMessageW(KalHandle, WM_KEYUP, (unsigned int)key, MapVirtualKeyW((unsigned int)key, 0u) << 16);
}
static void SendLetter(int key)
{
PostMessageW(KalHandle, WM_CHAR, (unsigned int)key, 0);
}
static void SendMapKeyNoFlags(int key)
{
PostMessageW(KalHandle, WM_KEYDOWN, (unsigned int)key, 0);
PostMessageW(KalHandle, WM_KEYUP, (unsigned int)key, 0);
}
static void SendReturn()
{
PostMessageW(KalHandle, WM_KEYDOWN, (unsigned int)VK_RETURN, 0x001C0001);
PostMessageW(KalHandle, WM_CHAR, (unsigned int)VK_RETURN, 0);
PostMessageW(KalHandle, WM_KEYUP, (unsigned int)VK_RETURN, 0xC01C0001);
}
static void MouseMove(unsigned short x, unsigned short y)
{
SendMessageW(KalHandle, WM_MOUSEMOVE, 0, (((WORD)y) << 0x10) | ((WORD)x));
Sleep(5);
}
static void SendLeftClick(int x, int y)
{
int num = (int)((WORD)y) << 16 | (int)((WORD)x);
PostMessageW(KalHandle, WM_LBUTTONDOWN, 1u, num);
Sleep(5);
PostMessageW(KalHandle, WM_LBUTTONUP, 0u, num);
}
static void SendRightClick(int x, int y)
{
int num = (int)((WORD)y) << 16 | (int)((WORD)x);
PostMessageW(KalHandle, WM_RBUTTONDOWN, 1u, num);
Sleep(5);
PostMessageW(KalHandle, WM_RBUTTONUP, 0u, num);
}
static void SendLeftDoubleClick(int x, int y)
{
int num = (int)((WORD)y) << 16 | (int)((WORD)x);
// Send double-click message
PostMessageW(KalHandle, WM_LBUTTONDOWN, MK_LBUTTON, num);
PostMessageW(KalHandle, WM_LBUTTONUP, 0, num);
PostMessageW(KalHandle, WM_LBUTTONDBLCLK, MK_LBUTTON, num);
PostMessageW(KalHandle, WM_LBUTTONUP, 0, num);
}
static void SendRightDoubleClick(int x, int y)
{
int num = (int)((WORD)y) << 16 | (int)((WORD)x);
// Send double-click message
PostMessageW(KalHandle, WM_RBUTTONDOWN, MK_LBUTTON, num);
PostMessageW(KalHandle, WM_RBUTTONUP, 0, num);
PostMessageW(KalHandle, WM_RBUTTONDBLCLK, MK_LBUTTON, num);
PostMessageW(KalHandle, WM_RBUTTONUP, 0, num);
}
int KeyConverter(char *key) {
char c;
int i = 0;
while (key[i])
{
key[i] = tolower(key[i]);
i++;
}
if (strcmp(key, "left") == 0)
return VK_LEFT;
if (strcmp(key, "right") == 0)
return VK_RIGHT;
if (strcmp(key, "up") == 0)
return VK_UP;
if (strcmp(key, "down") == 0)
return VK_DOWN;
if (strcmp(key, "spacebar") == 0)
return VK_SPACE;
if (strcmp(key, "tab") == 0)
return VK_TAB;
if (strcmp(key, "0") == 0)
return VK_0;
if (strcmp(key, "1") == 0)
return VK_1;
if (strcmp(key, "2") == 0)
return VK_2;
if (strcmp(key, "3") == 0)
return VK_3;
if (strcmp(key, "4") == 0)
return VK_4;
if (strcmp(key, "5") == 0)
return VK_5;
if (strcmp(key, "6") == 0)
return VK_6;
if (strcmp(key, "7") == 0)
return VK_7;
if (strcmp(key, "8") == 0)
return VK_8;
if (strcmp(key, "9") == 0)
return VK_9;
if (strcmp(key, "a") == 0)
return VK_A;
if (strcmp(key, "b") == 0)
return VK_B;
if (strcmp(key, "c") == 0)
return VK_C;
if (strcmp(key, "d") == 0)
return VK_D;
if (strcmp(key, "e") == 0)
return VK_E;
if (strcmp(key, "f") == 0)
return VK_F;
if (strcmp(key, "g") == 0)
return VK_G;
if (strcmp(key, "h") == 0)
return VK_H;
if (strcmp(key, "i") == 0)
return VK_I;
if (strcmp(key, "j") == 0)
return VK_J;
if (strcmp(key, "k") == 0)
return VK_K;
if (strcmp(key, "l") == 0)
return VK_L;
if (strcmp(key, "m") == 0)
return VK_M;
if (strcmp(key, "n") == 0)
return VK_N;
if (strcmp(key, "o") == 0)
return VK_O;
if (strcmp(key, "p") == 0)
return VK_P;
if (strcmp(key, "q") == 0)
return VK_Q;
if (strcmp(key, "r") == 0)
return VK_R;
if (strcmp(key, "s") == 0)
return VK_S;
if (strcmp(key, "t") == 0)
return VK_T;
if (strcmp(key, "u") == 0)
return VK_U;
if (strcmp(key, "v") == 0)
return VK_V;
if (strcmp(key, "w") == 0)
return VK_W;
if (strcmp(key, "x") == 0)
return VK_X;
if (strcmp(key, "y") == 0)
return VK_Y;
if (strcmp(key, "z") == 0)
return VK_Z;
}
HWND FindProcessWindow()
{
char szBuffer[200];
TCHAR szBuffer2[200];
DWORD dwTemp;
for (HWND hWnd = GetTopWindow(NULL); hWnd != NULL; hWnd = GetNextWindow(hWnd, GW_HWNDNEXT))
{
GetWindowThreadProcessId(hWnd, &dwTemp);
if (dwTemp != GetCurrentProcessId()) continue;
if (!GetClassName(hWnd, szBuffer, sizeof(szBuffer) / sizeof(char))) continue;
if (strstr(szBuffer, "KalOnline") || strstr(szBuffer, "D3D Window"))
return hWnd;
if (!GetClassName(hWnd, szBuffer2, _countof(szBuffer2))) continue;
if (strstr(szBuffer2, "KalOnline") || strstr(szBuffer2, "D3D Window"))
return hWnd;
}
return NULL;
}






open source here 