English flagItalian flagKorean flagChinese (Simplified) flagPortuguese flagGerman flagFrench flag
Spanish flagJapanese flagArabic flagRussian flagGreek flagDutch flagBulgarian flag
Czech flagCroat flagDanish flagFinnish flagHindi flagPolish flagRumanian flag
Swedish flagNorwegian flag     
By N2H
Raph Koster Welkom op de persoonlijke website: MMOs, gaming, schrijven, kunst, muziek, boeken.

How to hack an MMO How to hack een MMO

April 17th, 2008 17 april, 2008

Given the recent hack to the blog , and also given the recent news of the decompiled Eve Online client, it seemed like a good time to go over some of the ways in which a virtual world gets hacked. Gezien de recente hack op de blog, en ook gezien de recente nieuws van het gedecompileerde Eve Online client, het leek een goed moment om te gaan over enkele van de manieren waarop een virtuele wereld krijgt gehackt.

The interesting thing, of course, is that all the hacks I am going to talk about are actually not hacking the virtual world at all; they instead attack the client , which is your window into the world, and also your waldo , your means of exercising control over what happens in that world. Het interessante is natuurlijk dat alle hacks Ik ga om te praten over zijn eigenlijk niet hacken in de virtuele wereld aan allen; ze in plaats aanval van de klant, wat is uw venster op de wereld, en ook je Waldo, uw middel van het uitoefenen van controle over wat er gebeurt in deze wereld. And that’s because… En dat is omdat ...

The client is in the hands of the enemy. De cliënt is in handen van de vijand.

The Laws of Online World Design - De wetten van de online wereld Design

You’ve probably heard that before — I wasn’t the first one to say it, but it constantly gets misattributed to me. U hebt waarschijnlijk gehoord dat voorheen - ik was niet de eerste die dat zeggen, maar het krijgt misattributed constant naar me. That particular phrasing may have originated with Kelton Flinn , but I am sure many of us came up with it independently. Met name dat frasering kan zijn oorspronkelijk afkomstig van Kelton Flinn, maar ik ben er zeker van dat velen van ons kwamen met het zelfstandig.

The first thing to realize is that encryption of the data stream isn’t going to stop anyone serious . Het eerste ding om te beseffen is dat de versleuteling van de data stream is niet van plan om te stoppen met iemand ernstig.

Here’s the diagrammatic way to look at it. Hier is de schematische kijk op zaken.

  • You generate data. Je genereert gegevens.
  • You put it in a packet. Je zet ze gewoon in een pakket.
  • You encrypt the packet. U versleuteling van het pakket.
  • You send it over the wire. U stuurt het over de draad.
  • It gets to a user’s computer. Het wordt aan de computer van een gebruiker.
  • The client reads the encrypted packet. De client leest de gecodeerde pakket.
  • The client decrypts the packet. De client decodeert het pakje.
  • The client does something. De klant doet iets.

Really, anything after “it gets to a user’s computer” is in the hands of the enemy. Echt waar, alles wat na "het aan de computer van een gebruiker" is in handen van de vijand. So that means that you are encrypting the packets, handing the user a decrypter called a client , and thinking that encryption helps. Dus dat betekent dat je het versleutelen van de pakketten, waarin de gebruiker een client een Decrypter genaamd, en denken dat de versleuteling helpt.

The hackers can choose to do is read the incoming packets out of client memory after decryption, instead of sniffing the stream directly. De hackers kunnen kiezen te doen is lees de binnenkomende pakketten uit het geheugen van de cliënt na decryptie, in plaats van sniffing de stream rechtstreeks. But really, all this does is raise the bar a bit on the hacking skills required. Maar echt, dit alles doet, is verhoging van de bar een beetje hacken op de vereiste vaardigheden.

To top it off, encryption can be slow, if you’re talking a real-time sort of situation. En om het af, encryptie kan worden vertraagd als je praat in real-time een soort situaties. You may not want to spend the time in encrypting if you need a fast response. Je mag niet wilt besteden de tijd in het versleutelen indien u behoefte aan een snelle respons.

Packet stream sniffing: getting more info than you should Packet sniffing stream: getting meer info dan u zou mogen

This one was a problem early on in EverQuest and is still an issue in many FPSes. Dit was een probleem vroeg in Everquest en is nog steeds een probleem in veel FPSes. In short, you should not rely on the client to filter information. Kortom, u moet zich niet beroepen op de client voor het filteren van informatie. Assume that anything that comes down the wire is visible to them. Veronderstel dat alles wat komt er op neer de draad zichtbaar is voor hen. We speak of “culling” the data that is sent down, basically reducing the set. We spreken van "ruimen" de gegevens die worden geopenbaard, dat in wezen het terugdringen van de set. Even on the client, we do culling, so that we don’t draw everything in the dataset the client knows about. Zelfs op de client, we doen het ruimen, zodat we niet stellen alles in de dataset van de klant kent. In an FPS, you typically cannot do a lot of server-side culling — everyone on the map is “visible” to the client, because everyone is moving so fast that you can’t really do any line of sight culling on the server. In een FPS, je doorgaans niet veel doen met een server-side afmaken - iedereen op de kaart is "zichtbaar" op de cliënt, omdat iedereen beweegt zich zo snel, dat kun je niet echt een bepaalde regel van het gezichtsvermogen ruiming op de server.

In EQ, the way this manifested was every mob in the zone was sent to the client. In EQ, de manier waarop dit manifesteerde was om de menigte in de zone die is verzonden naar de klant. This meant a hack could make a minimap that showed every mob. Dit betekende een hack kan een Miniweergave die aantoonde dat elke mob. You could see repops at a distance. Je kon zien repops op afstand. But wait, it gets worse. Maar wacht, het wordt nog erger. You could also see everything they carried . U kunt ook alles zien wat ze vervoerd. So you could cherry-pick the good loot in advance. Zo kun je bijvoorbeeld krenten uit de pap te plukken van de goede buit op voorhand.

Packet filtering: dropping stuff you shouldn’t Packet filtering: laten vallen spul moet je niet

Sometimes the server tells you things you just don’t want to hear. Soms is de server vertelt je dingen die je gewoon niet willen horen. One such thing might be “no, you can’t go there.” This is the classic wall hack. Een voorbeeld van zo'n ding zou kunnen worden "nee, u kunt niet gaan." Dit is de klassieke muur hack. Usually, you move, and do a local client-side collision check. Meestal wordt u verhuist, en doe een lokale client-side botsing check. You also send off a request to the server for your movement, so that the server can verify whether you can go there (after all, you might have — horrors — hacked your client to not do collision checks). U heeft ook een dergelijk verzoek uitgeleide doen naar de server voor uw verkeer, zodat de server kunnen nagaan of u kunt er heen gaan (na alles, je zou kunnen hebben - verschrikkingen - gehackt uw client niet botsing controles). The server will send back a “no, you are still over here” message, resulting in being rubberbanded back to where you were. De server stuurt weer een "nee, je bent nog meer dan hier"-bericht, met als gevolg dat rubberbanded terug naar waar je was.

Unless you simply ignore that message, and merrily keep going. Tenzij je gewoon negeren dat bericht en vrolijk blijven gaan. This will allow you to explore all of the static dataset that your client has loaded. Hiermee kun je ontdekken van de statische dataset dat uw cliënt heeft geladen. You won’t see any newly streamed objects in the right place, of course, because as far as the server is concerned, you didn’t move. U zult geen enkel nieuw gestreamd objecten op de juiste plaats, uiteraard, want wat de server betreft, dat deed je niet verplaatsen.

