Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Mi Apr 24, 2024 13:30

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 31 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Autor Nachricht
BeitragVerfasst: Do Jul 03, 2008 12:45 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
[BestOfDGL" class="postlink">BestOfDGL: Dieser Thread gilt als besonders interessant]

Ich beschäftige mich aktuell mit sicherheitskonzepten im Bereich MMO.
Aktuell würde ich Datenbank,Physik,KI auf den Server laufen lassen und Darstellung sowie IO auf dem Client.
Der Client kann also sein Goldwert abrufen und wenn er handeln will, dann sendet er eine Handelanfrage an den Server(Tradedeamon), welcher dann die Transaktion prüft und ausführt.

Wertänderungen aller art(Speedhacks,Geldcheats,Item doubling,...):
Bsp.:
mygold=Server.GetGold()
if (Server.SellItem(ItemID,CharID))
mygold=Server.GetGold()

Der Client kann also nie Einfluss auf die Werte nehmen, da alles auf dem Server verwaltet wird und durch Transaktionen jede Aktion geprüft wird. Änderungen im clientspeicher haben kein effekt auf das Spiel.

Wallhack:
mobs=Server.GetMobs()
//zeichnen

Der Client muss sich die Liste der sichtbaren Spieler vom Server holen, dieser entscheidet, welche Mobs(NPC, Player und Tiere) der Client sieht und gibt ihn die Liste. Damit kann der Client auch Wallhacks vergessen, da der Server nicht sichtbare Mobs garnicht übermittelt und somit der Client garnicht kennt.

Bots(Aimbots, Farmbots, ...):
?
Aimbots kann man vieleicht noch durch Overlay lösen aber alle anderen Bots werden ja über den Client mit OS Messages gelenkt.
Ausser einen eigenen Treiber für Tastatur und Maus zu schreiben, fällt mir hier überhaupt keine Lösung ein, die nicht einfach auszuhebeln ist.
Scannen von anderen Prozessen bringt es nicht, da man dank Windows Prozesse verschwinden lassen kann und mehere Tausend PID abzufragen und zu gucken, ob eine versteckter Task läuft ist ein Kampf gegen Windmühlen. Noch dazu ist das auch ein rechtliches Problem.
Noch dazu kann man den Prozess ja über Java oder ähnlichem einfach neubuilden und der Hashauszug, den man von einen Stück des Prozessspeichers hat ist anders.
Also ist das erkennen von Botsoftware nicht möglich.
Die Botsoftware sendet Windows, dass es die Maus verschieben soll oder Taste drücken und Windows sendet es dann an unser Programm. Also sehen wir auch nur Windows als Sender und können nicht unterscheiden.
Verhalten zu scannen ist auch nicht gerade toll, dass ist wieder Kampf gegen Windmühlen.
Man könnte natürlich in einigen Gengre den nutzen von Bots unbrauchbar machen, indem man einfach nicht auf farming/grinding baut aber in rpg ist das z.B. nicht sinnvoll.
Was habt ihr für Ideen ?

edit: Eine Möglichkeit wäre das hinzufügen eines zufälligen offsets auf die bewegung, also Blickrichtung und Tempo werden minimal durch zufall beeinflusst. Damit werden Waypoints nutzlos, da man nach wenig Zeit schon wo ganz anders steht.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 03, 2008 13:17 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 16, 2008 20:26
Beiträge: 158
Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Ein sehr interessantes Thema wie ich finde.
Naja, das mit dem Offset ist aber auch nervig, wenn man weit laufen muss.. dann nutzt man schonmal Feststelltasten oder legt etwas auf die Tastatur um nicht selber zu drücken. Außerdem wäre das für unerfahrene Spieler oder welche die das erstemal spielen abschreckend, wenn sie nicht da ankommen wo sie wollen.
Man müsste etwas finden, was Bots im gegensatz zum Menschen nicht können, wie den Offset ausgleichen, was aber eher nebenläufig passiert und nicht auffällt oder nervt.
Spontant fällt mir da aber auch nix ein.
Aber außer den Bots gibts da noch ein Problem von Farmern, die von Menschen gespielt werden. Außer ein maximal Spielzeit Limit zu setzen, hat man da auch kaum Möglichkeiten das zu unterbinden, weil die Möglichkeiten, die man zur Verfügung hat, dann vermutlich auch bei erhlichen Spielern eintreten.
mfg Revolte

_________________
System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 03, 2008 15:03 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Eins vorweg: Ich habe mich schon ein paar mal mit Cheats/Hacks etc beschäftigt und schonmal das ein oder andere Cheaterforum besucht. IMHO haben die Typen einfach nicht mehr alle Gurken im Glas! "Richtige" Spieler werden dort übrigens als N00bs und Nixkönner ausgelacht...

bzgl Wallhack: Ich habe es eh nie verstanden, warum man es nicht gleich so macht. Es bringt eigentlich nur Vorteile, wenn man dem Client nur sichtbare Objekte mitteilt. Frage ist natürlich ob diese Informationen gecached evtl einen Nutzen haben. Damit meine ich, dass z.B. die letzte Position eines Gegners per Overlay angezeigt wird. Macht in einem schnellen Shooter wahrscheinlich nicht viel Sinn, da sich die Positionen zu schnell verändern.

bzgl Aimbot kann man IMHO nicht viel unternehmen. Punkbuster hinkt den Botentwicklern ja auch immer hinterher.

Aber mir fällt da noch der Maphack bei Diablo2 ein. Und mittlerweile habe ich auch verstanden wie er funktioniert bzw dass die Level bei Diablo2 garnicht sooo zufällig waren. Die Maps sind alle schon auf dem Client vorhanden (entweder komplett oder in Teilen), werden also garnicht auf Serverseite generiert wie man/ich anfangs dachte.

Die Karten wären aber auch schon recht nahe am Anti-Wallhack Mechanismus zu integrieren. So das man dem Client auch nur neue Gebiete mitteilt.

Echte zufallsgenerierte Karten wären der Tod jedes Maphacks und wahrscheinlich auch jedes Farmbots.

bzgl: SpeedHacks, etc

Die meisten Hacks die ich so bei Diablo2 mitbekommen habe, versuchen auf dem Server entsprechende Last zu erzeugen und eine oder mehrere Anfrage dadurch ins schleudern bringen kann.

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 03, 2008 15:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Blizzard macht sowas in China,Japan und Korea aber aus anderen Gründen.
Der Staat hat gesagt, dass die Leute durch das spielen von WOW viele andere dinge vernachlässigen und sogar Leute auf dem Stuhl tot umgekippt sind.
Drum wird dort nach glaube 4h war es, gewarnt, dann mit jeder stunde häufiger und nach 8h trennt blizzard die verbindung und lässt dich für 16h ned wieder rein.
Ist schon ziemlich lange her, als ich das gelesen hab, drum sind die Zahlen eventuell falsch, google bemühen und du findest es schnell.
Der Spieler zahlt für das Spiel und dann sollte er von Seiten des Publishers auch 24h den Tag zugriff haben, ob dann der Staat es anders regelt ist was anderes.

Die Bots von WOW und StarWars Online nutzen die interne Scriptsprache und externe Programme.
Bei WOW z.B. wird der Bot durch x sekunden taste drücken, y sekunden maus schieben navigiert und durch Macros von WOW werden Targets erfasst und platt gemacht. Dabei hilft ein sampling der Lebensleiste beim realisitischerem Kampf(pot trinken, kiten,...).
Wenn man das selektieren von Gegnern im Macro unterbindet, dann muss man erstmal den clientspeicher auslesen und die positionen laden, durch die viewmatrix korrekt projezieren und über io calls selektieren.
Speicher eines anderen Prozesse zu lesen ist kein Problem und auch mit Vista(und Protected Process) wird das nicht sicherer werden, da man auch das OS mit ein bischen aufwand verarschen kann.

Ich hab schon mit dem gedanken gespielt, einen kleinen Speicherbereich zu verschlüsseln.
Vieleicht 4KB und dort ne 512SHA verschlüsselung zu verwenden allerdings bringt es nichts, da man sich einfach an die entschlüsselungsroutine hängen müsste.

Mit den Lasten auf dem Server, jo gibt versuche in der richtung aber durch Transaktionen kann man das ganze unterbinden.
Noch dazu basieren die Exploits darauf, dass die Server fehler in dem timing von Tasks haben.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 03, 2008 19:55 
Offline
DGL Member

Registriert: Di Jun 06, 2006 09:59
Beiträge: 474
Viele hacks verändern den spielecode. Dagen hilft es den code auf Änderungen zu scannen.
Ein relativ günstiges Protokoll ist es wenn der server nach einem hash fragt, und dabei angiebt welchen speicherbereich, welchen algo(möglichst kompliziert, propriäter und speicherbereichsgrenzen einarbeitend),welchen seed , und der client dann mit dem hash antwortet. Allerdings sind diese checks alle recht leicht zu knacken, und sind eigentlich nur dann sinnvoll wenn ein cd-key/acc-ban wehtut.
Ansonsten wie du schon gesagt hast das protokoll möglichst sicher gestalten, also dass der client keine authorität hat, außer aktionen ausführen und nur die Infos bekommt die er wissen darf. Häufig musst du dieses sichere Design aufweichen. Afaik überlassen viele MMOs die Physik dem Client da sie für den Server teuer ist, und lassen hinterher nur irgendwelche plausibilitätschecks drüberlaufen.
Wenn es ein RPG ist solltest du Gegenständen auf jeden fall eine eindeutige ID geben um dupen zu erkennen, auch wenn das bei einem guten protokoll nicht möglich sein sollte.
Bei Bots gibt es nicht viel zu machen, außer security-through obscurity. Also verschlüsselte netzwerkkommunikation. Viele werte im RAM verstecken(xor irgend nen key), erschwert memorysearcher. Starke OOP architektur mit vielen pointer sprüngen.
Simulierte Tasteneingaben zu erkennen ist kaum möglich. Gegen Anfänger könnte es helfen Tasten im LowLevelKeyboardHook zu überprüfen, der hat ein flag das windows setzt falls der tastendruck simuliert ist, was aber natürlich umgehbar ist.
Außerdem kannst du Verhaltensanalyse probieren, aber das zuverlässig zu bekommen ist schwer.
Nicht sofort bannen, sondern erst nen paar Wochen cdkeys sammeln hilft auch mehr Spieler auf einmal zu bannen.

Alles in allem hängt die Menge an Cheatern vorallem von drei Faktoren ab:
1) Design, sicheres Protokoll
2) Regelmäßige updates für den lokalen Antihack (Warden, Punkbuster,...)
3) Schmerzhafte Strafen

