Neuer Handelbug?

03/16/2015 20:57 Stahllegierung#31
wäre jemand so nett und schickt mir die anleitung zum altenper pn? hatte die mal als txt datei, aber leider verlegt oder eher gelöscht. den rest versuche ich selber rauszufinden
03/16/2015 21:13 Fersion#32
lol
03/17/2015 14:59 Stahllegierung#33
und wie kommt man jetzt bitte auf sowas? :D
beziehungsweise:
was genau steckt dahinter, dass man den char, der angehandelt wurde dann killen muss? oder anders gefragt: wie hängt das alles aus programmiertechnischer sicht zusammen?
03/17/2015 16:02 WarRockFreaq#34
Oh jetzt gibts also wieder viele Amateure, die sich wieder ans bugen machen, have fun. Ganz ehrlich, an alle Pserver, macht einfach auf jeder Drecksmap den Handel aus & verbietet den Shop auf jeder Map. Gildenmeisterfix gab's ja bekanntlich auch schon, dann habt ihr endlich 'n bugfreien Server, zwar nur suboptimale Fixes, aber anders geht's ja nicht..
03/17/2015 16:07 Fersion#35
naja war halt bzw ist halt einfach ne lücke gewesen das ein handel nach dem tod nicht abbgebrochen wurde.. und dann hat das spiel das nicht mehr gecheckt und dachte es wäre richtig was es tut o.o
03/17/2015 16:43 xZerath#36
also wie ich das sehe wird nach dem aufstehen der handel verbugt. so das "Handel abgebrochen" kommt.
also muss man durch iwas anderes aufstehen, oder ? =)
03/17/2015 18:22 Stahllegierung#37
gibt es auch jemanden, der genauer erklären kann, was genau abläuft? derjenige, der den bug rausgefunden hat, muss es ja zumindest in groben zügen wissen.
03/17/2015 18:29 MinakuixD#38
Wir brauchen n Tipp! Lol!
03/17/2015 18:38 Fersion#39
Quote:
Originally Posted by Stahllegierung View Post
gibt es auch jemanden, der genauer erklären kann, was genau abläuft? derjenige, der den bug rausgefunden hat, muss es ja zumindest in groben zügen wissen.
Was möchtest du genau wissen ?
wenn man eine anleitung hat weiss man doch genau was abloyft muss man sich nur genauer angucken mehr kann dazu niemand sagen xD und wenn du weiter forschen willst probier vllt erst aufen server rum wo das noch geht also iein pserver mit odin files z.b.
03/17/2015 18:46 Stahllegierung#40
ich will wie gesgat den programmiertechnischen hintergrund wissen.
zum beispiel, was ungefähr im code steht, damit es nötig wird, den char b zu töten.
war das jetz verständlich? ^^

ich meine für den normalen buguser ist das ne reihenfolge von aktionen, die keinen sinn ergeben. aber es gibt ja nen grund, warum der char b getötet werden muss.
03/17/2015 18:53 DuOtto#41
Quote:
Originally Posted by Stahllegierung View Post
ich will wie gesgat den programmiertechnischen hintergrund wissen.
zum beispiel, was ungefähr im code steht, damit es nötig wird, den char b zu töten.
war das jetz verständlich? ^^

ich meine für den normalen buguser ist das ne reihenfolge von aktionen, die keinen sinn ergeben. aber es gibt ja nen grund, warum der char b getötet werden muss.
Hast du schonmal an einem etwas größeren Programm geschrieben?
Auch wenn Fiesta kein aktuelles Spiel mehr ist, der Quellcode ist weitaus komplexer, als du es dir wahrscheinlich vorstellen kannst.

Teilweise finden ja nichtmal die Entwickler bestimmte Bugs, wie soll man da dann wissen, woran das liegt, wenn man nichtmal den Code hat?

Lern Programmieren, programmier irgendetwas größeres und du wirst bemerken, dass man schnell Bugs einbaut und nur selten direkt weiß, woran das genau liegt.
03/17/2015 19:37 Fersion#42
Quote:
Originally Posted by DuOtto View Post
Hast du schonmal an einem etwas größeren Programm geschrieben?
Auch wenn Fiesta kein aktuelles Spiel mehr ist, der Quellcode ist weitaus komplexer, als du es dir wahrscheinlich vorstellen kannst.

Teilweise finden ja nichtmal die Entwickler bestimmte Bugs, wie soll man da dann wissen, woran das liegt, wenn man nichtmal den Code hat?

Lern Programmieren, programmier irgendetwas größeres und du wirst bemerken, dass man schnell Bugs einbaut und nur selten direkt weiß, woran das genau liegt.
So siehts aus das kann kein Buguser nachvollziehen..