Simply dropping packets can be pretty powerful if the engineers were sloppy and relied on the client to correct itself after being told it was naughty. Gewoon laten vallen pakketten kunnen vrij krachtig als de ingenieurs waren slordig en vertrouwden op de client zelf te corrigeren nadat ze te horen dat het slecht was. A common way you can use this to greater advantage relies on the fact that we often do let the client be semi-autonomous about movement. Een veel voorkomende manier kunt u deze gebruiken om meer voordeel te halen zich beroept op het feit dat we vaak doen, maar laat de cliënt worden semi-autonome over beweging. You can move around on the client with far more granularity and with much more rapid changes in direction than you can on the server. U kunt bewegen op de client met veel meer granulariteit en met veel snelle veranderingen in de richting dan kunt u op de server. Instead of tracking your every move, we instead subsample it, basically. In plaats van het bijhouden van uw elke beweging die we in plaats deelmonster zij, in principe. We rely on simple metrics like “you can’t move that far that fast” to verify whether or not you are in fact cheating in your movement. Wij rekenen op eenvoudige statistieken zoals "je kunt niet bewegen zo ver dat snel" na te gaan of u al dan niet zijn in feite valsspelen in uw beweging.

But if you collided with something, were told to bounce back, but then moved to a position on the other side of the wall, the next movement might fall within acceptable parameters, and then you may have moved through the wall. Maar als je botste met iets gezegd werd: bounce terug, maar dan verplaatst naar een positie aan de andere kant van de muur, de volgende beweging zou kunnen vallen binnen acceptabele parameters, en dan u zou kunnen hebben verplaatst door de muur.

Packet altering: changing what you hear Pakje verandering: het veranderen van wat je hoort

Alternatively, you could actually alter the packet before it gets interpreted. Als alternatief zou je eigenlijk af aan het pakket voordat het wordt geïnterpreteerd. This basically lets you get the client to dance to your tune. Dit principe kun je de client om te dansen op uw deuntje. Maybe you want a nice big waypoint on top of your quest target. Misschien wilt u een mooi groot waypoint op de top van uw zoektocht richten. Maybe you want to change what zone the client thinks it is loading you into in order to let you tour somewhere you normally cannot get to. Misschien dat u wilt veranderen wat zone van de klant vindt het laden, zodat je in om je te laten rondleiding op een plek die u normaal niet kunt.

Representation altering: changing what you see Vertegenwoordiging van verandering: het veranderen van wat je ziet

Messing with the data stream isn’t the only thing within your power. Messing met de stroom data is niet het enige wat binnen uw macht. Lots of folks in FPSes did things to change the visibility level of what was around them. Veel mensen in FPSes heb dingen te veranderen van de zichtbaarheid van wat er om hen heen. Replace all the walls with transparent textures, and you will have a much better idea of where everyone is. Vervang alle muren met transparante texturen, en het zal u een veel beter idee van waar iedereen is. Replace small meshes with big ones, or camo-colored textures with bright pink ones, and everything gets easier to spot. Vervang kleine mazen met de groten, of Camo-textures met fel gekleurde roze, en alles steeds eenvoudiger te herkennen.

Triggering Triggering

Of course, why give yourself the work? Natuurlijk, waarom geef je het werk? Just have the client automatically send back responses instantly when it gets a particular packet or message. Net heb de client automatisch teruggestuurd reacties direct hoe laat een bepaald pakket of bericht. This form of automated triggers is, of course, a key element in building bots. Deze vorm van geautomatiseerde triggers is natuurlijk een belangrijk element in de opbouw van bots. In an FPS, autoaim is an example. In een FPS, autoaim is daarvan een voorbeeld. The accuracy of something happening with a trigger is far far higher than what it is when a mere human is at the wheel. De nauwkeurigheid van iets gebeurt met een trigger is veel veel hoger dan wat het is wanneer een enkele mens is op het wiel.

Spamming Spammen

A lot of times, the servers aren’t hardened properly against receiving more commands in a given span of time than they expect. Er is veel tijd, de servers zijn niet verhard goed tegen het ontvangen van meer commando's in een bepaalde spanne tijds dan ze verwachten. Letting the client handle cooldown timers would be an example of a mistake like this; if you can control the upstream, you can bypass the cooldowns. Laat de klant omgaan cooldown timers zou een voorbeeld zijn van een vergissing als deze, dus als u kunt de upstream heeft, kunt u de cooldowns.

The Warden and other tricks De Warden en andere trucs

Of course, there’s countermeasures. Natuurlijk zijn er tegenmaatregelen. The countermeasure used by Blizzard (and by Steam, for that matter) is to run a separate process that monitors whether the main app is being messed with. De tegenmaatregel gebruikt door Blizzard (en door stoom, wat dat betreft) is het uitvoeren van een apart proces dat controleert of de belangrijkste app wordt hebt. This is a common practice in Korea as well, and there’s FPS servers that require you to run Punkbuster , etc. From the WoW TOS: Dit is een gangbare praktijk in Korea als goed, en er is FPS-servers vereisen dat u het uitvoeren van Punkbuster, enz. Van de WoW TOS:

# WHEN RUNNING, THE PROGRAM MAY MONITOR YOUR COMPUTER’S RANDOM ACCESS MEMORY (RAM) AND/OR CPU PROCESSES FOR UNAUTHORIZED THIRD PARTY PROGRAMS RUNNING CONCURRENTLY WITH WORLD OF WARCRAFT. # Tijdens het draaien, kan het programma toezicht te houden op uw computer Random Access Memory (RAM) en / of cpu processen voor ongeautoriseerde derden programma's die gelijktijdig met world of warcraft. AN “UNAUTHORIZED THIRD PARTY PROGRAM” AS USED HEREIN SHALL BE DEFINED AS ANY THIRD PARTY SOFTWARE, INCLUDING WITHOUT LIMITATION ANY “ADDON” OR “MOD,” THAT IN BLIZZARD’S SOLE DETERMINATION: (i) ENABLES OR FACILITATES CHEATING OF ANY TYPE; (ii) ALLOWS USERS TO MODIFY OR HACK THE WORLD OF WARCRAFT INTERFACE, ENVIRONMENT, AND/OR EXPERIENCE IN ANY WAY NOT EXPRESSLY AUTHORIZED BY BLIZZARD; OR (iii) INTERCEPTS, “MINES,” OR OTHERWISE COLLECTS INFORMATION FROM OR THROUGH THE PROGRAM. Een "niet-geautoriseerde programma van derden", zoals gebruikt in deze overeenkomst mag worden gedefinieerd als elke software van derden, waaronder, zonder enige beperking "addon" of "mod", dat in de sneeuwstorm, de enige bepaling: (i) of vergemakkelijkt bedriegen van elk type; (ii) stelt gebruikers in staat te wijzigen of de hack world of warcraft interface, milieu, en / of ervaring op enigerlei wijze anders dan expliciet toegestaan door sneeuwstorm, of (iii) onderschept, "de mijnen", of anders verzamelt informatie uit of via het programma. IN THE EVENT THAT THE PROGRAM DETECTS AN UNAUTHORIZED THIRD PARTY PROGRAM, BLIZZARD MAY (a) COMMUNICATE INFORMATION BACK TO BLIZZARD, INCLUDING WITHOUT LIMITATION YOUR ACCOUNT NAME, DETAILS ABOUT THE UNAUTHORIZED THIRD PARTY PROGRAM DETECTED, AND THE TIME AND DATE THE UNAUTHORIZED THIRD PARTY PROGRAM WAS DETECTED; AND/OR (b) EXERCISE ANY OR ALL OF ITS RIGHTS UNDER SECTION 6 OF THIS AGREEMENT, WITH OR WITHOUT PRIOR NOTICE TO THE USER. In het geval dat het programma detecteert een onbevoegde derde programma, sneeuwstorm kan (een) communiceren informatie terug naar sneeuwstorm, inclusief en zonder beperking de naam van uw account, details over de onbevoegde derde programma ontdekt, en de tijd en datum waarop het ongeautoriseerde programma van derden Werd ontdekt, en / of (b) het uitoefenen van een of alle van haar rechten uit hoofde van artikel 6 van deze overeenkomst, met of zonder voorafgaande kennisgeving aan de gebruiker.