_________________
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 04, 2008 08:45 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Wie man den Bot noch total verarschen könnte, wäre, wenn man vom Serverseite aus einen nag beauftragt.
Der würde dann z.B. nach 1h grinden oder 2h ohne pause in ner ini rumhängen einfach nur ein Fenster aufmachen, sagen "Sie haben x minuten gespielt, machen sie doch mal eine kleine Pause und bewegen sich."(wie bei Wii).
Der Bot müsste ne Funktion hooken, die das fenster anzeigt, und wenn man das gleiche fenster für infos, scriptfehler und so weiter nutzt, dann den Text vom Server schickt(da er ja nur alle stunde und mehr kommt , ned weiter wild), kann der client eigentlich nur noch auf alle Fenster reagieren.

Allerdings zahlt ja der User in der Regel Geld (beim kauf des Spiels oder als ABO) und das kann man ihn ned antun.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 04, 2008 10:15 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Am besten du machst viele Quests, die sich stark unterscheiden. Wenn Quests nun die einzigste Möglichkeit sind effektiv weiterzukommen, wird es den Bot Schreibern vermutlich zu aufwendig.

Zusätzlich könnte man auch den andern Spielern erlauben Bots annonym anzuzeigen und selbiges auch zu belohnen, falls es sich als wahr herrausstellt.

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 04, 2008 11:23 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Auf agro gehn und druff kloppen!!! :)

