Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Kal Online
You last visited: Today at 12:23

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Bakabug's kal hack 11

Discussion on Bakabug's kal hack 11 within the Kal Online forum part of the MMORPGs category.

Closed Thread
 
Old   #1
 
elite*gold: 0
Join Date: Dec 2007
Posts: 102
Received Thanks: 6
Bakabug's kal hack 11

So hab hier mal was neues von bakabug ... Ich hab nichts dadran gemacht !!!

Wollt mal wissen ob ihr was damit anfangen könnt ...


/*
KAL HACK 11 by BakaBug
-----------------------------------------
stricsamo you little wannabe !
First stealing my KalHack8 renaming it to KsBOT

And then telling everyone that you have written KalHack1-11
and wanna release it ? COM'ON RELEASE IT !!

Anyways guy's..

This hack would still work on INT-Server when
you know how to use it...
True is this is only a TEST-HACK
Used for checking how to the new hshild is ...

New Hshild is really better .. but arg it doesnothing ..

Anyways you can't call it a fully hack
The source were wirtten in 20min without any reason
for making it to a GOOD HACK / BOT

It include a little funny bot
(which is handled over a bad written packet handling)

BOT DO:
1. Walk form mob to mob
2. Kill it ..

Yeah not much + whats funny about it ?

The fun comes here:
No Players around: Move speed superman... toooooo fast XD
1 or more player : Normal move speed + walking on ground normal attack speed

Yeah nobody would see it as bot :X

I called it invisible bot ^^

Auto-pickup am not sure but i think it inclded a noobs-test pickup..

Anyways everything is worse written...

(c) BakaBug - Luca Béla Palkovics 31.Dez.2007 15:33
You can see this as a little present from me !
HAPPY NEW YEAR !!!

You can use the source where you want.. XD
But pls add my Name XD .. don't be a wannabe like "stric samo"


AH FOR THE NOOBS:
No this is not a full hack
No you can't copy past finish

FOR PROFIS:
SearchPattern does nothing else then serach for a ASM-Sequenze
My Detours working without problems

FOR SOMEONE WHO WANT TO MAKE IT BETTER:
DON'T USE THE SEND-DETOUR FOR GETTING WHATS SENT !!
AS YOU SEE IT'S REALLY HARD TO FILER OUT THE PACKET INFOS THIS WAY
IT'S BETTER YOU DO IT LIKE THE RECV-DETOUR
*/
#include <stdio.h>
#include "HackIt.h"
#include "Hook.h"
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <fcntl.h> /* for _O_TEXT and _O_BINARY */
#include <io.h>
#include <process.h>
// basic file operations
#include <iostream>
#include <fstream>
#include <math.h>

//connect to myself
char SendText[]="SEND TYPE: 0x%0.2x FORMAT: %s\n";
char RecvText[]="RECV TYPE: 0x%0.2x DATA : ";

DWORD MyRecvBack,MySendBack,MyHeightBack,MyTeleportBack;
DWORD GetUnitByName;

struct SPlayer
{
DWORD PID;
DWORD X;
DWORD Y;
DWORD Z;
BYTE Classe;
char name[255];
};
SPlayer Player[500]={0};

struct SItem
{
DWORD Item;
DWORD X;
DWORD Y;
DWORD Z;
};
SItem Item[500]={0};

struct SMob
{
DWORD MID;
DWORD X;
DWORD Y;
DWORD Z;
BYTE Classe;
DWORD HP;
};
SMob Mob[500]={0};

int playerx,mobsx,hp,mp;
int last_u=0;
DWORD temp={0};
DWORD lastweapon={0};
DWORD target;
DWORD botstate=0;
DWORD FightBack[500]={0};
DWORD start_x,start_y,lastmove;
DWORD attackcount=0;