How does it do this? Hoe denkt hij dit doen? Well, actually, by using many of the same techniques as described above . Nou, eigenlijk, door gebruik te maken van veel van de technieken zoals hierboven beschreven. Basically, it kind of hacks you . Kortom, het soort hacks je. It checks to see if stuff is running in WoW’s memory space. Het controleert om te zien of stuff wordt uitgevoerd in WoW het geheugen van de ruimte. It checks the title bars of any window you have open and compares the text of that window title (hashed) against a blacklist of cheating programs titlebars (also hashed). Hij controleert of de titelbalken van een venster open en je vergelijkt de tekst van dat venster titel (hashed) tegen een zwarte lijst van programma's valsspelen titlebars (ook hashed). And it actually checks some of the code of every program you have running and checks to see if that code is on its blacklist too. En het werkelijk aantal controles van de code van elk programma dat u hebt uitgevoerd en gecontroleerd om te zien of die code is op haar zwarte lijst ook.

Needless to say, the Warden is also in the hands of the enemy ; although I wouldn’t have the slightest clue on how to do it, you could theoretically either hack the Warden itself, or hack the apps that the Warden is checking, so that they display false or different information. Onnodig te zeggen dat de Warden is ook in de handen van de vijand;, maar ik zou niet de minste aanwijzing over hoe dat te doen, je zou theoretisch ofwel de hack Warden zelf, of hack de apps dat de Warden is met het controleren, zodat dat ze vals of andere informatie. At that point, it’s an arms race. Op dat moment, het is een wapenwedloop.

There’s already programs to watch the Warden watching you , for example. Er is nu al programma's om te kijken naar de Warden watching you, bijvoorbeeld. And Blizzard’s response was to make a bunch of different versions of Warden , so it’s harder to find and watch; and also to — surprise, encrypt the stuff sent back. En de reactie van Blizzard was het maken van een heleboel verschillende versies van Warden, dus het is moeilijker te vinden en bekijken, en ook - surprise, versleuteling van het spul teruggestuurd. Of course, you could go back to square one, packet sniff, and filter out the Warden reports… la di da. Natuurlijk, je kunt gaan terug naar af, packet snuiven, en filteren op de Warden verslagen ... la di da. Or make the cheat app polymorphic itself. Of om de cheat app polymorfe zelf. Or… Of ...

It’s all very Orwellian — but players seem to value a game environment with less cheats more than they value their privacy, though admittedly, freaking out over an app reading window titlebars and then not actually telling anyone about it unless it finds a match may seem a bit paranoid. Het is allemaal erg Orwelliaanse - maar spelers lijken een waarde aan een omgeving met minder spel cheats meer dan ze hechten aan hun privacy, ook al geef ik toe, ontzettend uit over een app lezing venster titlebars en daarna eigenlijk niet te vertellen over iemand, tenzij het een match mei lijkt een beetje paranoïde. Then again, what if someone hacked a popular WoW fansite or guide site and stuck a banned string in the titlebar? En nogmaals, wat gebeurt er als iemand gehackt een populaire WoW fansite of gids site en stak een string verboden in de titelbalk? Could happen… Kan gebeuren ...

In the end, you just cannot trust the client . In het eind, je kunt er niet op vertrouwen dat de cliënt. Everything Warden protects against fundamentally needs to be guarded against on the server. Alles Warden beschermt tegen fundamenteel moet worden bewaakt tegen op de server. In the Web world, you just have to assume that the browser could be any damn thing at all — after all, I could write a simple web browser in about five minutes. In het web wereld, hoef je alleen maar aan te nemen dat de browser kan het gaan om elke verdomde ding op alle - maar ik kon schrijven een eenvoudige web browser in ongeveer vijf minuten. And in the future, we may well have to design our games with this sort of capability in mind. En in de toekomst zullen we wellicht nog voor het ontwerpen van onze spellen met dit soort vermogens in het achterhoofd.

Take the example of the small herb to harvest. Neem het voorbeeld van de kleine kruid te oogsten. The hacks described would do things like auto-detect that the herb is around, auto-collect it, pick it out of a crowded area. De hacks beschreven zou doen dingen als auto-detect dat het kruid is rond, auto-halen, pak deze uit een drukke omgeving. The “game” lies in it being hard to find or see. Het "spel" ligt in dat het moeilijk te vinden of te zien. In the security world, this is called “security through obscurity,” and it’s generally assumed to be a waste of time. In het veiligheidsdomein wereld, dit heet "veiligheid door middel van de vergetelheid te geraken", en het is algemeen aangenomen dat het een verspilling van tijd. (This also raises the question of why we are building games out of something like herb-finding.) The secure way is for the client to not even know. (Dit werpt ook de vraag waarom we aan de opbouw van games uit zoiets als kruid-finding.) De veiligste manier is voor de client zelfs niet te weten. Have real herbs and fake herbs use the exact same client-side representation in every way. Zijn echte kruiden en nep kruiden gebruik precies hetzelfde client-side vertegenwoordiging in elk opzicht. Only the server knows the difference. Alleen de server weet het verschil.

We don’t generally do this because, well, we want to have static data and dynamic data we stream. We hoeven over het algemeen niet doen dit omdat, nou, we willen dat er statische gegevens en dynamische gegevens die we stream. We want to be able to precache most of the world, and only stream down the stuff that can change, like herbs you can pick up. We willen in staat zijn om precachen het grootste deel van de wereld, en alleen stroom vaststelling van de dingen die kunnen veranderen, zoals kruiden kunt u ophaalt. It’s cheaper in bandwidth, by a lot; it offers better performance; you get much faster load times. Het is goedkoper in bandbreedte, door heel veel, maar biedt betere prestaties; raak je veel sneller laden.

In other words, we create these vulnerabilities for ourselves because, well, we want to trust the client. Met andere woorden, we maken van deze kwetsbaarheden voor onszelf, want ook wij willen Vertrouw de klant.

In the end, the most hack-free virtual world is likely to be the one with completely open source clients , completely public and open protocols, and no attempts to cheat by having the client do any heavy lifting. Op het einde van de meest hack-free virtuele wereld zal zich waarschijnlijk het met een volledig open source klanten, volledig openbaar en open protocollen, en geen pogingen om vals te spelen door met de cliënt eventuele zware werk doen. In fact, WoW itself has taken very big strides towards this with their open UI system, which enables officially sanctioned plug-ins which do quite a lot of the things that were formerly done by hacks. In feite is WoW zelf heeft genomen zeer grote stappen richting deze met hun open UI-systeem, waarmee officieel worden erkend, plug-ins die veel doen van de dingen die vroeger gedaan door hacks. The reason this will likely be safer is simply because when the terminal is dumb, you are forced to put the smarts on the server — and the server is a lot easier to make secure. De reden dat dit zal waarschijnlijk veiliger is gewoon omdat, toen de terminal is dom, je bent gedwongen om het slim op de server - en de server is een stuk gemakkelijker te maken te beveiligen.