Zitat:
Allerdings zahlt ja der User in der Regel Geld (beim kauf des Spiels oder als ABO) und das kann man ihn ned antun.

Und der Botuser tut das auch...dann fehlt nur noch ein kleiner Zusatz im Vertrag: "Wer Bots oder ähnliches benutzt, dessen Kreditkarte wird mit einem Betrag von EUR 100 pro nachgewiesenem Versuch belastet!" :lol:

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 04, 2008 11:26 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 16, 2008 20:26
Beiträge: 158
Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Das mit dem anzeigen gleicht dann aber einer Hexenjagd, weil manchmal farmt man einfach gerne alleine und will seine Ruhe haben und wenn man dann alle 2 Minuten angezeigt wird, weil man jemanden nicht geantwortet hat, oder er ein kleines Kind ist.. dann nervt das auch.
Außerdem wäre es bei vielen Spielern, auch ein Kostenfaktor, weil man extra Personal bräuchte, die das überprüfen.

Unterschiedliche Quests sind zwar gut, aber trotzdem gibts ja vermutlich Dropgegenstände, die auch etwas seltener sind, die man dann farmen und verkaufen kann.

Man merkt, dass ich eher Spieler bin von so was und deshalb irgendwie immer nur Gegenargumente hab o.O sorry.
Aber vll wär es ja möglich irgendwie den User aussuchen zu lassen, wie das gehandhabt wird? Also ob da ein Offset beim bewegen ist oder ein Fenster kommen soll oder andere Ideen dann.