void IntDEBUG()
{
int hCrtIn, hCrtOut;
FILE *conIn, *conOut;

AllocConsole();
hCrtIn = _open_osfhandle ((intptr_t) GetStdHandle(STD_INPUT_HANDLE), _O_TEXT);
hCrtOut = _open_osfhandle ((intptr_t) GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
conIn = _fdopen( hCrtIn, "r" );
conOut = _fdopen( hCrtOut, "w" );
*stdin = *conIn;
*stdout = *conOut;
}

float Naked Something2(DWORD some,DWORD some2,...)
{
//jep
__asm
{
push ebp
mov ebp, esp
sub esp, 40h
}
//SOMETHING yeahhh
__asm
{
jmp MyTeleportBack
}
}


DWORD Naked Something(DWORD some,DWORD some2,...)
{
_asm
{
push ebp
mov ebp, esp
push ecx
fild [ebp+0x08]
mov eax, [ebp+0x0C]
shl eax, 0Dh
mov [ebp-0x04], eax
fisub [ebp-0x04]
mov esp, ebp
pop ebp
fstp [ebp-0x04]
mov eax,[ebp-0x04]
retn
}
}

DWORD Naked CalculateMapPart(DWORD someDWORD)
{
__asm
{
push ebp
mov ebp, esp
sub esp, 1Ch
mov eax,someDWORD //GET VARIBALE FROM STACK
cdq // -> EAX -> 64bit auf EDX:EAX
and edx, 1FFFh
add eax, edx
sar eax, 0Dh //roate 13bit Oo (right)
//return
mov esp, ebp
pop ebp
retn
}
}

float Naked MyHeightDetour(DWORD x,DWORD y,...)
{
__asm
{
push ebp
mov ebp, esp
sub esp, 94h
}
//show info
//printf("Height 0x%08x 0x%08x %f\n ",x,y);
__asm
{
jmp MyHeightBack //back to original
}
}

DWORD GetUnit(char* name)
{
__asm jmp GetUnitByName;
}

int Naked MySendDetour(DWORD type,LPCSTR format,...)
{
__asm
{
push ebp
mov ebp, esp
sub esp, 18h
}


//if (format[0] =='U')
//DO SOMETHING HEHE
/*
SEND TYPE: 0x2b FORMAT: Ubd
SEND TYPE: 0x10 FORMAT: Ubbd
*/

//printf(SendText,type,format);

if (type == 0x25)
{
printf("SEND TELPORT TO TOWN !!!\n");
botstate=0;
Sleep(1000);
}

va_list args;
va_start(args, format); /* Initialize variable arguments. */

int i,s;
char* something;
for (i=0;i<strlen(format);i++)
{
switch (format[i])
{
case 'U': //??? 4bytes
temp=va_arg( args, DWORD);
last_u=temp;
break;
case 'b': //BYTE
if ((i==1)&&((type==0x14)||(type==0x15)))
Player[0].X+=(signed char)va_arg( args, DWORD);
if ((i==2)&&((type==0x14)||(type==0x15)))
Player[0].Y+=(signed char)va_arg( args, DWORD);
if ((i==3)&&((type==0x14)||(type==0x15)))
Player[0].Z+=(signed char)va_arg( args, DWORD);
if (type==0x0F)
{
temp=va_arg( args, DWORD);
}
if (type==0x10)
{
temp=va_arg( args, DWORD);
}
if (type==0x15)
{
// printf("Pickup %d\n",va_arg(args, DWORD));
}
break;
case 'd': //DWORD
if (type==0x0F)
//printf(" %d: %d\n",i+1,va_arg( args, DWORD));
temp=va_arg( args, DWORD);
if ((i==2)&&(type==0x0F))
{
printf("Attack [%08x]\n,",temp);
s=temp;
}
if ((i==3)&&(type==0x0F))
{
//yeah the item id
lastweapon=temp;
//printf("%08x]\n",temp);
attackcount++;
if (attackcount>=4)
{
if (mp>50)
{
//send skill
MySendDetour(0x10,"Ubbd",last_u,3,1,s);
// MySendDetour(0x2b,"Ubd",last_u,3,s);
}
attackcount=0;
}
}
break;
case 'w': //WORD
// printf(" %d: %d\n",i+1,(WORD)va_arg( args, DWORD));
temp=va_arg( args, DWORD);
break;
case 's': //WORD
// printf(" %d: %s\n",i+1,va_arg( args, char*));
something=va_arg( args, char*);
if (type==0x11)
{
printf("Chat: %s\n",something);
if (strcmp("/bot 1\0",something) == 0)
{
botstate=1;//active
start_x=Player[0].X;
start_y=Player[0].Y;
printf("ACTIVE BOT !\n");
}
if (strcmp("/bot 0\0",something) == 0)
{
botstate=0; //deactive
printf("DEACTIVE BOT !\n");
}
if (strcmp("/test\0",something) == 0)
{
botstate=0; //deactive
printf("Height test: %d %d %f!\n",Something(Player[0].X,0x20),Something(Player[0].Y,0x20),MyHeightDetour(Something(Player[0].X,0x20),Something(Player[0].Y,0x20)));
Something2(Something(Player[0].X+100,0x20),Something(Player[0].Y+100,0x20));
printf("Get UnitByName: BakaBug %d",GetUnit("BakaBug"));
}
if (strcmp("/attack_all\0",something) == 0)
{
printf("CHEAT ATTACK ALL\n");
//yeah test attack all in near..
int ii;
for (ii=0;ii<800;ii++)
{
//check if x !=0
if (Mob[ii].X != 0)
{
printf("MOB [%08x]\r",Mob[ii].MID);
int xx;
for (xx=0;xx<5;xx++)
{
//MySendDetour(0x0F,"Ubdd",last_u,1,Mob[ii].MID,0);
//MySendDetour(0x0F,"Ubdd",last_u,1,Mob[ii].MID,0);
//MySendDetour(0x0F,"Ubdd",last_u,1,Mob[ii].MID,0);
MySendDetour(0x15,"Ubbb",last_u,1,1,-30);
}
}
//walk squar
}
}
}
break;
}
}
va_end(args); /* Reset variable arguments. */
//jump to original..

__asm
{
jmp MySendBack;
}
// .recv 6b änderung des appender
}


void MyThread(void* start_parameter)
{
//here is our thread
DWORD lastattack;
while(true) //endless loop
{
char mytext[255];

if (playerx != 0)
{
sprintf(mytext,"KalHack11 - HP: %d - MP: %d X: %d Y: %d Z: %d - BotState: %d\0",hp,mp,Player[0].X,Player[0].Y,Player[0].Z,botstate);
SetConsoleTitleA(mytext);
if (botstate == 1)
{
printf("Search MOB..\n");
//SEARCH NEARES MOB !
int nearest=65535000;
int id=-1;
int i;
for (i=0;i<500;i++)
if (Mob[i].X != 0)
{
//MOB HERE CALC NEAR !
int difx=start_x-Mob[i].X;
int dify=start_y-Mob[i].Y;
//
int range=difx*difx+dify*dify;
if (nearest > range)
{
id=i;
nearest = range;
}
}
if (id!=-1)
{
//MOB FOUND
target=id;
botstate=2; //walk to it !
printf("Walk to MOB..\n");
}
}

if (botstate == 2)
{
//WALK TO SELECTED MOB !!
int difx=Player[0].X-Mob[target].X;
int dify=Player[0].Y-Mob[target].Y;
float range=(difx*difx+dify*dify)*1.0;
if (sqrt(range) < 50.0)
{
botstate=3; //ATTACK IT !
printf("attack the MOB..\n");
lastattack=GetTickCount()-800;
}
else
{
//CALC MOVE !
signed char tempx=-(difx/sqrt(range))*30;
signed char tempy=-(dify/sqrt(range))*30;
int difz=Player[0].Z-MyHeightDetour(Something(Player[0].X+tempx,0x20),Something(Player[0].Y+tempy,0x20))*10;
signed char tempz=-difz*1;
if (-difz>120.0)
tempz=120;
if (-difz<-120.0)
tempz=-120;
if (playerx > 1)
{
if (lastattack<GetTickCount()-200*3)
{
MySendDetour(0x15,"Ubbb",last_u,tempx,tempy,tempz) ;
lastattack=GetTickCount();
}
}
else
MySendDetour(0x15,"Ubbb",last_u,tempx,tempy,tempz) ; //NOBODY HERE SPEED UP MAN !
}
}
if (botstate==3)
{
//attack mob !!
if (lastattack<GetTickCount()-600)
{
//ATTACK IT !
MySendDetour(0x0F,"Ubdd",last_u,1,Mob[target].MID,lastweapon);
lastattack=GetTickCount();
}
//yeah
if (lastmove<GetTickCount()-200)
{
int difx=Player[0].X-Mob[target].X;
int dify=Player[0].Y-Mob[target].Y;
//int difz=Player[0].Z-MyHeightDetour(Something(Player[0].X,0x20),Something(Player[0].Y,0x20))*10;
float range=(difx*difx+dify*dify)*1.0;
signed char tempx=-(difx/sqrt(range))*30;
signed char tempy=-(dify/sqrt(range))*30;
//roate vector
tempy = (cos(100*3.16)*(tempx*1.0) - sin(100*3.16)*(tempy*1.0))*1;
tempy = (cos(100*3.16)*(tempy*1.0) + sin(100*3.16)*(tempx*1.0))*1;

int difz=Player[0].Z-MyHeightDetour(Something(Player[0].X+tempx,0x20),Something(Player[0].Y+tempy,0x20))*10;
signed char tempz=-difz*1;
if (-difz>120.0)
tempz=120;
if (-difz<-120.0)
tempz=-120;
if (hp > 100)
{
if (sqrt(range) < 50.0)
{
if (playerx <= 1)
MySendDetour(0x15,"Ubbb",last_u,tempx,tempy,tempz) ;
}
}
else
if (sqrt(range) < 150.0)
{
MySendDetour(0x15,"Ubbb",last_u,tempx,tempy,tempz) ;
MySendDetour(0x15,"Ubbb",last_u,tempx,tempy,tempz) ;
//THIS IS RUN AWAY !
}

lastmove=GetTickCount();
}
}
}
Sleep(10);
}
}

int WINAPI MyRecv(char* packet)
{
//printf(RecvText,packet[2]);

WORD size;
memcpy((void*)&size,(void*)((DWORD)packet),2);
//loop and schon packet
/*
{
int i;
for (i=0;i<=size;i++)
{
printf("%02x ",(BYTE)packet[i]);
}
printf("\n");
}
*/
//size=(WORD)(packet[0]); //hoffe das ist die richtige..
if (packet[2] == 0x3B)
{
//ITEM AWAY !
DWORD id;
memcpy((void*)&id,(void*)((DWORD)packet+3),4);
int i;
for (i=0;i<=500;i++)
if (Item[i].Item==id)
{
//ITEM FOUND !
//DELETE IT !
Item[i].X=0;
break;
}
}
if (packet[2] == 0x36)
{
//ADD ITEM
DWORD id;
DWORD x;
DWORD y;
memcpy((void*)&id,(void*)((DWORD)packet+5),4);
memcpy((void*)&x,(void*)((DWORD)packet+5+4),4);
memcpy((void*)&y,(void*)((DWORD)packet+5+4+4),4);
printf("Item dropped [%08x] [%d , %d]\n",id,x,y);
//add item to list !
int i;
for (i=0;i<=500;i++)
{
if (Item[i].X == 0)
{
//FREE ITEM SLOT FOUND !
Item[i].Item=id;
Item[i].X=x;
Item[i].Y=y;
//easy autopickup..
//SEND TYPE: 0x15 FORMAT: Ubbb byte byte byet Oo ? wtf ?
MySendDetour(0x20,"Uddd",last_u,id,x/32,y/32);
}
}
}
if (packet[2] == 0x46)
{
printf("TELPORT TO TOWN !!!\n");
botstate=0;
Sleep(1000);
}
if (packet[2] == 0x45)
{
int i;
//for (i=0;i<size;i++)
// printf("%0.2x",(BYTE)packet[i]);
//printf("\n");

char myword[1];
myword[0]=packet[5];
myword[1]=packet[4];
if (packet[3] == 0x08)
{
//printf("MP changed [%d]\n",(WORD)(myword[0]));
memcpy((void*)&mp,(void*)((DWORD)packet+4),2);
printf("MP changed [%d]\n",mp);
}
if (packet[3] == 0x07)
{
memcpy((void*)&hp,(void*)((DWORD)packet+4),2);
printf("HP changed [%d]\n",hp);
}
}
if (packet[2] == 0x3E)
{
//someone attack someon
//or something attack something :P
DWORD attacker=0;
DWORD target=0;
WORD dmg;
WORD dmg2;
memcpy((void*)&attacker,(void*)((DWORD)packet+3+1) ,4);
memcpy((void*)&target,(void*)((DWORD)packet+3+1+4) ,4);
memcpy((void*)&dmg,(void*)((DWORD)packet+3+1+4+2), 2);
memcpy((void*)&dmg2,(void*)((DWORD)packet+3+1+4+2+ 2),2);
//if targe myslef => fight back => update hp
//add dmg to target / if mob
int i;
for (i=0;i<500;i++)
{
if (Mob[i].MID==target)
{
Mob[i].HP-=(dmg+dmg2);
break;
}
}
}
if (packet[2] == 0x3d)
{
DWORD id;
memcpy((void*)&id,(void*)((DWORD)packet+3),4);
BYTE state;
memcpy((void*)&state,(void*)((DWORD)packet+3+4),1) ;
//if (state==0x08)
//{
//someone die !
int i;
for (i=0;i<500;i++)
{
//check if x =0
if (Mob[i].MID == id)
{
if (state==0x08)
{
if (i==target)
MySendDetour(0x10,"Ubbd",last_u,1,1,Mob[i].MID);
}
else
mobsx-=1;

if (target==i)
if (botstate != 0)
{
//MySendDetour(0x1F,"Ub",last_u,1); //REST?
botstate=1; //when bot active
}

Mob[i].X=0; //mob not here anymore
break;
}
}
//}
}
if (packet[2] == 0x38)
{
//mob dis
DWORD id;
memcpy((void*)&id,(void*)((DWORD)packet+3),4);
int i;
for (i=0;i<500;i++)
{
//check if x =0
if (Mob[i].MID == id)
{
//printf("mob away");
Mob[i].X=0; //mob not here anymore
mobsx-=1;
break;
}
}
}

if ((packet[2] == 0x24) || (packet[2] == 0x25))
{
//mob move..
DWORD id;
memcpy((void*)&id,(void*)((DWORD)packet+3),4);
int i;
for (i=0;i<500;i++)
{
//check if x =0
if (Mob[i].MID == id)
{
signed char x,y/*,z*/=0;
memcpy((void*)&(x),(void*)((DWORD)packet+3+4),1);
memcpy((void*)&(y),(void*)((DWORD)packet+3+4+1),1) ;
//memcpy((void*)&(z),(void*)((DWORD)packet+3+4+1+1), 1);
Mob[i].X+=x;
Mob[i].Y+=y;
//Player[i].Z+=z;
break;
}
}
}
if (packet[2] == 0x33)
{
//mob apear

int i;
for (i=0;i<500;i++)
{
//check if x =0
if (Mob[i].X == 0)
{
DWORD id;
memcpy((void*)&id,(void*)((DWORD)packet+3+2),4);
Mob[i].MID=id;
memcpy((void*)&(Mob[i].Classe),(void*)((DWORD)packet+3),2);
memcpy((void*)&(Mob[i].X),(void*)((DWORD)packet+3+4+2),4);
memcpy((void*)&(Mob[i].Y),(void*)((DWORD)packet+3+4+2+4),4);
memcpy((void*)&(Mob[i].HP),(void*)((DWORD)packet+3+4+2+4+4+1+1),2);
//printf("Mob: %d X %d Y %d Z %d HP %d\n",Mob[i].Classe,Mob[i].X,Mob[i].Y,Mob[i].Z,Mob[i].HP);
mobsx+=1;
break;
}
}
}
if (packet[2] == 0x37)
{
//disapear
DWORD id;
memcpy((void*)&id,(void*)((DWORD)packet+3),4);
int i;
for (i=0;i<500;i++)
{
if (Player[i].PID == id)
{
printf("Player disapear [PID: %08x Name: %s]\n",id,Player[i].name);
Player[i].X=0; //deactive !
playerx-=1;
break;
}
}
}
if ((packet[2] ==0x22) || (packet[2] == 0x23))
{
//player move.. jetzt noch net..
DWORD id;
memcpy((void*)&id,(void*)((DWORD)packet+3),4);
int i;
for (i=0;i<500;i++)
{
//check if x =0
if (Player[i].PID == id)
{
//printf("Player move [PID: %08x Name: %s]\n",id,Player[i].name);
signed char x,y,z=0;
memcpy((void*)&(x),(void*)((DWORD)packet+3+4),1);
memcpy((void*)&(y),(void*)((DWORD)packet+3+4+1),1) ;
memcpy((void*)&(z),(void*)((DWORD)packet+3+4+1+1), 1);
Player[i].X+=x;
Player[i].Y+=y;
Player[i].Z+=z;
break;
}
}
}
if (packet[2] == 0x32)
{
//player apear
DWORD id;
memcpy((void*)&id,(void*)((DWORD)packet+3),4);
char name[255]={0};
memcpy((void*)&name,(void*)((DWORD)packet+7),16);
printf("Player apear [PID: %08x Name: %s]\n",id,name);
//ADD PLAYER
int i;
for (i=0;i<500;i++)
{
//check if x =0
if (Player[i].X == 0)
{
memcpy((void*)&(Player[i].name),(void*)&name,16);
Player[i].PID=id;
int aftername;
aftername=strlen(Player[i].name);
//insert COORDINATES
memcpy((void*)&(Player[i].Classe),(void*)((DWORD)packet+7+aftername+1),1);
memcpy((void*)&(Player[i].X),(void*)((DWORD)packet+7+aftername+2),4);
memcpy((void*)&(Player[i].Y),(void*)((DWORD)packet+7+aftername+2+4),4);
memcpy((void*)&(Player[i].Z),(void*)((DWORD)packet+7+aftername+2+4+4),4);
//printf("C: %d X: %d Y:%d Z:%d\n",Player[i].Classe,Player[i].X,Player[i].Y,Player[i].Z);
playerx+=1;
break; //ender der schleife
}
}
}
return 0;
}

int Naked MyRecvDetour()
{
__asm
{
push edx
push ecx
push ebx
push eax

mov eax, [ebp+0x08] //my packet ehh ^^
push eax
call MyRecv

pop eax
pop ebx
pop ecx
pop edx

mov eax, [ebp+0x08]
movzx ecx, [eax+2]
mov edx,MyRecvBack//0x00523272
jmp edx
}
}

DWORD SearchPattern(char* pattern,DWORD start_offset)
{
//strtoul
if (start_offset==0)
start_offset=0x00401000;
DWORD offset=start_offset; //in olly nachgucken
DWORD ende =0x0061A587; //in olly nachgucken
DWORD start=offset; //yep
DWORD backoffset;
DWORD size =strlen(pattern)-1;
DWORD foundoffset=0; //0=not found !

char * pEnd=pattern; //next letter position
while(1)
{
char &myposition=*(char*)offset;
//überprüfen
if ((pEnd[1]!='x'))
{
char temp=(char)strtoul(pEnd, &pEnd, 0x10);
if (temp==myposition)
{
if (foundoffset==0)
{
foundoffset=offset;
}
}
else
{
//everything from beginning
pEnd=pattern;
if (foundoffset != 0)
offset=foundoffset;
foundoffset=0;
}
}
else
{
//WILDCARE DON'T HANDLE
pEnd=&pEnd[2]; //2 weiter " x" <- yep
}
offset++; //immer 1 byte dazu
if (((DWORD)pEnd-(DWORD)pattern>=size)||(offset>=ende))
break; //ende der schleife
}

return foundoffset;
}

void PimpItNow()
{
//hack start
IntDEBUG();

char mytext[255]={0};
sprintf(mytext,"KalHack11");
SetConsoleTitleA(mytext);

printf("KalHack 11 - I am not dead yet ! - by BakaBug\n");
printf("----------------------------------------------------\n");
int offset;
printf("[%6d] Install Send-Detour \n",offset=SearchPattern("55 8B EC 83 EC 18 83 3D x x x x 00 74 07 33 C0 E9 x x x x 8A 45",0));
if (offset != 0)
Intercept(INST_JMP,offset,(DWORD)MySendDetour,5);
MySendBack=offset+6;
printf("[%6d] Install Recv-Detour \n",offset=SearchPattern("8B 45 08 0F B6 48 02 89 8D x x FF FF 81 BD x x FF FF 81 00 00 00",0));
if (offset != 0)
Intercept(INST_JMP,offset,(DWORD)MyRecvDetour,5);
MyRecvBack=offset+7;
printf("[%6d] Install GetHeight-Detour \n",offset=SearchPattern("55 8B EC 81 EC 94 00 00 00 D9 45 08 D8 35 x x x x D9 5D 08",0));
if (offset != 0)
Intercept(INST_JMP,offset,(DWORD)MyHeightDetour,5) ;
MyHeightBack=offset+9;
printf("[%6d] Install Teleport-Detour\n",offset=SearchPattern("55 8B EC 83 EC 40 33 C0 83 3D x x x x x 0F 95 C0 85 C0",0));
if (offset != 0)
Intercept(INST_JMP,offset,(DWORD)Something2,5);
MyTeleportBack=offset+6;
printf("[%6d] Install DEBUG-Message-Detour \n",offset=SearchPattern("55 8B EC 5D C3 CC CC CC CC CC CC CC CC CC CC CC 55 8B EC 83 EC 2C C7 45 D4 00 00 00 00 C7 45 DC 00 00 00 00 C7 45 D8 00 00 00 00 8B 45 08 33 D2 B9 00 01 00 00 F7 F1 89 55 D8 8B 55 D8",0));
if (offset != 0)
Intercept(INST_JMP,offset,(DWORD)printf,6);
printf("Active DEBUG-Messages..\n");
int batches=0;
offset=0;
while (1)
{
offset=SearchPattern("01 00 00 00 85 x 74 x EB x",offset);
if (offset==0)
break;
batches++;
printf("Patched: %d [%d]\r",batches,offset);
Intercept(INST_NOP,offset+8,0,2);
}
GetUnitByName=SearchPattern("8B 11 89 55 EC 8B 45 EC 89 45 F8 EB 08",0);
printf("\n----------------------------------------------------\n");
_beginthread(MyThread,0,NULL);
}
Swatty--Angerfist is offline  
Thanks
3 Users
Old 12/31/2007, 18:58   #2
 
Godl!ke's Avatar
 
elite*gold: 0
Join Date: Oct 2007
Posts: 150
Received Thanks: 114
Jo, wenn man weiß was man damit machen kann sehr nützlich. So wie der Code
dasteht müsste es eigentlich auf allen Priv-Servern laufen halt nur noch Anti-HS rein
und dann per Injection.

greetz Godl!ke
Godl!ke is offline  
Old 12/31/2007, 19:02   #3




 
bloodx's Avatar
 
elite*gold: 55
Join Date: Mar 2006
Posts: 4,582
Received Thanks: 1,537
Godl!ke das ist das fürn Real-Server ^^ sollte es eig sein. und ja damit kann man was anfangen habe glaube ich noch paar von den fehlenden .h datein wenns die richtigen sind. naja egal vllt mal morgen testen obs noch läuft auf Real server *kal installieren morgen xD*
bloodx is offline  
Old 12/31/2007, 19:07   #4
 
Godl!ke's Avatar
 
elite*gold: 0
Join Date: Oct 2007
Posts: 150
Received Thanks: 114
Naja die Intercepts und andere fehlenden Funktionen kommen aus dem
D2HackIt und kann man sich dort einfach rauskopieren.

greetz Godlike
Attached Files
File Type: zip d2hackit source.zip (107.4 KB, 578 views)
Godl!ke is offline  
Old 12/31/2007, 20:07   #5




 
bloodx's Avatar
 
elite*gold: 55
Join Date: Mar 2006
Posts: 4,582
Received Thanks: 1,537
naja wenns funktioniert gut :P
aber lohnt sich eh netmehr für kal ^^ man brauch was neues :P bin grade dabei bischen am wow basteln xD
bloodx is offline  
Old 12/31/2007, 22:46   #6
 
Fedol's Avatar
 
elite*gold: 0
Join Date: Apr 2007
Posts: 470
Received Thanks: 23
@Godl!ke WTF anti-hshild .. das teil lauft mit hshild.. .. pservernoob wanna hack pserver Oo
server 2 und 3 haben hshild auch server side aktive.. was ich weiß wird man nach 30sek ohne hshild gekickt
@Godl!ke schwachsin ich hab meine eigenen intercepts .. blind ?

@bloodx da fehlöen keine headerfiles.. hook.h ist von meinem "How to game hack 1" und "hackit.h ist ne leere datei da steht nix drin"


seit ihr blind Oo ? das sind die source vom hack...

1. du musst eine dll erstellen .. die den hack ausfürht
2. du musst das ganze zeugs noch in die engine.exe reinbekommen
3. bei laufendem hshild

... die formatirung vom code in diesem forum sux's
+sie ist net verlinkt zu meiner seite !! .. Happy New YEAR !
Fedol is offline  
Old 01/01/2008, 04:12   #7
 
shadowZ_'s Avatar
 
elite*gold: 0
Join Date: Oct 2007
Posts: 8
Received Thanks: 18
Bakanoob, lern coden. da kriegt man ja augenkrebs.
Und englisch.
Und deutsch.
shadowZ_ is offline  
Old 01/01/2008, 13:35   #8
 
elite*gold: 0
Join Date: Jan 2008
Posts: 122
Received Thanks: 145
Man jetzt musste ich mir extra ne acc machen damit ich hier schrieben kann..

MAN IST DIR NET GENUG DAS ICH HIN SCHRIEBE DAS DIE CODE SCHEISSE SIND

wiso glaubst du release ich das Oo .. lol

1. Test hack
2. ich hatte nie vor daraus nen hack zu machen
3. für 20min schauen die source recht gut aus ..
4. Der Teil der scheiße ist ist der Bot und packet.-handling ... kannste ja rauslöschen und die source schauen wieder normal aus .. (ausser das man die detours ein bissal int machen kann, aber asm-copy & past ist noch immer die schnellste und einfachste methode)

Vergleich das teil net mit meine anderen programme !
BakaBug is offline  
Thanks
1 User
Old 01/02/2008, 00:29   #9
 
shadowZ_'s Avatar
 
elite*gold: 0
Join Date: Oct 2007
Posts: 8
Received Thanks: 18
Quote:
Originally Posted by BakaBug View Post
Man jetzt musste ich mir extra ne acc machen damit ich hier schrieben kann..

MAN IST DIR NET GENUG DAS ICH HIN SCHRIEBE DAS DIE CODE SCHEISSE SIND

wiso glaubst du release ich das Oo .. lol

1. Test hack
2. ich hatte nie vor daraus nen hack zu machen
3. für 20min schauen die source recht gut aus ..
4. Der Teil der scheiße ist ist der Bot und packet.-handling ... kannste ja rauslöschen und die source schauen wieder normal aus .. (ausser das man die detours ein bissal int machen kann, aber asm-copy & past ist noch immer die schnellste und einfachste methode)

Vergleich das teil net mit meine anderen programme !
Dann lass deinen geistigen Dünnschiss bitte auf deinem Rechner.
shadowZ_ is offline  
Old 01/02/2008, 00:37   #10
 
elite*gold: 0
Join Date: Dec 2007
Posts: 652
Received Thanks: 132
Quote:
Originally Posted by shadowZ_ View Post
Bakanoob, lern coden. da kriegt man ja augenkrebs.
Und englisch.
Und deutsch.

Ich bin mir ziemlich sicher das Luca besser coden kann als du

Who the **** bist du überhaupt?
MeepMoep is offline  
Old 01/02/2008, 00:39   #11
 
elite*gold: 20
Join Date: Mar 2006
Posts: 774
Received Thanks: 22
anstatt hier die klappe auf zu reissen mach lieber selbst mal was cO
streppel is offline  
Old 01/02/2008, 00:50   #12
 
shadowZ_'s Avatar
 
elite*gold: 0
Join Date: Oct 2007
Posts: 8
Received Thanks: 18
Wieso sollte ich auch nur IRGENDWAS an euch verstrahlte Kinder geben?
shadowZ_ is offline  
Old 01/02/2008, 00:55   #13
 
elite*gold: 0
Join Date: Sep 2007
Posts: 83
Received Thanks: 103
baka......
geb deine sources niemals weiter wenn sie nicht sauber gemacht sind oder gewöhn dir an auch tests sauber zu schreiben!
asm codes kann man auch elegant in c++ umwandeln, mein hackit zb läuft ohne asm parts :P
und wenn du schon was public machst mit soner tollen einleitung dann geb auch credits, aber bloß nich für dein code^^ du weißt was ich mein!
und lern englisch oder schreib deutsch :/
aner weiterhin viel glück
und arbeite mal für dich und nicht immer die kleinen kalkids


signed char x,y/*,z*/=0;
memcpy((void*)&(x),(void*)((DWORD)packet+3+4),1);
wie wärs mit..
x = packet[3+4];
???
oder in dem fall: memcpy((void*)&(Mob[i].X),(void*)((DWORD)packet+3+4+2),4);
einfach nur:
Mob[i].X = *(DWORD*)&packet[3+4+2];
oder verwende structs auf die packets mit den jeweiligen parametern

und die searchpattern funktion ist dafür da offsets zu suchen, dann brauchst du sie doch nicht nach jedem update neu suchen und fixoffsets einbauen?

achjaaa und..
DWORD offset=start_offset; //in olly nachgucken
DWORD ende =0x0061A587; //in olly nachgucken

das brauchst du auch nicht^^
hiermit klapperst du jede codesection ab:

Code:
typedef struct 
{
	BYTE	FixByte;
	int		FixByteOffset;
	float	percent;
	DWORD	offset;
	LPWORD	pattern;
	DWORD	patternLen;
} FINGERPRINT;

LPVOID SearchFingerprint(FINGERPRINT* fp, LPBYTE buf, LPBYTE bufend)
{
	buf += (fp->FixByteOffset >= 0) ? fp->FixByteOffset : 0;
	bufend -= fp->patternLen;
	
	LPBYTE p;
	float percent = 0.0f;
	while(buf < bufend) {
		if(/*fp->FixByteOffset >= 0 && */fp->FixByte != *buf) {
			buf++;
			continue;
		}
		p = buf - ((fp->FixByteOffset >= 0) ? fp->FixByteOffset : 0);
		percent = 100.0f;

		for(DWORD i = 0; i < fp->patternLen; i++) {
			if(!(fp->pattern[i] & 0xFF00) && (BYTE)fp->pattern[i] != p[i]) {
				percent -= 100.0f / (float)fp->patternLen;
			}
			if(percent < fp->percent)
				break;
		}
		if(percent > fp->percent) {
			fp->offset = (DWORD)p;
			if((fp->percent = percent) == 100.0f)
				return p;
		}
		buf++;
	}
	return NULL;
}

DWORD FindFingerprintEx(HMODULE	hModule,LPSTR szSearchPattern, DWORD offset)
{
	if(!hModule)
		return FALSE;
	char *x="";
	if(*szSearchPattern == '!')
		return strtoul(&szSearchPattern[1], &x, 0x10) + offset;

	FINGERPRINT fp;
	ZeroMemory(&fp, sizeof(fp));
	fp.patternLen = (strlen(szSearchPattern))/2;
	fp.pattern = new WORD[fp.patternLen];
	fp.percent = 75.0f;
	fp.FixByteOffset = -1;

	DWORD i = fp.patternLen - 1;
	for(LPSTR p = szSearchPattern + strlen(szSearchPattern) - 2;
		p >= szSearchPattern; p-=2, i--) {
		x="";
		fp.pattern[i] = (WORD)strtoul(p, &x, 0x10) & 0xFF;
		if(strlen(x)) // WILDCARD
			fp.pattern[i] = 0xFFFF;
			
		if(p > szSearchPattern && p[-1] == '#') {
			fp.FixByte = (BYTE)fp.pattern[i];
			fp.FixByteOffset = i;
			p--;
		}
		*p = '';
	}
	if(fp.FixByteOffset == -1) {
		fp.FixByte = (BYTE)fp.pattern[0];
		fp.FixByteOffset = 0;
	}

	PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)hModule;

	if(pDosHeader->e_magic != IMAGE_DOS_SIGNATURE && 
		!MessageBox(0,	"IMAGE_DOS_SIGNATURE is not correct!n"
		"Try to continue?", 0, MB_YESNO | MB_ICONEXCLAMATION))
		return FALSE;

	PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)((DWORD)hModule + pDosHeader->e_lfanew);
	
	if(pNtHeader->Signature != IMAGE_NT_SIGNATURE && 
		!MessageBox(0,	"IMAGE_NT_SIGNATURE is not correct!n"
		"Try to continue?", 0, MB_YESNO | MB_ICONEXCLAMATION))
		return FALSE;

	for(PIMAGE_SECTION_HEADER pSectionHeader = IMAGE_FIRST_SECTION(pNtHeader);
	pSectionHeader < &(IMAGE_FIRST_SECTION(pNtHeader))[pNtHeader->FileHeader.NumberOfSections];
	pSectionHeader++)
	{
		if(!((pSectionHeader->Characteristics & IMAGE_SCN_CNT_CODE) ||
			(pSectionHeader->Characteristics & IMAGE_SCN_MEM_EXECUTE)))
			continue;
		
		SearchFingerprint(&fp, (LPBYTE)hModule + pSectionHeader->VirtualAddress, 
			(LPBYTE)hModule + pSectionHeader->VirtualAddress + pSectionHeader->Misc.VirtualSize);
	}
	delete[] fp.pattern;
	return fp.offset + offset;
}
und so benützt man es:

Code:
FindFingerprint(
				"C745" "F8" "00007A44"	// MOV DWORD PTR SS:[EBP-8],0x447A0000
				"8B4D" "0C"				// MOV ECX,DWORD PTR SS:[EBP+C]
				"51"					// PUSH ECX
				"8B55" "08"				// MOV EDX,DWORD PTR SS:[EBP+8]
				"52"					// PUSH EDX
				"E8" "GetHeigh"			// CALL GetHeightEx
				"83C4" "08"				// ADD ESP,8
			"#"	"D95D" "FC"				// FSTP DWORD PTR SS:[EBP-4]
				"C705"					// MOV..
				,+0x10);
und wenn ich mein code hier iwo finde.. vergesst nich die credits^^
5andr0 is offline  
Old 01/02/2008, 11:58   #14
 
elite*gold: 0
Join Date: Jan 2008
Posts: 122
Received Thanks: 145
you ich weiß schon wie man PE-Header ausließt aber für so nene kleine testhack war das unötig ~.~ (herst hast ja eh meine ExeLoader gesehen .. wenn du der echte 5andr0 bist -__-)

kalr geht auch ohne asm.. aber .. so find ichs schnell und einfach
(ich weiß diese komischen befehle net auswendig um eine function auf eine andere adreese zu änbdern..) ... ah genau die Intercept methode ist von dir ... aber modifiziert

