Bot Theorie:
Einfach beschrieben ist ein Bot, eine Programmierter Spieler der das tut was ein echter Spieler auch tun wrde um Level zu steigen.
Pseudo Code eines Bottes: Monsterliste list = new Monsterliste(); Funktion OnMonsterSpawn() : list-->Add Funktion GreifeAn() : list-->Zufall()-->Attack();
An hand dieses Pseudo Codes knnen wir erkennen das der Bot auf das Monster Spawn Packet wartet. Und darrauf hin das Monster in eine Liste einfgt. Danach wird ein zuflliges Monster attackiert.
Proxy
Was ist eine Proxy in unserem fall, und wozu bentigen wir sie?
In unserem Fall ist die Proxy ein zwischen Server. Der Client sendet an die Proxy (Zwischenserver) ein Packet. Darrauf reagiert die Proxy und sendet diese an den echten Silkroad Server weiter. Wen der Silkroad Server antwortet dann schickt die Proxy die Antwort weiter an den echten Clienten. Wir bentigen dies um die Packet zu Sniffen und damit unsere Bot zB mit griegt wen zB ein Monster Spawnt...
{ realClient = proxyServer.EndAccept(asyn); virtuelClient.Connect(SilkroadIP, SilkroadPort); virtuelClient.BeginReceive(serverBuffer, 0, 1024, SocketFlags.None, new AsyncCallback(OnBufferByServer), null); realClient.BeginReceive(clientBuffer, 0, 1024, SocketFlags.None, new AsyncCallback(OnBufferRecv), null); } private void OnBufferRecv(IAsyncResult asyn) { int recv = realClient.EndReceive(asyn); byte[] removed = GetBytes(recv, clientBuffer); OnClientSend(removed); virtuelClient.Send(removed); realClient.BeginReceive(clientBuffer, 0, 1024, SocketFlags.None, new AsyncCallback(OnBufferRecv), null); } private void OnBufferByServer(IAsyncResult asyn) { int recv = virtuelClient.EndReceive(asyn); byte[] removed = GetBytes(recv, serverBuffer); OnServerSend(removed); realClient.Send(removed); virtuelClient.BeginReceive(serverBuffer, 0, 1024, SocketFlags.None, new AsyncCallback(OnBufferByServer), null); } private byte[] GetBytes(int count, byte[] b) { MemoryStream ms = new MemoryStream(b); BinaryReader br = new BinaryReader(ms); return br.ReadBytes(count); } }
Ich Hoffe diese Zeichnung hilft euch beim verstehen des Codes. Bei fragen, fragt. So das wars dann erstmal fr den ersten Teil der Reihe. Nchstes mal gehts dann ans Sniffen . :-)