Vll wäre es ja auch möglich anhand des Laufverhaltens der Spielfigur herauszufinden, ob es ein Bot ist oder ein Spieler, denn ich denke mal ein Bot wird sich anderes fortbewegen (genauer, präziser, manchmal falsch), als ein Mensch, welcher hat ja eh ein natürliches Abweichen von exat geraden Strecken hat. ein Mensch wird auch nicht unbedingt gegen Gegenstände Laufen, die der Bot vll nich bemerkt etc.
In irgendeinem Punkt muss sich ein Bot ja unterscheiden und da sollte mand ann ansetzen.

Tja wie heißt dieser Satz "niemals den user trauen" oder so was gibts doch..Wären alle ehrlich wär einiges einfacher und besser ^^
mfg revolte

_________________
System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 04, 2008 15:55 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
revolte hat geschrieben:
Das mit dem anzeigen gleicht dann aber einer Hexenjagd, weil manchmal farmt man einfach gerne alleine und will seine Ruhe haben und wenn man dann alle 2 Minuten angezeigt wird, weil man jemanden nicht geantwortet hat, oder er ein kleines Kind ist.. dann nervt das auch.
Außerdem wäre es bei vielen Spielern, auch ein Kostenfaktor, weil man extra Personal bräuchte, die das überprüfen.

Jemand der vor 2 Mintuten kein Bot war ist doch auch nach 2 Minten mit einer sehr hohen Wahrscheinlichkeit nicht durch einen Bot ersetzt worden ;). von daher wuerde ein Benutzer, wenn es sinnvoll implementiert wird, nicht generft werden.

Das Ueberpruefen, ob jemand ein Bot ist kann man automatisieren:
Gibt zum Beispiel jemand im Chat "/checkbot spieldername" ein, so koennte man den Spieler "spielername" mit einer gewissen Wahrscheinlichkeit eine nur von Menschen loesbare Aufgabe stellen:
- die Wahrscheinlichkeit ist hoeher wenn schon viele Spieler den Spieler den Spieler als Bot verdaechtigt haben.
- die Wahrscheinlichkeit fuer einen Test ist niedriger wenn der anklagende Spieler vor kurzen schonmal angeklagt hat. Erst recht wenn sich diese Anklage als falsch erwiesen hat.
- die Wahrscheinlichkeit ist um so niedriger, je kuerzer der letzte Test zurueck lag.