sie kann jetzt extra noch dazu:
* NOP
* SHORT JMP's (net alle)
* JZ .. bla bla

Die die du mir gegeben hast war auch ein bissal buggy... ~.~ (oder ging net richtig auf VC2005)

Und ja memcpy XD ... ich weiß pointer sind schneller und einfacher PDWORD x = (PDWORD)0x0000....


.. wiso glaubst du geb ich die source her Oo ? -... llooolllll...
Da sind nur so ein paar freunde die nerven immer so..... jetzt sagen sie nix mehr (auch wenn die source fast zum wegschmeißen sind)

credits and 5andr0 .. danke das du mir gezeigt hast wie man OllyDBG benütz .. und ASM .. und wie man hookt (trotzdem musst ich mir die hälfte selber raussuchen -__- detours etc. searchpattern hab ich ja auch selber geschrieben)

und bill gates für windows und DOS
und an AMD .. AMD rockt (naja ohne CPU geht nix)
und an NVIDEA .. ATI sux's
..bla bla bla ...

BTW ich gebe meine source nur weiter wenn sie scheiße sind Oo
wieso sollte ich gute source weiter geben Oo ? lol..

ahja .. ich werds versuchen meine nächsten tests sauber zu schrieben XD


..und jeder der was gegenmein Deutsch und/oder englisch hat .. pech gehabt !