Nur ein jeder kann nachvollziehen was überhaupt passiert wenn man jemand tötet z.b. also was dadruch ausgelöst wird..
03/17/2015 20:12 D0n!#43
Der Programmiertechnische hintergrund vieler Bugs ist ganz einfach eine fehlende Überprüfung
des Servers ob die Funktion, welche ein Charakter gerade ausühren will, auch tatsächlich gerade
ausgeführt werden darf.

Wenn du zum beispiel in PHP eine Benutzereingabe auf gewisse zeichen überprüfen willst könntest du zum Beispiel folgendermaßen arbeiten:
Code:
if (!preg_match("/^[0-9a-zA-Z]{3,32}$/i", $_POST['Benutzereingabe'])){
			//hier der code was passieren soll falls die Benutzereingabe aus anderen zeichen besteht.
}
Nun Stell dir vor du willst die Benutzereingabe weiterverwenden um zum Beispiel mittels dieser
eine SQL Abfrage zu starten.
Weiterhin stell dir nun vor du vergisst allerdings vorher zu prüfen, ob die Benutzereingabe auch
tatsächlich nur die von dir vorgegebenen Zeichen enthält. Und Schwupps du hast eine Lücke gelassen,
durch die ein Angreifer problemlos eine eigene Abfrage starten und damit deine Datenbank zerschiessen
oder dir gar Daten klauen kann (SQL Injection).

Bei Fiesta sollte der Quellcode mehrere Millionen zeilen lang sein,
1, 2, 3 oder gar 4 Millionen Zeilen sind dort ohne weiteres denkbar, ebenso sind dort mehrere tausend
funktionen vorhanden die prinzipiell alle Gewisse bedingungen erfüllen müssen um ausgeführt zu werden.
Bei einer solchen Code größe passiert es aber schnell mal hier und dort gewisse zustände zu überprüfen
und darauf bauen so sämtliche Bugs auf.

Zum Beispiel Character A Handelt Item 1 mit Character B
Server speichert sich nun das Chararacter A mit B handeln will
Server speichert weiterhin das es um item 1 geht und ruft den Slot ab (3) auf dem es sich befindet.
Handel wird nun abgebrochen, server löscht aus dem Speicher das Character A mit B handeln will
löscht aber nicht das Slot 3 gehandelt wird.
Und hier könnte man nun anknüpfen, wenn man es schafft dem server zwar nen handel unterzujubeln
aber dies so zu gestalten, das der Slot nicht neu gelesen wird.

Würde der server nun vor jeder bewegung nochmals überprüfen ob dieses Item in Slot 3 auch
tatsächlich dem Item entspricht welches der Character handeln will wäre dies ja kein Problem
aber der server verlässt sich darauf das es schon so richtig ist wie er es intern vorliegen hat.

Und prompt wird ein Item gehandelt welches zwar auf Slot 3 liegt aber möglicherweise weder dem
Charakter gehört welcher es handelt noch in irgendeiner weise identisch ist mit dem eigentlichem Item
welches ursprünglich gehandelt werden sollte.

Wenn du nun in etwa wissen willst was dort abgeht, solltest du aufmerksam lesen, dies ist zwar nur eine
ganz grobe zusammenfassung aber sollte dich der denkweise ein kleines Stück näher bringen auch wenn
bei 1-4 Mio Zeilen Code die sache durchaus um ein vielfaches komplizierter ist.

Die Erklärung hinkt zwar etwas in der exakten logik aber ich denke man kann in etwa verstehen was damit gemeint ist.

Gruß D0n!
03/18/2015 15:47 Stahllegierung#44
@DuOtto
Wenn ich keine programmierkenntnisse hätte, würde ich das hier nicht fragen. ich habe sehr wohl auch schon größere programme geschrieben und ich bin mir auch im klaren darüber, dass fiesta einen unvorstellbar langen code hat.

@D0n!
danke, dass du eine konstruktive antwort auf meine frage gegeben hast. es war kein sinnloses herumgelaber und kein geflame. ich freue mich wirklich darüber, danke.
03/18/2015 17:08 DuOtto#45
Quote:
Originally Posted by Stahllegierung View Post
@DuOtto
Wenn ich keine programmierkenntnisse hätte, würde ich das hier nicht fragen. ich habe sehr wohl auch schon größere programme geschrieben und ich bin mir auch im klaren darüber, dass fiesta einen unvorstellbar langen code hat.
Wieso würdest du das ohne Kenntnisse nicht fragen?
Das was D0n dir beschrieben hat, ist vielleicht der Ansatz einer Theorie, als programmiertechnischen Hintergrund würde ich das aber nicht beschreiben.
Das, was ich als programmiertechnischen Hintergrund bezeichne, könnte man hier eben nicht erklären, weil man vom Code so gut wie nichts weiß.