The challenges, however, are not small if you want to really go whole hog and make everything driven by the server. De uitdagingen zijn echter niet gering als je echt wilt gaan halverwege ophouden en maken alles weer aangedreven door de server. Everything would need to be streamed. Alles zou moeten worden gestreamd. Everything sent to the server would need to be verified. Alles wat naar de server verstuurd zouden moeten worden gecontroleerd. And game designers would have to assume they could not rely at all on anything in the visuals as a gameplay mechanic, nor on anything related to speed of cognitive processes (eg, time spent “figuring something out” would not be a good mechanic, since many things could be offloaded to the client, providing instant reaction times). En game ontwerpers zouden hebben om te veronderstellen zij zich niet kon beroepen op alles op alles wat zich in de visuals als een monteur gameplay, noch over alles wat samenhangt met de snelheid van cognitieve processen (bv. tijd besteed ", ervan uitgaande dat iets" zou geen goede monteur, aangezien veel dingen kunnen worden offloaded aan de klant, die onmiddellijk reageerde keer). It would all make for a far more asynchronous world. Het zou allemaal voor een veel asynchrone wereld.

But that design constraint might also push towards designing cleverer gameplay, rather than gameplay that can be completely undone by knowing where stuff is, picking important stuff out from the crap, and going clicky-clicky on something fast enough. Maar dat ontwerp beperking kan ook streven naar het ontwerpen slimmer gameplay, in plaats van dat de gameplay volledig kan worden ongedaan gemaakt door hen te laten weten waar spul is, picking belangrijke spullen uit de onzin, en ga Clicky-Clicky over iets dat snel genoeg.

A pipe-dream? Een pipe-droom? Probably. Waarschijnlijk. We loves us our herb-hunting, our big graphics, our lagless client-side movement, and we seem quite willing to put up with being spied on in exchange for knowing that only bad-ass hackers are cheating, instead of damn near everyone. Wij houdt van ons onze kruidkaas-jacht, onze grote afbeeldingen, onze lagless client-side beweging, en we lijken erg bereid zijn om met zijn bespied in ruil voor de wetenschap dat alleen bad-ass hackers zijn vals spelen, in plaats van damn de buurt van iedereen. ;)

*

[?] [?]
You can follow any responses to this entry through the RSS 2.0 feed. Responses are currently closed, but you can trackback from your own site. U kunt eventuele reacties op dit item via de RSS 2.0 feed. De reacties zijn momenteel gesloten, maar u kunt trackback vanaf je eigen site.

44 Responses to “How to hack an MMO” 44 Responses to "How to hack een MMO"

Jump to reader comments » | Leave a reply » Ga naar lezer reacties »| Plaats een reactie»

Trackbacks & Pingbacks Trackbacks & Pingbacks
  1. Pinging The Services (How To Guidelines) wrote on De Pingen Services (How To Guidelines) schreef op

    to the library and experienced the Dewey Decimal System. naar de bibliotheek en ervaren de Dewey Decimal System. He looked up all of his sources online and did a lot of cut-and-paste for his papers. Hij keek op al zijn bronnen online en heb een hoop knip-en-plakken voor zijn examen. For some reason, this was acceptable to his teachers…. Om een of andere reden was dat voor zijn leraren .... I think the first thing I’d be doing during graHow to hack an MMOGiven the recent hack to the blog, and also given the recent news of the decompiled Eve Online client, it seemed like a good time to go over some of the ways in which a virtual world gets hacked. Ik denk dat het eerste wat ik zou moeten doen om hack loop graHow een MMOGiven de recente hack op de blog, en ook gezien de recente nieuws van het gedecompileerde Eve Online client, het leek een goed moment om te gaan over enkele van de manieren die een virtuele wereld krijgt gehackt. The interesting thing, of course, is that all the hacks Het interessante is natuurlijk dat alle hacks

  2. COPE: James Wallis levels with you » Koster-munger wrote on COPE: James Wallis niveaus met u »Koster-Munger schreef op

    [...] Raph Koster gives you a brief tutorial on how to hack MMOs. [...] Raph Koster geeft je een korte tutorial over het hacken MMOs. [...] [...]

  3. KVET.CH wrote on KVET.CH schreef op

    del.icio.us/emory Apr 18Raph’s Website » How to hack an MMOThere’s already programs to watch the Warden watching you, for example. del.icio.us / Emory april 18Raph's Website »How to hack een MMOThere is nu al programma's om te kijken naar de Warden watching you, bijvoorbeeld. And Blizzard’s response was to make a bunch of different versions of Warden, so it’s harder to find and watch; and also to — surprise, encrypt the stuff sent back. En de reactie van Blizzard was het maken van een heleboel verschillende versies van Warden, dus het is moeilijker te vinden en bekijken, en ook - surprise, versleuteling van het spul teruggestuurd. Of Van

  4. Where social software should go next — Habitat’s lessons (Leapfroglog) wrote on Waar sociale software moet gaan volgend - Habitat de lessen (Leapfroglog) schreef op

    [...] Cheating might be of less concern to social software than to games (although there are exceptions, take Digg for example). [...] Cheating wellicht van minder belang zijn voor sociale software dan aan games (al zijn er uitzonderingen, neem Digg bijvoorbeeld). For those interested in more about this, Raph Koster recently posted an elaborate examination of hacking and cheating in MMOGs. Voor diegenen die geïnteresseerd zijn in meer hierover, Raph Koster heeft onlangs een uitgebreid onderzoek van hacking en bedrog in MMOGs. [...] [...]

  5. MMO Clerks » Koster writes “how to hack an MMO” wrote on MMO Griffiers »Koster schrijft" hoe de hack een MMO ", schreef op

    [...] blog post by game designer Raph Koster (of Ultima Online and now Metaplace fame) will tell you how! [...] Blogbericht door game-ontwerper Raph Koster (van Ultima Online en nu Metaplace faam) zal u vertellen hoe! [...] [...]

  6. Massively wrote on Massaal schreef op

    News items Have you ever wanted to walk through walls in MMO? Nieuwsberichten Heeft u altijd al had willen lopen dwars door muren in MMO? How about telepathically sense the locations of all the good drops in a zone, or make invisible things very, very visible? Hoe zit het telepatisch gevoel van de locaties van al het goede druppels in een zone, of maak onzichtbare dingen heel erg zichtbaar? Ablog postby game designer Raph Koster (of Ultima Online and now Metaplace fame) will tell you how! Ablog postby game designer Raph Koster (van Ultima Online en nu Metaplace faam) zal u vertellen hoe! Admittedly, Koster doesn’t really go into much detail. Toegegeven, Koster niet echt ingaan op veel detail. Also, he’s trying to help developers avoid hacking problems, not giving inside secret tips to hackers. Ook hij probeert te helpen voorkomen dat ontwikkelaars hacking problemen, die niet binnen geheime tips voor hackers. It’s Het is

  7. Làm th? Lam th? nào ?? nào?? hack m?t trò ch?i tr?c tuy?n MMORPG? hack m? t tro ch? i tr? c tuy? n MMORPG? - Market4Gamer wrote on - Market4Gamer schreef op

    [...] client does something. [...] Client heeft iets. Thú v? Do v? ?? ?? Các b?n có th? CAC b? N co th? tham kh?o thông tin chi ti?t : http://www.raphkoster.com/2008/04/17…o-hack-an-mmo/ [...] Tham kh? o thong tin chi ti? t: http://www.raphkoster.com/2008/04/17 ... o-hack-een-MMO / [...]

  8. Creators of gaming widget app hope to make ALT-TAB obsolete - Big Download Blog wrote on Makers van gaming widget app hopen dat ALT-TAB verouderde - Big Download Blog schreef op

    [...] framerates, and that it won’t trigger anti-cheating tools like Punkbuster or World of Warcraft’s Warden.The product is currently in its beta test phase. [...] Framerates, en dat het niet zal leiden tot anti-vreemdgaan tools zoals Punkbuster of World of Warcraft's Warden.The product bevindt zich momenteel in beta test fase. You can sign up for the beta or update [...] U kunt zich aanmelden voor de bèta-of update [...]

  9. forums.twelvesands.com • View topic - How to hack an MMO wrote on forums.twelvesands.com • Bekijk onderwerp - How to hack een MMO schreef 17 juli

    [...] some discussion earlier wondering why on earth I’d put all the user request parameters in the URL.http://www.raphkoster.com/2008/04/17/ho … ck-an-mmo/If you’re logged in to the game, you can basically visit any zone just by manipulating the URL. [...] Enige discussie eerder afvragen waarom in hemelsnaam zou ik al het verzoek van de gebruiker parameters in de URL.http: / / www.raphkoster.com/2008/04/17/ho ... ck-an-mmo/If u bent ingelogd op het spel, kun je in principe naar elke zone alleen door het manipuleren van de URL. If [...] Als [...]

  10. Raph's Website » How to hack an MMO wrote on RAPH's Website »How to hack een MMO schreef op

    [...] How to hack an MMO April 17th, 2008 (Visited 5387 times) Tags: cheating, everquest, hacking, laws of online world design, vw design, vw tech, WoW [...] [...] Hoe hack een MMO 17 april, 2008 (Bezocht 5387 keer) Tags: vreemdgaan, Everquest, hacking, wetten van de online wereld ontwerp, design vw, vw tech, WoW [...]

  11. Gameguard. Gameguard. - Page 4 - AionSource.com wrote on - Pagina 4 - AionSource.com schreef op

    [...] spawn location…) into the client. [...] Spawn locatie, ...) in de klant. as Raph Koster is fond of reminding ppl, the game client "is in the hands of the enemy": every time a dev offloads an operation onto the client, in order to save CPU cycles for AI [...] als Raph Koster is dol op herinneren PPL, de game client "is in handen van de vijand": elke keer dat er een dev offloads een operatie op de cliënt, teneinde te besparen op de CPU cycli voor AI [...]

