Packete versenden

03/10/2010 19:12 HardCore.1337#1
Hi, ich würde gerne mal wissen, wie in Guild Wars die einzelnen Packets versendet werden, also aka. GWCA.

Ich will sowas ähnliches selber basteln, aber halt nicht soo komplex. Es soll halt für den Anfang nur 1 oder 2 Skills casten.

Wie ich die Packets heraus finde weiß ich, aber wie ich sie modfiziere und verschicke bleibt mir ein Rätsel.

Bsp. Code kann auch gerne in C++/C oder AutoIt geschrieben werden, ich entschlüssele ihn dann selber.

Danke
03/10/2010 19:16 Gabba2#2
Was spricht dagegen sich den GWCA Source Code anzusehen?
03/10/2010 19:18 HardCore.1337#3
hab ich mir schon angeschaut (CPacket?) aber damit komm ich irgendwie nicht ganz zurecht.
Ich bräuchte bloß einen Anstoß beim versenden von Daten
03/10/2010 19:42 voteban#4
mit der packetklasse aus der gwca wird ein buffer fuer das entsprechende packet aufgefuellt, der dann einfach versendet wird.

wenn du nur skills casten willst, brauchst du ja nicht unbedingt die klasse nutzen. kannst selbst die argumente auf den stack pushen und dann die packetsendfunktion aufrufen.

Code:
// UseSkill FunctionId: 3Fh
void UseSkill(long Target, long SkillId){
	_asm {
		MOV EDX, 14h
		MOV EAX, GWMem.PacketLocation
		MOV EAX, DWORD PTR DS:[EAX]
		MOV ECX, DWORD PTR DS:[EAX]
		PUSH 0h
		PUSH Target
		PUSH 0h
		PUSH SkillId
		PUSH 3Fh
		PUSH ESP
		CALL GWMem.PacketSendFunction
	}
}

// UseAttackSkill FunctionId: 20h
void UseAttackSkill(long Target, long SkillId){
	_asm {
		MOV EDX, 14h
		MOV EAX, GWMem.PacketLocation
		MOV EAX, DWORD PTR DS:[EAX]
		MOV ECX, DWORD PTR DS:[EAX]
		PUSH 0h
		PUSH Target
		PUSH 0h
		PUSH SkillId
		PUSH 20h
		PUSH ESP
		CALL GWMem.PacketSendFunction
	}
}
die packetsendfunktion mit nem funktionspointer aufgerufen wuerde so aussehen.
Code:
void SendPacket(DWORD packetSize, char* packetBuffer){
	void (__fastcall* SendPacketPtr)(DWORD packetLocation, DWORD packetSize, char* packetBuffer) = (void(__fastcall*)(DWORD, DWORD, char*))GWMem.PacketSendFunction;
	(*SendPacketPtr)(**reinterpret_cast<DWORD**>(GWMem.PacketLocation), packetSize, packetBuffer);	
}
03/10/2010 19:47 HardCore.1337#5
Ok, vielen Dank.
Ich werd es jetzt anderes lösen (TCP), so das ich keine DLL mehr Injecten muss
03/14/2010 16:29 73rm1n4t0r#6
das funktioniert net ... die packets werden von gw verschlüsselt und dabei mutiert der key heißt im endeffekt du müsstest deinen eigenen client schreiben wenn du keine dll injecten willst ...
03/14/2010 17:07 HardCore.1337#7
ahh, ok
wusst ich nicht
03/15/2010 21:19 buFFy!#8
In Delphi.. xD

hf :awesome:
03/15/2010 21:22 in MIND#9
Quote:
Originally Posted by u-coRe View Post
In Delphi.. xD
locker, er is ja:
Code:
Delphi Fortgeschritten [x]
03/15/2010 21:45 HardCore.1337#10
ja, aber in dem Anwendungsgebiet hab ich kaum erfahrung

@U-coRe: Ich steh zu meiner Sprache :awesome:
03/16/2010 10:35 in MIND#11
also doch nur
Code:
Delphi Anfänger [x]
03/16/2010 18:42 blauwiggle#12
Quote:
Originally Posted by in MIND View Post
also doch nur
Code:
Delphi Anfänger [x]
Immerhin kann er was, du nicht ;)
03/16/2010 20:09 HardCore.1337#13
man lernt immer dazu ;)
Nur mit Internet und Co. kann man mich jagen.

Ich bin eher der Mathematiker und so
03/17/2010 12:38 in MIND#14
Quote:
Originally Posted by blauwiggle View Post
Immerhin kann er was, du nicht ;)
ne sry delphi kann ich wirklich nich, will ich allerdings auch nich...

von deinen bots wolln wir gar nich anfangen (stein, der einzige seiner art etc...)
03/17/2010 15:03 HardCore.1337#15
welche bots hab ich bitte? :D
Ich habe mal vor einem 3/4 meinen Nebo Botreleased (mit Autoit) aber sonst sieht man von mir nichts.