Ich bin nicht stolz drauf .. mir ist klar das ich in deutsch und englisch schlecht bin
Ich hab net ohne grund einen 5er in Englisch/Deutsch (hab starke probelme an der schule wegen den scheiß)

Wie auch immer ich werd dieses forum jetzt verlassen .. für immer..
(kann man nen user löschen ?.. )
BakaBug is offline  
Old 01/02/2008, 14:21   #15
 
Pr1Me404's Avatar
 
elite*gold: 0
Join Date: May 2006
Posts: 614
Received Thanks: 142
Ich frag ma nach :P
lol

achja, außerdem biste ja Österreicher, du kannst nix für das dein Deutsch net so gut is

spaß^^

Edit:

Du könntest auch spammen, dann geb ich dir Infraction und Ban dich^^
Pr1Me404 is offline  
Closed Thread


Similar Threads Similar Threads
Bakabug's Kalbot
07/28/2008 - Kal Online - 2 Replies
This is the bot. Bakabug made it and you had to donate to Bakabug to get the bot. So.. I want to buy this bot for $40 USD via Paypal. German: Dieses ist der Bot. Bakabug bildete es und Sie mussten zu Bakabug spenden, um den Bot zu erhalten. So. Ich möchte diesen Bot für $40 USD über Paypal kaufen. YouTube - Kalonline latest Bot The Bakabug's website is closed. Observe - http://www.bakabug.net/ if hes got another site working ied like to know it. I want a demonstration of the bot...
Bakabug's Kalbot
07/27/2008 - Kal Online - 1 Replies
This is the bot. Bakabug made it and you had to donate to Bakabug to get the bot. So.. I want to buy this bot for $40 USD via Paypal. YouTube - Kalonline latest Bot German: Dieses ist der Bot. Bakabug bildete es und Sie mussten zu Bakabug spenden, um den Bot zu erhalten. So. Ich möchte diesen Bot für $40 USD über Paypal kaufen.
Problem Whit bakabug's bot.
07/07/2008 - Kal Online - 8 Replies
Hello, I have a problem whit bakabug's KH 12. I start kalonline Log in. Go to demon water dragon. Near temp. use this codes: /z 255 /a 255 /t 255 /r 40 Knight lvl 24.
[BoT]BakaBug's Bot here!
01/13/2008 - Kal Online - 115 Replies
Kalonline Bot for International Server's Testet= Yes Working=Yes Credits: BakaBug ZeroTen Bloodx MeepMoep Download+How to use+Commands



All times are GMT +2. The time now is 12:23.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.