Natuerlich sollte ein gutes Online Spiel Moderatoren/Spielleiter haben, welche ab und zu in der virtuellen Welt nach dem rechten sehen.
Zitat:
Unterschiedliche Quests sind zwar gut, aber trotzdem gibts ja vermutlich Dropgegenstände, die auch etwas seltener sind, die man dann farmen und verkaufen kann.

Ja, wenn es Sinn macht ein Level mehrfach zu spielen, sprich zu farmen, dann lohnt es sich natuerlich fuer die Bot Programmierer wieder. Ist es jedoch so, dass man jede Quest nur einmal spielen kann, dann tun sich Bot Programmierer schwer.

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 04, 2008 16:07 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Zitat:
Ja, wenn es Sinn macht ein Level mehrfach zu spielen, sprich zu farmen, dann lohnt es sich natuerlich fuer die Bot Programmierer wieder. Ist es jedoch so, dass man jede Quest nur einmal spielen kann, dann tun sich Bot Programmierer schwer.

Ich hätte Diablo2 niemals 2 jahre lang gespielt, wenn ich die Quests nicht hätte mehrfachspielen können. Dann wär man ja maximal auf Level 50 gekommen.

IMHO finde ich die Art und Weise wie bei D2 resp. im Battle.net das Matchmaking stattfindet schon recht gut so. Ich schätze mal, dass ich 90% aller D2 Spiele nur mit vertrauenswürdigen Personen in passwortgeschützten Spielen gemacht habe.

Das passt natürlich für ein persistentes Universum wie bei WoW oder EVE nicht, und macht auch den "MMO"-Gedanken zu nichte.

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 04, 2008 16:18 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 16, 2008 20:26
Beiträge: 158
Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Ganz so meinte ich das nicht. Ich meinte, wenn man selber irgendwo farmt und man von mehreren gemeldet wird und dann, nach sag ich mal 10 Meldungen, eine Nachfrage kommt, ob man ein Bot sei (Egal wie das nun aussieht), so kann das schnell nervig werden, wenn man 4 Stunden wo in ruhe farmt und alle einen annerven und melden.
Aber deine Idee mit dem Usersystem, wie ehrlich Bewerten sie oder wie oft Falsch, wär ganz praktisch, quasi ein selbstregelndes System und wenn die Nachfrage einmal kam während einer Spielsitzung, dann werden alle weiteren Anfragen abgewießen. Sofern es nicht möglich ist einen Bot zu starten, nachdem das Spiel gestartet wurde ( was bestimmt irgendjemand hinbekommt).

_________________
System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jul 04, 2008 19:55 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Bei WOW läuft ja neben Warden(clientseitig) noch eine Software auf dem Server, die Botverhalten erkennen soll.
Dann wird das ganze von GM's betreut, die sich Botmeldungen genauer angucken.
Man kann Leute als Bots melden und diese werden halt beobachtet, wenn man denkt, dass es einer ist, dann wird der acc gespeert und man kann sich nen neuen kaufen.
Nur ist es verdammt schwer, zu erkennen, ob es ein Bot ist, denn wenn er nicht gerade an nen Objekt hängen bleibt, ein anderer Spieler ihn ständig den Mob klaut und trotzdem weiter macht, dann ist das auch alles einen Spieler zu zuschreiben.
Einen Botter zu fragen, ob er ein Bot ist, bringt es auch nicht, einige Bots haben schon standard stätze drauf oder schaltet dich schlicht auf ignore. Noch dazu sitzt oft der Botter ja am PC er guckt nur film,hört musik, liest ein buch oder ähnliches und kann dann bei GM Alarm sofort reagieren. PVP Bots zu erkennen ist noch viel schwerer, denn die sind oft inteligenter als die dummen Spieler und dümmer als die guten Gamer und damit mittelschicht.

