Clientless Metin2 Bot erstellen Frage dazu!

06/10/2010 06:13 roteisenklinge#1
Hallo liebe Coding Commu,
ich habe mal eine Frage an euch. Und zwar :
Habe mir überlegt wie man Systemressourcen sparen könnte. Es gibt viele Bots für Metin2 wie z.B Easymetin2 Bot und den Metin2 Bot von Itemshops. Allerdings benötigen diese Packets und einen Clienten der läuft.
Wie schwer ist es einen Clientless Bot zu erstellen? Als Programmiersprache C++?
Könnte mir jemand dabei helfen , ein paar Tipps etc. wären total hilfreich ^^
Vielleicht hat ja jemand langeweile und lust soetwas zu erstellen , hätte ein paar gute Ideen die nur noch umzusetzten würden

Auf diesem Weg erstmal vielen Dank
:)
06/10/2010 09:11 wurstbrot123#2
Quote:
Originally Posted by roteisenklinge View Post
Wie schwer ist es einen Clientless Bot zu erstellen?
Kommt aufs Spiel an. Man brauch jedoch schon einigermaßen
Erfahrung im Coding & reversing bereich.

Quote:
Originally Posted by roteisenklinge View Post
Als Programmiersprache C++?
Geht auch mit anderen Sprachen, sogar mit AutoIt
06/10/2010 09:32 HardCore.1337#3
Quote:
Kommt aufs Spiel an.
metin2 ;)

Als Programmiersprache geht in der tat AutoIt, aber wenn ich schon einen Bot machen würde, dann auch mit einer Hochsprache wie C++.

Aber jeder hat ja eine andere Meinung :D
06/10/2010 09:39 wurstbrot123#4
Habe nie gesagt das ich AutoIt nehmen würde. Ich hab von anfang
an C++ gelernt und finde AutoIt schrecklich :x
Wollte nur gesagt haben das es mit recht vielen Programmier /
Scriptsprachen geht.
06/10/2010 10:59 HardCore.1337#5
Ging ja auch nicht an dich ;)
06/10/2010 19:55 Frezee#6
Wenn Dc und tim das nicht schaffen, wirst du es auch nicht hinkriegen.

#closed
06/10/2010 21:15 Shadow992#7
Quote:
Originally Posted by Frezee View Post
Wenn Dc und tim das nicht schaffen, wirst du es auch nicht hinkriegen.
Sagt wer ?
Warum soll er es nicht probieren ?
Es gab schon viele Leute , die "neu" waren und trotzdem einiges geleistet haben ...

Quote:
Originally Posted by Frezee View Post
#closed
Biste schon Admin ? o.O
Btw. Das Thema ist noch nicht geclosed , hast es vllt. vergessen ;)
06/11/2010 00:07 bloodx#8
Clientless Bot bei Metin2 Ist sone sache, da wie ich mich erinnere alle x sekunden/minuten ein Packet gesendet wird. Davon musst du halt die Routine nach bauen.

Was naja bei Metin2 jetzt nicht die Welt war.

Glaub Metin2 hat auch immer noch kein Hackshield? Mit guten Kenntissen im Programmier + Assembler/Reversin usw. Kann man es aufjedenfall schaffen.

und and Frezee Wieso nimmste dir das Recht über jemanden zu urteilen?

Wenn ich mir deine Threads so angucken biste nicht grade viel besser :facepalm:
06/11/2010 02:53 Elektrochemie#9
Quote:
Originally Posted by bloodx View Post
Clientless Bot bei Metin2 Ist sone sache, da wie ich mich erinnere alle x sekunden/minuten ein Packet gesendet wird. Davon musst du halt die Routine nach bauen.
Man muss so ziemlich alle Packets simulieren bzw verarbeiten.
Der Server muss ja denken dass er da den echten Clienten vor sich hat, und nicht das Bot-Programm.
06/11/2010 08:18 wurstbrot123#10
Quote:
Originally Posted by bloodx View Post
Glaub Metin2 hat auch immer noch kein Hackshield?
Hackshield ist auch nicht unmöglich zu umgehen. Ich kenne ein Spiel indem
Hackshield implentiert ist mit Servercheck und weiss auch wie man diesen
umgehen kann. Unmöglich ist es nicht, benötigt jedoch etwas Reversing erfahrung ^^
06/11/2010 14:27 bloodx#11
Quote:
Originally Posted by wurstbrot123 View Post
Hackshield ist auch nicht unmöglich zu umgehen. Ich kenne ein Spiel indem
Hackshield implentiert ist mit Servercheck und weiss auch wie man diesen
umgehen kann. Unmöglich ist es nicht, benötigt jedoch etwas Reversing erfahrung ^^
Weis ich selber, und Servercheck naja wenn du es so nennen möchtest Ok.

Du musst nicht alle Packets haben. Kommt drauf an was für ein Bot du machen willst. Den Server interessiert es nicht wenn du z.b 50std lang nix dropst oder what ever.

Wichtig sind z.b nur eine Move Function,Attack/Skill,Mob Appear usw...


Aber naja in der Metin2 Sektion ist sowieso keiner Fähig so etwas zu Realisieren.

DC ist da ne ausnahme vllt aber naja.
06/11/2010 14:59 wurstbrot123#12
Quote:
Originally Posted by bloodx View Post
Weis ich selber, und Servercheck naja wenn du es so nennen möchtest Ok.