Reader Comments Reacties Reader
  1. Todd said on Todd zei op

    In EQ, the way this manifested was every mob in the zone was sent to the client. In EQ, de manier waarop dit manifesteerde was om de menigte in de zone die is verzonden naar de klant. This meant a hack could make a minimap that showed every mob. Dit betekende een hack kan een Miniweergave die aantoonde dat elke mob. You could see repops at a distance. Je kon zien repops op afstand. But wait, it gets worse. Maar wacht, het wordt nog erger. You could also see everything they carried. U kunt ook alles zien wat ze vervoerd. So you could cherry-pick the good loot in advance. Zo kun je bijvoorbeeld krenten uit de pap te plukken van de goede buit op voorhand.

    Still is a problem, they still send down tons of data, but you could never see everything they were carrying, only their wielded items (and just the graphic it displayed) and sometimes if they were carrying a light source. Nog een probleem is, zij nog steeds zenden ton van de gegevens, maar je kan nooit alles zien wat zij verrichtten, maar slechts hun wielded items (en even het grafisch weergeven) en soms als ze het dragen van een lichtbron.

  2. Kriss said on Kriss zei op

    Yup, all good and so hard to get people to understand these facts. Yup, allemaal goed en zo moeilijk is om mensen te begrijpen deze feiten. Players are always, “But its on a computer what are you lazy? Spelers zijn altijd, "Maar haar op een computer wat ben je lui? just make cheating impossible!” gewoon valsspelen onmogelijk! "

    Personally I’ve pretty much come down to the idea that an audit type system is the only thing that makes sense. Persoonlijk heb ik nogal veel komen neer op het idee dat een audit-achtige systeem is het enige ding dat is logisch.

    Which is more of a social fix. Dat is meer een sociale correctie is opgenomen. Don’t try and make cheating impossible, just make it detectable. Probeer niet en vals spelen onmogelijk maken, maar maken het aantoonbaar. This is easier and cheaper. Dit is gemakkelijker en goedkoper.

    Don’t even try and detect it in real time. Doe het niet eens te proberen en te ontdekken dat in real time. Just take replays and audit them for cheats at a later date should people complain or due to obvious triggers. Neem replays en cheats voor hen controles te verrichten op een later tijdstip moeten mensen klagen of te wijten aan de hand liggende triggers. Again easier and cheaper. Wederom gemakkelijker en goedkoper.

    Make the response to cheats more of a social slap on the wrist. Maak de reactie op cheats meer van een sociale klap op de pols. Don’t take it to seriously, just slap them down take away points, prizes, humiliate them etc. It never makes any sense to even take away their account (unless you plan to sell them a new one). Neem niet te serieus nemen, net klap omlaag hen af te halen punten, prijzen, enz. Het vernederen ze nimmer enige zin heeft om zelfs hun rekening af te halen (tenzij je van plan bent deze te verkopen een nieuwe).

    Apart from anything else trying to build a world where you can’t do anything wrong is a bit dull. Los van dat alles probeert te bouwen aan een wereld waar je kunt verder niets mis is een beetje saai.

    I’ve been toying with the idea of removing the need for much of a central server. Ik was toying met het idee van de noodzaak voor een groot deel van een centrale server. Turning it more into a central audit system that solidifies when necessary the otherwise shared hallucination. Draaien ze beter in een centrale audit-systeem dat stolt wanneer dat nodig is het overigens gedeeld hallucinatie. Most people are not cheats after all and as long as you have plans to roll back and undo actions I’m confident you can get away with peer to peer data exchanges. De meeste mensen zijn immers niet cheats en zo lang als u plannen om terug ongedaan maken en ik ben ervan overtuigd kunt u wegkomt met een peer-to-peer uitwisseling van gegevens. Much of the auditing can even be done client side, with clients flagging other clients as suspicious. Een groot deel van de audit kan zelfs worden gedaan client-kant, met klanten bestraat andere klanten als verdacht.

    The total client side cpu power will always dwarf the server side. De totale client-kant van je cpu zal altijd dwerg de server kant.

    It just takes some clever game design. Het duurt slechts enkele slimme game design.

  3. BuschnicK said on BuschnicK zei op

    For me, after playing the game as intended for awhile, the meta-game of hacking and automating it, is far more interesting than the original gameplay. Voor mij, na het spel te spelen zoals de bedoeling is een tijdje uit, de meta-game van hacken en te automatiseren, is veel interessanter dan de originele gameplay. Programmers, by definition, are keen on automating boring, repetitous and dumb tasks. Programmeurs, per definitie, zijn enthousiast over het automatiseren van saai, en stom repetitous taken. This unfortunately describes 75% of most online game gameplay. Dit helaas beschrijft 75% van de meeste online game gameplay. The one who endures the boredom longer and spends the most time in the game gets the biggest rewards. Degene die de verveling langer is duurzaam en besteedt de meeste tijd in het spel krijgt de grootste beloning.
    So how do you prevent cheating? Dus hoe voorkom je valsspelen? Reward actual skill over forbearance, make the core gameplay interesting enough so players will feel they are missing out if they are cheating. Reward werkelijke vaardigheid over geduld, maken de kern van de gameplay interessant genoeg om spelers zullen het gevoel hebben dat ze uit de boot valt als ze vals spelen. No one sends a bot to see a movie for him… Niemand stuurt een bot te zien van een film voor hem ...
    Also, make the interface of the game as streamlined as possible. Ook maakt de interface van het spel zo gestroomlijnd mogelijk te maken. Lots of the hacks/cheats are actually workarounds for shortcomings in the interface. Veel van de hacks / cheats daadwerkelijk oplossingen voor tekortkomingen in de interface.

    Then again, one of my clients is http://www.zynamics.com so I’m kinda biased Dan weer een van mijn klanten is http://www.zynamics.com dus ik ben een beetje bevooroordeeld ;-)

    Anyways, good post - kind regards, Maaruh, goede post - vriendelijke groet,

    Sören

  4. Shalkis said on Shalkis zei op

    A small note: FPS games have performed a lot of culling, starting with Quake. Een kleine opmerking: FPS games hebben veel doden, te beginnen met Quake. ID used a concept called a vismap, or a visibility map. ID gebruik gemaakt van een concept genaamd een vismap, of een kaart zichtbaar. Basically, the map designer calculated in advance which parts of the map are visible from each location. Principieel kan de kaart ontwerper berekend op voorhand welke delen van de kaart zichtbaar zijn vanaf iedere locatie. However, the main reason for calculating vismaps was not to deter cheaters, but to speed up rendering. Maar de belangrijkste reden voor de berekening van vismaps was niet afschrikken om cheaters, maar een snellere weergave. There’s no reason whatsoever to render that wall five corridors and seven rooms away from you, because there’s no way you could see it. Er is geen enkele reden om die muur vijf gangen en zeven kamers van u af, want er is geen manier waarop je zou kunnen zien. All the server needed to do was to put the vismap to a new use and check whether players were in areas that could not be seen by the other players. Alle server nodig te doen was om de vismap naar een nieuw gebruik en controleer of er spelers zijn in gebieden die niet konden worden gezien door de andere spelers.

  5. Mox said on Mox zei op

    As Raph says, people move very fast in FPS games. Zoals RAPH zegt, mensen bewegen erg snel in FPS games. What may be invisible in one frame may become visible in the next, and in the high-stakes Quake 3 Arena world, frames matter . Wat kan een onzichtbaar in het frame zichtbaar worden in de volgende, en in de high-stakes Quake 3 Arena wereld, frames materie. Also, you have to consider the worst-case scenario. Ook hebt u rekening te houden met de "worst case"-scenario. Keeping things fast and responsive when you can’t see anyone doesn’t help when all the players in the game are in the same room, blasting away at each other. Keeping dingen snel en responsief wanneer u niet kunt zien wie helpt niet wanneer alle spelers in het spel zijn in dezelfde kamer zijn, stralen af op elkaar.

    Static items can be filtered properly, however. Statische objecten kan gefilterd behoren echter. For example, all the weapon and ammo pick-ups. Zo zijn bijvoorbeeld alle wapen en munitie pick-ups. The server doesn’t need to tell you what they are up to until your client is in danger of seeing them. De server niet hoeft te vertellen wat ze up te gebruiken totdat uw cliënt in gevaar te zien zijn.

    Interesting thing about the resource-collection example that Raph uses: contrast LotRO and WoW craft collection with SWG craft collection. Interessante opmerking over de middelen-collectie voorbeeld dat RAPH toepassingen: LOTRO contrast en WoW ambachtelijke collectie met SWG ambachtelijke collectie.

  6. Raph said on RAPH zei op
    Still is a problem, they still send down tons of data, but you could never see everything they were carrying, only their wielded items (and just the graphic it displayed) and sometimes if they were carrying a light source. Nog een probleem is, zij nog steeds zenden ton van de gegevens, maar je kan nooit alles zien wat zij verrichtten, maar slechts hun wielded items (en even het grafisch weergeven) en soms als ze het dragen van een lichtbron.

    I am almost positive that I once saw a hack client that showed the contents of the mobs’ drops, and that later it switched to not spawning the drops until the mob was killed. Ik ben er bijna zeker positief dat ik ooit zag een hack-client die aantoonde dat de inhoud van de mobs' drops, en dat later werd overgeschakeld naar de paaitijd van de druppels niet tot de menigte werd vermoord. It may have been during the beta, though. Het kan zijn tijdens de beta, dat wel. (We were at Origin then, and someone on the UO2 team was analyzing the packet stream? I don’t quite recall). (We waren bij de oorsprong dan, en iemand op het UO2 team was het analyseren van de packet stream? Ik niet goed herinneren).

    For me, after playing the game as intended for awhile, the meta-game of hacking and automating it, is far more interesting than the original gameplay. Voor mij, na het spel te spelen zoals de bedoeling is een tijdje uit, de meta-game van hacken en te automatiseren, is veel interessanter dan de originele gameplay. Programmers, by definition, are keen on automating boring, repetitous and dumb tasks. Programmeurs, per definitie, zijn enthousiast over het automatiseren van saai, en stom repetitous taken.

    Designers shouldn’t be. Ontwerpers moeten niet worden.

    A small note: FPS games have performed a lot of culling, starting with Quake. Een kleine opmerking: FPS games hebben veel doden, te beginnen met Quake. ID used a concept called a vismap, or a visibility map. ID gebruik gemaakt van een concept genaamd een vismap, of een kaart zichtbaar. Basically, the map designer calculated in advance which parts of the map are visible from each location. Principieel kan de kaart ontwerper berekend op voorhand welke delen van de kaart zichtbaar zijn vanaf iedere locatie. However, the main reason for calculating vismaps was not to deter cheaters, but to speed up rendering. Maar de belangrijkste reden voor de berekening van vismaps was niet afschrikken om cheaters, maar een snellere weergave. There’s no reason whatsoever to render that wall five corridors and seven rooms away from you, because there’s no way you could see it. Er is geen enkele reden om die muur vijf gangen en zeven kamers van u af, want er is geen manier waarop je zou kunnen zien. All the server needed to do was to put the vismap to a new use and check whether players were in areas that could not be seen by the other players. Alle server nodig te doen was om de vismap naar een nieuw gebruik en controleer of er spelers zijn in gebieden die niet konden worden gezien door de andere spelers.

    Right, good point. Juist, goed punt. I said: Ik zei:

    Even on the client, we do culling, so that we don’t draw everything in the dataset the client knows about. Zelfs op de client, we doen het ruimen, zodat we niet stellen alles in de dataset van de klant kent. In an FPS, you typically cannot do a lot of server-side culling — everyone on the map is “visible” to the client, because everyone is moving so fast that you can’t really do any line of sight culling on the server. In een FPS, je doorgaans niet veel doen met een server-side afmaken - iedereen op de kaart is "zichtbaar" op de cliënt, omdat iedereen beweegt zich zo snel, dat kun je niet echt een bepaalde regel van het gezichtsvermogen ruiming op de server.

    In the case of what you’re describing — vismaps and other forms of block culling are not all that helpful for deterring cheating, since “all the players that matter” is who you want to operate the hack against anyway. In het geval van wat u beschrijft - vismaps en andere vormen van blok ruiming zijn niet zo heel nuttig zijn voor het afschrikken van valsspelen, omdat "alle spelers die materie" is die u wilt bedienen tegen de hack toch niet. :)

    I know you know this, but for the sake of others reading the thread: Ik weet dat je daarvan bewust, maar ter wille van anderen lezen van de thread:

    The way to think about is this — you have a static dataset (the map) and a dynamic, quickly moving dataset (objects like players, pickups, bullets). De manier van denken over dit is - u hebt een statische dataset (de kaart) en een dynamisch, snel bewegende dataset (objecten, zoals spelers, Pickups, kogels).

    The map is pre-cached, which means that the client knows ALL of it — it can make automaps if it wants, it can tell you the best paths, it can hack the art. De kaart is pre-cache, wat betekent dat de cliënt weet ALLES van het - zij kan leveren automaps als ze wil, kan het u vertellen dat de beste paden, dan kan houwen de techniek. But it can also optimize what to render. Maar het kan ook wat te optimaliseren om ze te renderen.

    The dynamic stuff has the potential to move very fast, so the server tells you where all of it is at any time. De dynamische spullen heeft de potentie om zeer snel, zodat de server waar u zich al is het op elk moment wijzigen. After all, it might round a corner, or you might round a corner. Immers, is het misschien een bocht, of je misschien een bocht. This doesn’t mean the client is rendering it, but it does mean it knows about it. Dit betekent echter niet dat de client is rendering, maar het betekent wel het weet over. That is why I put “visible” in quotes. Dat is de reden waarom ik put "zichtbaar" tussen aanhalingstekens.

    The renderer then does render culling, which is decide which items to draw. De renderer dan maakt het ruimen, dat is beslist welke items om te tekenen. A hacker can change how stuff renders, and given the fact that the client knows where everyone is, it can do things like draw outlines of them on the hud, letting you “see” through walls. Een hacker kan veranderen hoe spul maakt, en gegeven het feit dat de cliënt weet waar iedereen ook is, het kan dingen doen zoals trekken schetst van hen op Hud, die je kunt "zien" door muren. Or autoaim at them, lining up the shot before they come out from behind the wall. Of autoaim naar ze, voering van de neergeschoten voordat ze komen van achter de muur.

    Something like a vismap doesn’t do complex dynamic culling; instead, it says “this guy is basically in a different building” or “this guy is basically at the other end of a long twisty hallway” — there’s no way for the other guy to come into visibility in any reasonable period of time. Iets als een vismap niet doet complexe en dynamische doden; plaats daarvan zegt: "Deze man is in feite in een ander gebouw" of "deze jongen is in principe aan het andere eind van een lange gang bochtig" - er is geen manier voor de andere man te komen in zicht op een redelijke termijn. So the map gets chopped up into network update areas. Dus de kaart wordt gesneden in het netwerk update gebieden. “When in room A, tell me about room B dynamic stuff, but not room C stuff.” This is basically the same as EQ not telling you about stuff in the next zone, etc. "Toen in zaal A, tell me about room B dynamische dingen, maar niet kamer C stuff." Dit is in essentie hetzelfde als EQ niet vertellen over je spullen in de komende zone enz.

    The only total solution is to do line of sight network culling, but that is both CPU-intensive, and also would require a round-trip to the server, which makes it impossibly slow. De enige oplossing is het totaal doen vizierlijn netwerk ruimen, maar dat is zowel CPU-intensieve, en ook zou voorzien in een round-trip naar de server, waardoor het onmogelijk traag. Most MMOs settle for radial network culling. De meeste MMOs regelen voor radiale netwerk ruimen.

  7. Richard Bartle said on Richard Bartle zei op

    Raph>The dynamic stuff has the potential to move very fast, so the server tells you where all of it is at any time RAPH> De dynamische spullen heeft de potentie om zeer snel, zodat de server waar u zich al is het op elk moment

    It’s possible to send this information in an encrypted form, but only send the decryption key when the client is entitled to see it. Het is mogelijk deze informatie te verzenden in een gecodeerde vorm, maar alleen het verzenden van het decryptie-toets wanneer de cliënt het recht heeft om het te zien. It doesn’t have to be heavy duty encryption, just enough to make trying every key in a split second impractical. Het hoeft niet zo te zijn "heavy duty"-codering, net genoeg om te proberen om de sleutel in een fractie van een seconde onpraktisch.

    I first saw this proposed on MUD-DEV, but haven’t seen it used in action. Ik heb voor het eerst zag op deze voorgestelde MUD-DEV, maar hebben niet gezien dat die gegevens worden gebruikt in actie. I suspect that even a single UDP exchange with the server may introduce too much lag. Ik vermoed dat zelfs een enkele UDP-uitwisseling met de server kunnen de te veel vertraging. Using something similar for precached client-side material ought to be viable, though. Met behulp van iets dergelijks voor precached client-side materiaal moeten levensvatbaar zijn, hoor. The decryption algorithm may be in the hands of the enemy, but that doesn’t mean the decryption key has to be. De decryptie-algoritme kan in de handen van de vijand, maar dat betekent niet dat de decryptie sleutel moet worden.

    Richard

  8. Raph said on RAPH zei op

    Very true — I had forgotten that came up on MUD-Dev, actually. Very true - ik was vergeten dat kwam op MUD-Dev, eigenlijk. But yes, a token exchange of hashes or keys in classic key exchange style could be done. Maar ja, een symbolische uitwisseling van hashes of toetsen in klassieke stijl key exchange zou kunnen worden gedaan.

    I don’t think that for real-time apps an on-the-fly key exchange is practical — the roundtrip time could be too much. Ik denk niet dat voor real-time apps een on-the-fly-toets uitwisseling praktisch is - de retourvlucht tijd zou kunnen worden te veel. But it’s worth exploring in the fashion you suggest. Maar het is de moeite waard in de modebranche u voorstelt.

  9. Shalkis said on Shalkis zei op

    A vismap can’t prevent you from tracking a player who’s just about to run into the room you’re in, but it can prevent the server from telling you that he picked up an important powerup from the previous room. Een vismap niet kan voorkomen dat u het bijhouden van een speler die het net gaan lopen in de kamer zit je in, maar het kan voorkomen dat de server van je te vertellen dat hij pakte een belangrijk powerup uit de vorige kamer.

    That decryption-keys-sent-on-demand sounds interesting. Dat decryptie-sleutels-verzonden-on-demand klinkt interessant. However, the preloaded encrypted packet needs to be padded to a predetermined size and it’s transmission time needs to be randomized. Echter, de voorgespannen gecodeerde pakket moet worden padded tot een vooraf bepaalde grootte en het is de zendtijd moet worden gerandomiseerd. While you may not be able to decode the contents, the act of transmitting encrypted data can be telling in itself. Hoewel u waarschijnlijk niet kunnen decoderen en de inhoud van de akte van overdracht van gecodeerde gegevens te kunnen vertellen op zich. If you always receive a packet of a certain size 2 seconds before a dragon appears, you’ll soon learn to hide whenever that happens. Als u altijd een pakket ontvangt van een bepaalde grootte 2 seconden voordat een draak verschijnt, zul je al snel leren te verbergen wanneer dat gebeurt.

  10. Spaz said on Spaz zei op

    These are serious problems now, but will they not eventually go away as bandwidth and server hardware get better? Dit zijn ernstige problemen, maar uiteindelijk zullen ze niet verdwijnen als bandbreedte en server hardware krijgen beter?

    Do you think that the demands of things we want to do are growing faster or slower than the abilities of the physical infrastructure? Denkt u dat de eisen van de dingen die we willen doen groeien sneller of langzamer dan de draagkracht van de fysieke infrastructuur?

  11. Michael Chui said on Michael Chui zei op

    These are serious problems now, but will they not eventually go away as bandwidth and server hardware get better? Dit zijn ernstige problemen, maar uiteindelijk zullen ze niet verdwijnen als bandbreedte en server hardware krijgen beter?

    They can, but most of these improvements are being put to use in driving bigger and better features, rather than locking down security. Zij kunnen, maar de meeste van deze verbeteringen worden geleverd om te gebruiken bij het besturen van grotere en betere functies, in plaats van te vergrendelen veiligheid. It’sa resource allocation thing, and security doesn’t make you any money. Het is een toewijzing van middelen ding, en zekerheid is niet voor zorgen dat u geen geld. It just keeps you from losing too much. Hij doet het gewoon houdt je verliest te veel.

    Notice how every proposed solution so far has an implied argument of “This doesn’t take much effort.” And every vulnerability comes from, “This makes a better experience.” Merk op hoe elke voorgestelde oplossing tot nu toe nog een impliciete argument "Dit vergt niet veel inspanning." En elke kwetsbaarheid vandaan komt, "Dit maakt een betere ervaring."

  12. Steven "PlayNoEvil" Davis said on Steven "PlayNoEvil" Davis zei op

    The other option is to pre-load multiple data sets or assets and then simply point to the right one when needed. De andere optie is voor een pre-load meerdere gegevens of activa en dan gewoon een punt aan de rechterkant een als dat nodig is.

    In many cases you can stop tampering by using a keyed hash function (or MAC) instead of encryption. In veel gevallen kunt u stoppen met het knoeien met behulp van een hash-functie ingetoetst (of MAC) in plaats van encryptie. This has the benefit that the server can “cheat” and not check the MAC code all of the time (coincidentally, I’m coding one of these right now). Dit heeft als voordeel dat de server kan "valsspeler" en niet controleren of het MAC-code al van de tijd (toevallig, ik ben een van deze codering op dit moment).

  13. Swift Voyager said on Swift Voyager zei op

    My personal maxim when writing business software for internal use over a LAN or Intranet: You can try to monkey-proof your software but a monkey is still a monkey. Mijn persoonlijke stelregel tijdens het schrijven van zakelijke software voor intern gebruik in een LAN of Intranet: U kunt proberen om aap-proof uw software, maar een aap blijft een aap.

    We had a large application designed for internal use and since we controlled all aspects of that use, we could make arbitrary statements like “This site requires MS Internet Explorer version xx or higher” or “Screen resolutions of xxxxx by xxxxx or higher are required to view this page”. We hadden een grote applicatie ontworpen voor intern gebruik en sinds we de beheerste alle aspecten van dat gebruik, kunnen we willekeurige verklaringen zoals "Deze site maakt gebruik van MS Internet Explorer versie xx of hoger" of "Scherm resoluties van xxxxx door xxxxx of hoger nodig zijn om Bekijk deze pagina ". It saved a lot of time in testing and customizing. Het bespaarde veel tijd bij het testen en aanpassen. Later, someone got the bright idea that certain outside clients and vendors should have access. Later kreeg iemand het lumineuze idee dat bepaalde externe klanten en leveranciers toegang moet hebben. “uh oh” "Uh oh"

    And that doesn’t even begin to get into the area of open public access where people are going to deliberately trying to break your software just for fun. En dat zelfs niet beginnen te krijgen in het gebied van open toegang van het publiek waar mensen gaan opzettelijk probeert te breken uw software gewoon voor de lol. I can’t imagine having to handle that kind of problem without having full time people on staff who are dedicated experts. Ik kan me niet voorstellen hoeft te behandelen dat soort problemen, zonder dat mensen op fulltime medewerkers die zijn gewijd deskundigen. What a nightmare. Wat een nachtmerrie.

  14. Shalkis said on Shalkis zei op

    And that doesn’t even begin to get into the area of open public access where people are going to deliberately trying to break your software just for fun. En dat zelfs niet beginnen te krijgen in het gebied van open toegang van het publiek waar mensen gaan opzettelijk probeert te breken uw software gewoon voor de lol. I can’t imagine having to handle that kind of problem without having full time people on staff who are dedicated experts. Ik kan me niet voorstellen hoeft te behandelen dat soort problemen, zonder dat mensen op fulltime medewerkers die zijn gewijd deskundigen. What a nightmare. Wat een nachtmerrie.

    Security in general does require a specific mindset . Veiligheid in het algemeen is wel een specifieke mentaliteit. You have to keep asking yourself: “How this can be subverted?” and “What damage could I do with this?” Once you get into that mindset, all else follows. Je moet jezelf blijven vragen: "Hoe dit kan worden misbruikt?" En "Welke schade kan ik hiermee doen?" Als je eenmaal in die manier van denken, al het andere volgt.

  15. Mox said on Mox zei op

    With respect to sending encrypted data to the client speculatively, to be decrypted only when it becomes appropriate, it seems to me that it can be useful to cache potentially relevant data on the client. Met betrekking tot het verzenden van gecodeerde gegevens naar de client speculatively, worden ontcijferd alleen wanneer ze nodig, maar het lijkt me dat het kan handig zijn om te cache mogelijk relevante gegevens over de klant. For example, the stealther problem in Dark Age of Camelot. Bijvoorbeeld, de stealther probleem in Dark Age of Camelot. There’sa whole pile of data that you need to send to the client to get it to adequately represent a figure in a graphical MMO like DAoC - race, custom appearance options, visible equipment - but you don’t want to “tip off” the client that there’s an invisible assassin nearby until you are sure the client has detected the stealther (Camelot uses a simple binary system for stealther detection, such that if you haven’t detected the sneak it’s supposedly completely undetectable). If you hold off on that bundle until the client has successfully made their “detection test” then it’s possible that there isn’t the bandwidth available to bring the client up to speed fast enough. In Camelot, with enough Stealth skill, you could bring the detection radius down to a very short distance indeed - crucial when trying to stick a knife in someone’s back. Pre-sending unencrypted data could give a compromised client some information you would not like to present to an unmodified client - the appearance, allegiance and perhaps the name and Realm Rank of the would-be assailant. Sending it early but encrypted sounds like an effective compromise technique. You can disguise it by filling otherwise unused bandwidth with nonsense that you never ask the client to decrypt. The missing data, position, speed and animation, should hopefully form a small enough packet it will not introduce any significant latency by itself.

  16. Rik said on

    Perhaps we could get an overview of how Metaplace fits into this topic?

  17. Raph said on

    In Metaplace, the packet stream is completely open, and the client is completely stupid. So you are forced to verify everything on the server and do everything on the server. In alpha, we have had a couple of hacks related to spamming and to triggers, and both were because of inadequately secured scripts on the worldbuilder’s part.

  18. Brent Michael Krupp said on

    Raph was correct about EQ. Early on they *did* spawn loot with the mobs and ShowEQ (the major EQ hacking program back then) showed you that loot. Then Verant got smart and made mobs only spawn loot when killed.

    Another wonderful aspect of the way they used to do it was that rogues could pickpocket loot off of mobs leaving them empty when actually killed!

    The occasional quest mob would drop his head when you killed him — rogues could pickpocket those too. Pretty funny.

    This went away pretty early, possibly even pre-Kunark but I can’t quite remember now.

    And fwiw, I never ran the program but some good friends did.

  19. Eolirin said on

    Raph…

    That’s twice now. :P

  20. Ola Fosheim Grøstad said on

    Richard: It doesn’t have to be heavy duty encryption, just enough to make trying every key in a split second impractical.

    There is no reason to not use heavy-duty encryption on the client side, but I suppose it could be heavy for the server for real time data. However, you might get away with just encrypting the most vital information. For instance if you set up compression streams then you might separate IDs into it’s own stream and only encrypt that stream. (Separating information into their own streams tends to give better compression ratios, so it makes sense to do it for two reasons..). If you have say 20 clients subscribing to the same area you get away with spending 5% of the alloted time per client on compression, which might make it an acceptable overhead….
    *shrugs*

  21. Raph said on

    Eolirin,

    Fine. :P I fixed it.

  22. Raph said on

    Ola,

    Actually, it’s usually the client load of decryption that has been an issue, in the past anyway.

  23. Solok said on

    Cool topic. I’m curious, what are some of the ways the server know’s that my client, and not another, is sending the data? What prevents my neighbor from impersonating my client and telling the server I’m doing something I’m not?

  24. Eolirin said on