Man könnte es schon mal ein bischen eindämmen, indem man einen 16h Tag einführt, also der Spieler 16h zocken kann und dann muss der Char pennen. Der Char brauch Pausen, sonnst wird er mit negativ Buffs belegt. So könnte z.B. alle 2h eine Pinkelpause eingebaut werden, alle 8h ne essenspause, ausruhphasen nach instanzen und PVP kämpfen, man darf nur 8h am Tag den berufen folgen und dann kann man einfach keine mobs mehr häuten oder sachen herstellen.
Es wäre auch möglich eine Ausdauer Bar zu erstellen, die mit jeden Kampf/Berufausüben weiter runter geht und nur durch das pausieren wieder ansteigt.
So kann man mehr social abilities einbauen und den bots die effektivität stark reduzieren.
Dann nutzten leute immer noch Bots aber es ist nicht mehr zum großen Nachteil von anderen Spielern.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 06, 2008 10:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jun 24, 2003 19:09
Beiträge: 732
Hab mir dazu auch schonmal n bissel gedanken gemacht. Und es ist echt schwer sich da was zu überlegen was nicht total einfach durchschaut werden kann.
Um zu verhindert das wichtige Daten im Clientspeicher geändert werden würde ich die Werte unterschiedlich verschlüsselt an unterschiedlichen positionen im Speicher parken, am besten noch bei jeder Änderung n paar dummy Werte dazu. Sprich du hast dann, wenn du z.b. dein Gold änderst, 10 Punkte im Speicher die sich ändern, alle sind unterschiedlich verschlüsselt (muß nix kompliziertes sein) und nur 6 von 10 beinhalten den goldwert, die anderen 4 sind dummy Werte. Das ist zwar auch zu knacken - braucht aber n bissel mehr mühe als einen Wert zu suchen. Das interessante ist das sich derjenige der Versucht die Werte im Speicher zu ändern an die Sache ran tasten muß. Er wird niemals alle 6 Werte auf einmal finden und richtig ändern. D.h. der Client könnte protokollieren wie oft sich die 6 Werte für dein Gold unterscheiden und darüber erkennen ob der Spieler versucht zu manipulieren.

Die sache mit den simluierten Maus/Tastatur Nachrichten ist wirklich tricky. Was mir da grad als Idee gekommen ist wäre mehrere Fenster für das abfangen der eingaben zu benutzen. Eventuell wäre es möglich mitten im Spiel das Fenster zu ändern welches den input bekommt (unsichtbares dummy Fenster?). So könnte man dann zufällig beim spielen das Fenster ändern welches die Eingabe handhabt. Ist irgendein programm am laufen kriegt es die änderung nicht mit und sendet Nachrichten an das alte Fenster, wo das ganze dann Protokolliert werden kann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jul 06, 2008 11:38 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
Das verändern von Lokalen Speicher kann man nicht verhindern, es ist immer knackbar und deswegen ja das thin client-thick server system.
Die Idee ein verstecktes Fenster zu verwenden ist ziemlich gut, das müsste man mal näher betrachten.
Man könnte z.B. eine große Funktion machen, die die Fenster erstellt,den Context und noch ein paar settings macht.
Das Fenster wählt man per aktuellen highperformance clock counter aus, welcher auch nur gelesen wird und in keine lokale variable kommt. Dann nimmt man zwischen allen Funktionen noch den highperformance counter und wirft ne exception, wenn es länger als ne sekunde unterschied drin ist, damit kann man dem versuch zu debuggen entgegenwirken. Idealerweise werden die Messages von den anderen Fenstern an die anderen geschickt.
Dann funktioniert sein versuch aber nun weiss man, dass man sein account löschen kann ^^.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 31 Beiträge ]  Gehe zu Seite 1, 2, 3  Nächste
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 42 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.190s | 15 Queries | GZIP : On ]