Du musst nicht alle Packets haben. Kommt drauf an was für ein Bot du machen willst. Den Server interessiert es nicht wenn du z.b 50std lang nix dropst oder what ever.
Ist mir klar dazu hab ich auch nix gesagt. Aber eine gescheite Hackshield
Version macht auch einen check über einen Hackshield Server ob alles
ok ist. Das läuft so ab das der Server dem Client Daten schickt
mit denen dann ein Antwortpacket erstellt wird. Ist daran was falsch,
oder bekommt es dieses nicht, bekommt man einen
Disconnect. Wenn man eine DLL injeziert hat, wird im normallfall
etwas falsches generiert, weswegen man den Client die Antwort
nicht erstellen lässt sondern macht man es selber über die Hackshield
Funktionen. Über Metin2 selber rede ich auch nicht, damit hab ich nix
zu tun und werd ich in Zukunft auch nicht haben. Natürlich intressiert
es den Server nicht wielange du welche Aktionen nicht machst,
jedoch gibt es bei so gut wie allen Spielen ein Pingpacket welches du
brauchst um keinen Disconnect zu bekommen und wahrscheinlich
auch in bestimmten abständen senden musst ( clientless ).
06/12/2010 00:54 Frezee#13
Quote:
Originally Posted by bloodx View Post
Clientless Bot bei Metin2 Ist sone sache, da wie ich mich erinnere alle x sekunden/minuten ein Packet gesendet wird. Davon musst du halt die Routine nach bauen.

Was naja bei Metin2 jetzt nicht die Welt war.

Glaub Metin2 hat auch immer noch kein Hackshield? Mit guten Kenntissen im Programmier + Assembler/Reversin usw. Kann man es aufjedenfall schaffen.

und and Frezee Wieso nimmste dir das Recht über jemanden zu urteilen?

Wenn ich mir deine Threads so angucken biste nicht grade viel besser :facepalm:
Jo das stimmt. Wenn du mir aber dort gesagt hättest, dass ich es nicht schaffe, dann hätte ich dir Recht gegeben.


wtf, ich "urteile über den TE"? Und behaupte, er soll es gar nicht probieren?

Sagen wir es einfach mal so:
Jeder der es hinbekommt, würde nicht in dieser Section nachfragen wie das geht. Besonders würde er nicht gleich nach der Programmiersprache fragen.

Daraus ziehe ich die Schlussfolgerung, dass der TE in näherer Zukunft es auch nicht schaffen wird einen Clientless Bot zu erstellen.

Wenn er es dennoch schafft, Herzlichen Glückwunsch, das freut mich dann ja auch.
06/12/2010 21:27 schlurmann#14
Ez sh1t lololol
06/13/2010 05:04 tim66613#15
Quote:
Originally Posted by roteisenklinge View Post
Hallo liebe Coding Commu,
ich habe mal eine Frage an euch. Und zwar :
Habe mir überlegt wie man Systemressourcen sparen könnte. Es gibt viele Bots für Metin2 wie z.B Easymetin2 Bot und den Metin2 Bot von Itemshops. Allerdings benötigen diese Packets und einen Clienten der läuft.
Wie schwer ist es einen Clientless Bot zu erstellen? Als Programmiersprache C++?
Könnte mir jemand dabei helfen , ein paar Tipps etc. wären total hilfreich ^^
Vielleicht hat ja jemand langeweile und lust soetwas zu erstellen , hätte ein paar gute Ideen die nur noch umzusetzten würden

Auf diesem Weg erstmal vielen Dank
:)
Die Basis ist nicht schwer.
Danach kommen aber Sachen, wie ServerTime-Sync, MagicCRCCube's, ...

Als kleine Hilfe gebe ich dir mal die HandShakePacketRecv-Funktion, sowie eine kleine Liste der als erstes versendeten Packets:
  1. PhasePacket 2Bytes (D: Enters the HandShake Phase)
  2. [n] HandShakePackets
  3. PhasePacket 2Bytes (D: Enters the AuthPhase, Only valid for AccountServers)
  4. [Connection to this Server closed! Connect to CharacterServer...]

Code:
#pragma pack(push)
#pragma pack(1)


enum PacketID {
	// General packets
	kHandShakePacket = 255,
	...
}

typedef struct {
	uint8_t m_packetID;
	uint32_t m_unknown;
	uint32_t m_x;
	uint32_t m_y;
} TPacketHandShake;

#pragma pack(pop)

...

void NetworkStream::RecvHandShakePacket()
{
	TPacketHandShake packet;

	if(!ReadPacketData(&packet, sizeof(TPacketHandShake)))
		return;

	DEBUG_PRINTF("HANDSHAKE RECV %u %d\n", (unsigned int)packet.m_x, (int)packet.m_y);

	SyncServerTime(packet.m_x + packet.m_y);
	ResetPingTimeVector();

	packet.m_x += 2 * packet.m_y;
	packet.m_y = 0;

	DEBUG_PRINTF("HANDSHAKE SEND %u\n", (unsigned int)(2 * packet.m_x + packet.m_y));

	AppendPacket(&packet, sizeof(TPacketHandShake), false);
}
Regards tim