Desweiteren solltest du nicht alles als Kritik ansehen und dich direkt beschweren. Anhand der Formulierungen habe ich halt eine Annahme gemacht, inwieweit die jetzt wahr ist, könnte man hier ausdiskutieren, ich werde dazu aber nichts weiteres sagen, denn sonst wird das wieder kein Ende nehmen.

Quote:
Originally Posted by D0n! View Post
Der Programmiertechnische hintergrund vieler Bugs ist ganz einfach eine fehlende Überprüfung
des Servers ob die Funktion, welche ein Charakter gerade ausühren will, auch tatsächlich gerade
ausgeführt werden darf.

Wenn du zum beispiel in PHP eine Benutzereingabe auf gewisse zeichen überprüfen willst könntest du zum Beispiel folgendermaßen arbeiten:
Code:
if (!preg_match("/^[0-9a-zA-Z]{3,32}$/i", $_POST['Benutzereingabe'])){
			//hier der code was passieren soll falls die Benutzereingabe aus anderen zeichen besteht.
}
Nun Stell dir vor du willst die Benutzereingabe weiterverwenden um zum Beispiel mittels dieser
eine SQL Abfrage zu starten.
Weiterhin stell dir nun vor du vergisst allerdings vorher zu prüfen, ob die Benutzereingabe auch
tatsächlich nur die von dir vorgegebenen Zeichen enthält. Und Schwupps du hast eine Lücke gelassen,
durch die ein Angreifer problemlos eine eigene Abfrage starten und damit deine Datenbank zerschiessen
oder dir gar Daten klauen kann (SQL Injection).

Bei Fiesta sollte der Quellcode mehrere Millionen zeilen lang sein,
10, 20, 30 oder gar 40 Millionen Zeilen sind dort ohne weiteres denkbar, ebenso sind dort mehrere tausend
funktionen vorhanden die prinzipiell alle Gewisse bedingungen erfüllen müssen um ausgeführt zu werden.
Bei einer solchen Code größe passiert es aber schnell mal hier und dort gewisse zustände zu überprüfen
und darauf bauen so sämtliche Bugs auf.

Zum Beispiel Character A Handelt Item 1 mit Character B
Server speichert sich nun das Chararacter A mit B handeln will
Server speichert weiterhin das es um item 1 geht und ruft den Slot ab (3) auf dem es sich befindet.
Handel wird nun abgebrochen, server löscht aus dem Speicher das Character A mit B handeln will
löscht aber nicht das Slot 3 gehandelt wird.
Und hier könnte man nun anknüpfen, wenn man es schafft dem server zwar nen handel unterzujubeln
aber dies so zu gestalten, das der Slot nicht neu gelesen wird.

Würde der server nun vor jeder bewegung nochmals überprüfen ob dieses Item in Slot 3 auch
tatsächlich dem Item entspricht welches der Character handeln will wäre dies ja kein Problem
aber der server verlässt sich darauf das es schon so richtig ist wie er es intern vorliegen hat.

Und prompt wird ein Item gehandelt welches zwar auf Slot 3 liegt aber möglicherweise weder dem
Charakter gehört welcher es handelt noch in irgendeiner weise identisch ist mit dem eigentlichem Item
welches ursprünglich gehandelt werden sollte.

Wenn du nun in etwa wissen willst was dort abgeht, solltest du aufmerksam lesen, dies ist zwar nur eine
ganz grobe zusammenfassung aber sollte dich der denkweise ein kleines Stück näher bringen auch wenn
bei 10-40 Mio Zeilen Code die sache durchaus um ein vielfaches komplizierter ist.

Die Erklärung hinkt zwar etwas in der exakten logik aber ich denke man kann in etwa verstehen was damit gemeint ist.

Gruß D0n!
Schön erklärt, aber die Zahlen können nicht so ganz passen. Die Frage ist natürlich immer, ob man Engines, Librarys, Leerzeilen, Header/Footer usw. mitrechnet, aber selbst mit allem wird Fiesta niemals auf 40 Millionen Zeilen kommen.

Mal so zum Vergleich: Der Linux-Kernel hat derzeit etwa 15 Millionen Zeilen Code und selbst Windows 7 kommt "nur" auf knapp 40 Millionen Zeilen.
Bei WoW sollen es angeblich 5,5 Millionen sein. Bei Fiesta wird die Zahl also mit Sicherheit unter 5 Millionen liegen.

Für alle Interessierten: [Only registered and activated users can see links. Click Here To Register...] noch ein paar Zahlen.