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的个人网站: mmos ,游戏,写作,艺术,音乐,书籍。

How to hack an MMO 如何哈克1 mmo

April 17th, 2008 2008年4月17日

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. 鉴于近期哈克向博客 ,也鉴于最近的消息, 该解编前夕上网用户,它好像一个好时机到了一些如何在一个虚拟世界中获得砍死。

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.有趣的事,当然,这是所有骇客我要谈谈,其实是不是黑客的虚拟世界在所有,他们不是攻击客户端 ,这是您的窗口,融入世界,也是您的瓦尔多 ,你的手段控制权发生什么事在这世界。 And that’s because…和这是因为…

The client is in the hands of the enemy.客户端在手中的敌人。

The Laws of Online World Design -法律的网上世界设计

You’ve probably heard that before — I wasn’t the first one to say it, but it constantly gets misattributed to me.您大概也听说之前-我不是第一个说,但它不断得到m isattributed给我。 That particular phrasing may have originated with Kelton Flinn , but I am sure many of us came up with it independently.特别的措词可能源自凯尔顿弗林 ,但我相信我们许多人想出了它独立。

The first thing to realize is that encryption of the data stream isn’t going to stop anyone serious .第一件事,以实现是加密的数据流是不会阻止任何人都严重

Here’s the diagrammatic way to look at it.这里的图解的方式看待它。

  • You generate data.您生成的数据。
  • You put it in a packet.你把它放在一个包。
  • You encrypt the packet.您加密的数据包。
  • You send it over the wire.您发送的,它比钢丝。
  • It gets to a user’s computer.愈用户的计算机。
  • The client reads the encrypted packet.客户端读取加密的数据包。
  • The client decrypts the packet.客户端解密数据包。
  • The client does something.用户端的东西。

Really, anything after “it gets to a user’s computer” is in the hands of the enemy.真的,什么都后, “它愈是在使用者的电脑”是在手中的敌人。 So that means that you are encrypting the packets, handing the user a decrypter called a client , and thinking that encryption helps.因此,这意味着你是加密的数据包, 交给用户一decrypter所谓的客户端 ,并且以为加密帮助。

The hackers can choose to do is read the incoming packets out of client memory after decryption, instead of sniffing the stream directly.黑客可以选择要做的就是阅读外来的封包走出客户端的内存后解密,而不是吸流直接。 But really, all this does is raise the bar a bit on the hacking skills required.但说真的,这一切是否是提高酒吧有点对黑客所需要的技能。

To top it off, encryption can be slow, if you’re talking a real-time sort of situation.顶部它关闭,加密,可缓慢,如果您所说的一个真实的时间排序的情况。 You may not want to spend the time in encrypting if you need a fast response.您可能不希望花时间在加密,如果您需要一个快速的反应。

Packet stream sniffing: getting more info than you should 包嗅探流:获得更多信息比你应

This one was a problem early on in EverQuest and is still an issue in many FPSes.这一个是一个问题,早在无尽的和仍是一个问题,在许多fpses 。 In short, you should not rely on the client to filter information.在短期内,你不应该依赖于客户端过滤的信息。 Assume that anything that comes down the wire is visible to them.假设的东西归结为导线,是有形给他们。 We speak of “culling” the data that is sent down, basically reducing the set.我们讲的“扑杀”的数据发送,基本上减少。 Even on the client, we do culling, so that we don’t draw everything in the dataset the client knows about.甚至在客户端,我们做扑杀,使我们不借鉴一切在DataSet的客户端知道。 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 EQ, the way this manifested was every mob in the zone was sent to the client.在情商,这体现的方式是每一个暴徒在开发区内被发送到客户端。 This meant a hack could make a minimap that showed every mob.这意味着黑客可以作出minimap显示,每暴民。 You could see repops at a distance.你可以看到repops在距离。 But wait, it gets worse.但等待,这进一步恶化。 You could also see everything they carried .您也可以看到的一切,他们进行的 So you could cherry-pick the good loot in advance.所以你可以用樱桃挑选良好的掠夺在前进。

Packet filtering: dropping stuff you shouldn’t 包过滤:下降的东西你不应该

Sometimes the server tells you things you just don’t want to hear.有时服务器告诉你的东西,你刚才不想听。 One such thing might be “no, you can’t go there.” This is the classic wall hack.一这种事可能是“不,你不能去那里” ,这是典型的墙哈克。 Usually, you move, and do a local client-side collision 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).您还欢送请求到服务器,为您的运动,使服务器可以验证您是否可以去那里(毕竟,你也可能-恐怖-砍死的客户端以不碰撞检查)。 The server will send back a “no, you are still over here” message, resulting in being rubberbanded back to where you were.服务器会发送回一个“没有,你还在这里”的讯息,导致在被rubberbanded回到那里你。

Unless you simply ignore that message, and merrily keep going.除非你根本不理会这项讯息,并merrily继续进行。 This will allow you to explore all of the static dataset that your client has loaded.这将允许您探索所有的静态数据集,您的客户端已载入。 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.您将不会看到任何新的流对象,在正确的地方,当然,因为到目前为止,作为服务器而言,你没有提出动议。

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.只是下降的数据包可以相当强大,如果工程师们马虎和依赖于客户端,以正确的本身后,被告知这是顽皮。 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.一种常见方式,您可以使用此更大的优势,依赖于一个事实,即我们常做,让客户得到半自治的有关运动。 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.您可以走动,在用户端更具有深远的粒度和与更迅速的变化方向,比你可以在服务器上。 Instead of tracking your every move, we instead subsample it, basically.而不是跟踪你的一举一动,我们不是 ,基本上。 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.我们依靠简单的数据一样, “你可以不动,远远得那么快” ,以确认您是否是在作弊,其实在您的运动。

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.但如果你相撞的东西,被告知反弹,但随后转移到了一个立场,另一边的墙上,未来运动可能属于可以接受的参数,然后你可以提出通过墙。

Packet altering: changing what you hear 包改变:改变什么你听到

Alternatively, you could actually alter the packet before it gets interpreted.另外,您真的可以改变数据包之前,它得到解释。 This basically lets you get the client to dance to your tune.这基本上可以让您获得客户端的舞蹈到您的调子。 Maybe you want a nice big waypoint on top of your quest target.也许你想要一个好大的路点再加上你的追求目标。 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.也许你要改变什么区客户端认为这是加载到你在为了让您游览某处,你通常无法进入。

Representation altering: changing what you see 代表性的改变:改变你所看到的

Messing with the data stream isn’t the only thing within your power.梅辛与数据流是不是唯一的事,您的权力。 Lots of folks in FPSes did things to change the visibility level of what was around them.很多乡亲在fpses没有的东西,改变能见度的水平,什么是他们周围。 Replace all the walls with transparent textures, and you will have a much better idea of where everyone is.更换所有的墙壁与透明的质地,和您将有一个更美好的想法,每个人都是。 Replace small meshes with big ones, or camo-colored textures with bright pink ones, and everything gets easier to spot.取代小网格大,或camo色纹理与光明的粉红色,和一切得到更容易点。

Triggering 触发

Of course, why give yourself the work?当然,为什么给自己的工作呢? Just have the client automatically send back responses instantly when it gets a particular packet or message.刚才有客户端自动传送回即时的反应时,得到某一特定的数据包或讯息。 This form of automated triggers is, of course, a key element in building bots.这种形式的自动触发的,当然是一个关键因素,在建设程序。 In an FPS, autoaim is an example.在一新鲜粮食店, autoaim就是一个例子。 The accuracy of something happening with a trigger is far far higher than what it is when a mere human is at the wheel.准确性的东西,发生与触发是远高于是什么时,仅仅是人类在车轮。

Spamming 滥发电邮

A lot of times, the servers aren’t hardened properly against receiving more commands in a given span of time than they expect.很多时候,服务器不硬化,妥善对收到更多的命令,在一个特定的时间内超过他们的期望。 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.让客户端处理降温定时器会的一个例子是错误的一样,这;如果你可以控制上游,您可以绕过cooldowns 。

The Warden and other tricks 典狱长和其他招数

Of course, there’s countermeasures.当然,还有的对策。 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.对策所用的暴雪(和水蒸汽,因为这件事)是一个单独的运行过程进行监测是否主要应用正在搞砸。 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:这是一种普遍的做法在韩国以及,并有的新鲜粮食店的服务器要求您运行punkbuster等从哇服务条款:

# 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. #运行时,程序可能会监控您的计算机的随机存取存储器( RAM )和/或CPU的进程,为未经授权的第三方程序运行的同时,与魔兽世界。 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. 一“未经授权的第三方党纲”作为此处使用的应定义为任何第三方软件,包括但不限于任何“ addon ”或“按付款当日价格计算, ”在暴雪的唯一的决心: (一)使或便利作弊任何类型的; (二)允许用户修改黑客的魔兽世界界面,环境,和/或经验以任何方式不明确授权的暴雪;或( iii )拦截, “地雷” ,或以其他方式搜集资料,或通过该计划。 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. 在一旦该程式侦测未经授权的第三方程序,暴雪可能(一)沟通信息回暴雪,包括但不限于您的帐户名称,详细了解了未经授权的第三方程序检测,以及时间和日期未经授权的第三方程序检测;及/或( b )行使任何或所有其权利根据第6条本协议的,或未经事先通知给用户。

How does it do this?它如何这样做呢? Well, actually, by using many of the same techniques as described above .好,其实, 使用的许多相同技巧如上文所述 Basically, it kind of hacks you .基本上,这种骇客 It checks to see if stuff is running in WoW’s memory space.它会检查,看看是否东西是运行在Wow的记忆体空间。 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).它会检查标题栏的任何窗口中,你有开放的和比较的案文指出,窗口标题(虚线)对黑名单作弊程式titlebars (也虚线) 。 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.它实际上是检查的一些守则,每个程序你有运行和检查,看看是否能代码是就其列入黑名单。

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.不用说, 典狱长,也是在手中的敌人 ,虽然我不会有丝毫的线索,就怎样做,你可以在理论上无论是哈克舍监本身,或开刀应用程序,该舍监是检查,所以他们展示虚假的或不同的信息。 At that point, it’s an arms race.在这一点上,它的军备竞赛。

There’s already programs to watch the Warden watching you , for example.还有的已经节目观赏舍监看着你 ,例如。 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.与暴雪的回应是,使一批不同版本的舍监 ,因此它的难找到,并观赏;也-突击,加密的东西送回。 Of course, you could go back to square one, packet sniff, and filter out the Warden reports… la di da.当然,你可以回到广场一,包嗅探,并过滤掉舍监报告信息… La邸大。 Or make the cheat app polymorphic itself.或使作弊亚洲浆纸多态性本身。 Or…或… …

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.这一切都非常奥威尔-但球员似乎价值的游戏环境与少作弊以上,他们的价值他们的隐私,虽然无可否认,再用了超过一读应用程序的窗口t itlebars然后实际上没有告诉任何人关于它,除非它认为比赛可能似乎有点偏执。 Then again, what if someone hacked a popular WoW fansite or guide site and stuck a banned string in the titlebar?再说,如果有人窃取热门哇fansite或指南网站和坚持一个被取缔的字符串在标题? Could happen…可能发生的…

In the end, you just cannot trust the client .在最后, 你就不能信任的客户端 Everything Warden protects against fundamentally needs to be guarded against on the 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.在网络世界,你刚才要承担该浏览器可以是任何可恶的事情全部-毕竟,我可以写一个简单的W eb浏览器在约五分钟。 And in the future, we may well have to design our games with this sort of capability in mind.并在未来,我们可能要设计我们的游戏,这种能力在铭记。

Take the example of the small herb to harvest.采取的例子,小药草收获。 The hacks described would do things like auto-detect that the herb is around, auto-collect it, pick it out of a crowded area.该所描述的骇客会作更多事情,例如自动侦测到的药草是左右,自动收集,挑选出来的一个拥挤的地区。 The “game” lies in it being hard to find or see. “游戏” ,关键是它正在很难找到或看到的。 In the security world, this is called “security through obscurity,” and it’s generally assumed to be a waste of time.在安全理事会的世界,这是所谓的“安全通过隐晦” ,它的普遍假设是浪费时间。 (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. (这也提出一个问题,为什么我们正在建设的游戏出来的东西,像药草调查) ,安全的方式是为客户端甚至不知道。 Have real herbs and fake herbs use the exact same client-side representation in every way.有真正的草药和草药使用假完全相同的客户端代表以各种方式。 Only the server knows the difference.只有服务器知道的差异。

We don’t generally do this because, well, we want to have static data and dynamic data 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.我们希望能够precache世界上大多数,只有流下来的东西可以改变,如中草药,您可以拿起。 It’s cheaper in bandwidth, by a lot; it offers better performance; you get much faster load times.它的便宜,在带宽,通过了很多;它提供了更好的表现;你快得多加载时间。

In other words, we create these vulnerabilities for ourselves because, well, we want to trust the client.在其他换句话说, 我们创造这些漏洞为自己 ,因为,那么,我们信任客户端。

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.在年底,最哈克-免费的虚拟世界中很可能是一个完全开放源码的客户 ,向公众完全开放的议定书,并没有企图作弊,由客户端做任何重型起重机械。 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.事实上,在哇本身已采取了非常大的步伐,朝着这个与他们开放的UI系统,从而使官方认可的插件,其中做了不少事情,以前所做的骇客。 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.的原因,这可能会更安全的原因很简单,当终端是哑巴,你是被迫把SMARTS的服务器上-和服务器是一个容易得多,使安全。

The challenges, however, are not small if you want to really go whole hog and make everything driven by the server.的挑战,但是,不小如果你想真的去整猪和作出一切驱动的服务器。 Everything would need to be streamed.一切便须流。 Everything sent to the server would need to be verified.一切发送到服务器将需要得到证实。 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).和游戏设计者将须承担他们无法依靠在所有事情上,在视觉上作为一个游戏机械,也没有对任何与速度的认知过程(例如,所花的时间“计算出来, ”不会是一个好技工,因为很多事情可以卸载到用户端,提供即时反应时间) 。 It would all make for a far more asynchronous world.它将所有作出了更为异步世界。

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.但设计约束也可能推动设计聪明的游戏,而非游戏,可以完全复原知道那里的东西是,挑选重要的东西从crap ,去clicky - clicky对一些不够快。

A pipe-dream?管道的梦想呢? Probably.可能。 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.我们热爱我们的药草-狩猎,我们的大图形,我们lagless客户端运动,我们似乎很愿意把与被间谍就在换取知道,只有坏-驴黑客作弊,而不是可恶附近的每一个人。 ; )

*

[?] [ ? ]
You can follow any responses to this entry through the RSS 2.0 feed.您可以按照任何的反应,此项目通过2.0饲料。 Responses are currently closed, but you can trackback from your own site.反应目前关闭,但您可以跟踪从你自己的网站。

44 Responses to “How to hack an MMO” 44回应“如何哈克一mmo ”

Jump to reader comments » | Leave a reply » 跳转到读者的评论» | 留下一个答复»

Trackbacks & Pingbacks trackbacks和pingbacks
  1. Pinging The Services (How To Guidelines) wrote on 侦测服务(如何指引)写就

    to the library and experienced the Dewey Decimal System. 到图书馆和有经验的杜威十进系统。 He looked up all of his sources online and did a lot of cut-and-paste for his papers. 他翻查了他所有的来源和网上做了大量的剪切和粘贴为他的论文。 For some reason, this was acceptable to his teachers…. 出于某种原因,这是可以接受他的老师… … 。 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. 我想的第一件事,要尽在grahow入侵一mmogiven最近哈克向博客,也鉴于最近的消息,该解编前夕上网用户,它好像一个很好的时间,走的一些方法在这虚拟世界中获得砍死。 The interesting thing, of course, is that all the hacks 有趣的事,当然,这是所有骇客

  2. COPE: James Wallis levels with you » Koster-munger wrote on 应付:詹姆斯瓦利斯的水平与你» koster - •芒格写就

    [...] Raph Koster gives you a brief tutorial on how to hack MMOs. [ … … ] raph koster给你一个简短的补习就如何哈克mmos 。 [...] [ … … ]

  3. KVET.CH wrote on kvet.ch写就

    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 /埃默里四月18raph的网站»如何哈克一mmothere的程序已经观看舍监看着你,例如。 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. 与暴雪的回应是,使一批不同版本的舍监,因此它的难找到,并观赏;也-突击,加密的东西送回。 Of …的

  4. Where social software should go next — Habitat’s lessons (Leapfroglog) wrote on 凡是实行了社会化的软件应下一步-人居署的教训( l eapfroglog)写就2

    [...] Cheating might be of less concern to social software than to games (although there are exceptions, take Digg for example). [ … … ]作弊可能较少关注的社会软件比游戏(虽然也有例外,采取digg例如) 。 For those interested in more about this, Raph Koster recently posted an elaborate examination of hacking and cheating in MMOGs. 对于那些有兴趣更多地了解这一点, raph koster最近发布一个复杂的考试黑客和作弊的mmogs 。 [...] [ … … ]

  5. MMO Clerks » Koster writes “how to hack an MMO” wrote on mmo办事员» koster写道: “如何哈克一mmo写道:

    [...] blog post by game designer Raph Koster (of Ultima Online and now Metaplace fame) will tell you how! [ … … ]博客帖子由游戏设计师raph koster (最后在线和现在metaplace名利)会告诉你如何! [...] [ … … ]

  6. Massively wrote on 大量写就

    News items Have you ever wanted to walk through walls in MMO? 新闻项目你想步行通过墙壁在mmo ? How about telepathically sense the locations of all the good drops in a zone, or make invisible things very, very visible? 如何在医疗意义上的地点,所有良好的下降在一区,或使无形的东西,非常,非常明显的? Ablog postby game designer Raph Koster (of Ultima Online and now Metaplace fame) will tell you how! ablog postby游戏设计师raph koster (最后在线和现在metaplace名利)会告诉你如何! Admittedly, Koster doesn’t really go into much detail. 无可否认, koster并没有真正进入详细的。 Also, he’s trying to help developers avoid hacking problems, not giving inside secret tips to hackers. 另外,他的努力,以帮助开发,避免黑客入侵的问题,不给内秘密的秘诀,到黑客的攻击。 It’s 它的

  7. Làm th? làm次? nào ?? nào吗? hack m?t trò ch?i tr?c tuy?n MMORPG? 哈克米?吨trò你呢?我的TR ? c tuy ? n mmorpg ? - Market4Gamer wrote on -m arket4gamer写就2

    [...] client does something. [ … … ]客户端的东西。 Thú v? thú v ? ?? ? ? Các b?n có th? 您的b ? n có次? tham kh?o thông tin chi ti?t : http://www.raphkoster.com/2008/04/17…o-hack-an-mmo/ [...] 谭国焕的KH ? o thông田池钛?吨: http://www.raphkoster.com/2008/04/17 … O型哈克-一- mmo / [ … … ]

  8. Creators of gaming widget app hope to make ALT-TAB obsolete - Big Download Blog wrote on 创作者的游戏窗口小部件的应用,希望使按Alt标签已经过时-大下载博客上写道2

    [...] 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 ,而且它不会触发反作弊工具,如punkbuster或魔兽世界中的warden.the产品目前正处于测试阶段。 You can sign up for the beta or update [...] 您可以申请试用版或更新[ … … ]

  9. forums.twelvesands.com • View topic - How to hack an MMO wrote on forums.twelvesands.com •查看主题-如何哈克1 m mo写就2

    [...] 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. [ … … ]一些讨论,刚才为什么地球上我要把所有的用户请求参数,在url.http : / / www.raphkoster.com/2008/04/17/ho … ck-an-mmo/if您已登录到游戏,你基本上可以访问任何带刚操纵的网址。 If [...] 如果[ … … ]

  10. Raph's Website » How to hack an MMO wrote on raph的网站»如何哈克一mmo写就

    [...] 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 [...] [ … … ]如何哈克1 mmo 2008年4月17日(访问了5387倍)标签:作弊,无尽的,黑客,法律的线上世界的设计,大众设计,大众科技,哇[ … … ]

  11. Gameguard. gameguard 。 - Page 4 - AionSource.com wrote on -第4页- ai onsource.com写就 2 0

    [...] spawn location…) into the client. [ … … ]产卵的位置… … )到客户端。 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 [...] 作为raph koster是喜欢提醒脂肪酶,游戏客户端“是在手中的敌人” :每一次开发卸载1运作到客户端,为了节省的CPU周期为爱[ … … ]

Reader Comments 读者评论
  1. Todd said on 托德说,

    In EQ, the way this manifested was every mob in the zone was sent to the client.在情商,这体现的方式是每一个暴徒在开发区内被发送到客户端。 This meant a hack could make a minimap that showed every mob.这意味着黑客可以作出minimap显示,每暴民。 You could see repops at a distance.你可以看到repops在距离。 But wait, it gets worse.但等待,这进一步恶化。 You could also see everything they carried.您也可以看到的一切,他们进行的。 So you could cherry-pick the good loot in advance.所以你可以用樱桃挑选良好的掠夺在前进。

    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.仍然是一个问题,他们仍然发送下跌吨的数据,但是您可能再也看不到一切,他们携带,只有他们挥舞项目(和公正的图形,它显示) ,有时,如果他们携带一个光源。

  2. Kriss said on kriss说,

    Yup, all good and so hard to get people to understand these facts.烨,所有的好,所以很难让人们了解这些事实。 Players are always, “But its on a computer what are you lazy?球员都是, “但它的一台计算机上什么是你懒惰? just make cheating impossible!”刚才,使作弊是不可能的“ !

    Personally I’ve pretty much come down to the idea that an audit type system is the only thing that makes sense.我个人已经非常下来的思想,审计类型系统是唯一的一件事,是很有意义的。

    Which is more of a social fix.这是更多的社会修补程序。 Don’t try and make cheating impossible, just make it detectable.不要尝试,使作弊是不可能的,只是它探测到。 This is easier and cheaper.这是更容易和便宜。

    Don’t even try and detect it in real time.甚至不尝试和侦查它在实时性。 Just take replays and audit them for cheats at a later date should people complain or due to obvious triggers.只需重放和审计他们的作弊在稍后的日期应人抱怨,或因明显的诱因。 Again easier and cheaper.再次更容易和便宜。

    Make the response to cheats more of a social slap on the wrist.作出回应欺骗更多的社会打对手腕。 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).不采取它,认真,公正扇他们的耳光下来带走点,奖品,羞辱他们等,它从来没有作出任何意义,甚至夺去他们的帐户中(除非您计划出售他们的一个新的) 。

    Apart from anything else trying to build a world where you can’t do anything wrong is a bit dull.除了从其他任何试图建立的世界里,你可以不会做任何错误的是一个有点沉闷。

    I’ve been toying with the idea of removing the need for much of a central server.我一直在玩弄的想法不再需要大量的中央服务器。 Turning it more into a central audit system that solidifies when necessary the otherwise shared hallucination.把它更成为一个中央审计制度,巩固必要时,否则共享幻觉。 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.大多数人都没有作弊,毕竟和只要你有计划回滚和撤消行动,我有信心可以摆脱与点对点数据交换。 Much of the auditing can even be done client side, with clients flagging other clients as suspicious.大部分的审计,甚至可以做客户端,与客户不振的其他客户的可疑。

    The total client side cpu power will always dwarf the server side.总客户端CPU功率将永远矮服务器端。

    It just takes some clever game design.它只是需要一些聪明的游戏设计。

  3. BuschnicK said on buschnick说,

    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.对我来说,后玩游戏,作为拟作一段时间,中继游戏黑客和自动化,是到目前为止,更有趣的比原来的游戏体验。 Programmers, by definition, are keen on automating boring, repetitous and dumb tasks.程序员,顾名思义,热衷于自动化,枯燥, repetitous和哑巴的任务。 This unfortunately describes 75% of most online game gameplay.这个不幸的告诉您的75 % ,大部分在线游戏的游戏体验。 The one who endures the boredom longer and spends the most time in the game gets the biggest rewards.一个谁下去了无聊时间更长,花费最多时间的在游戏中得到最大的回报。
    So how do you prevent cheating?所以你怎么防止作弊呢? Reward actual skill over forbearance, make the core gameplay interesting enough so players will feel they are missing out if they are cheating.奖励的实际技能超过忍,使核心有趣的游戏足以使球员会觉得他们是失踪了,如果他们作弊。 No one sends a bot to see a movie for him…没有人发出了一个建造,营运及移交,以看电影为他…
    Also, make the interface of the game as streamlined as possible.同时,使界面的游戏,尽可能简化。 Lots of the hacks/cheats are actually workarounds for shortcomings in the interface.地段的骇客/作弊,其实是为替代的缺点,在界面。

    Then again, one of my clients is http://www.zynamics.com so I’m kinda biased然后再之一,我的客户是http://www.zynamics.com因此,我kinda偏颇 ;-)

    Anyways, good post - kind regards, anyways ,良好的邮政-的亲切问候,

    Sören sören

  4. Shalkis said on shalkis说,

    A small note: FPS games have performed a lot of culling, starting with Quake.一个小注:新鲜粮食店,游戏表现了很多扑杀,开始与地震。 ID used a concept called a vismap, or a visibility map.编号使用的一个概念,所谓的vismap ,或一能见度地图。 Basically, the map designer calculated in advance which parts of the map are visible from each location.基本上,地图的设计计算,在预先的哪些部分在地图上是可见的,从每个位置。 However, the main reason for calculating vismaps was not to deter cheaters, but to speed up rendering.不过,最主要的原因为计算vismaps不是以遏止作弊行为,但为了加快渲染。 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.有没有任何理由,使这堵墙的5走廊和七室远离你,因为有没有办法你可以看到它。 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.所有服务器需要做的是把vismap到一个新的使用及检查是否球员们的地区,不能被其他选手。

  5. Mox said on 的MOX说,

    As Raph says, people move very fast in FPS games.作为raph说,人民的动议非常快,在新鲜粮食店的游戏。 What may be invisible in one frame may become visible in the next, and in the high-stakes Quake 3 Arena world, frames matter .可能是无形的,在一帧有可能成为可见的未来,并在高风险的地震三舞台上的世界,框架的问题 Also, you have to consider the 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.保持事物快和反应时,你不能看到任何人没有帮助时,所有的球员在比赛中是在同一个房间,爆破远离对方。

    Static items can be filtered properly, however.静态项目,可以适当过滤,但。 For example, all the weapon and ammo pick-ups.举例来说,所有的武器和弹药回升的UPS 。 The server doesn’t need to tell you what they are up to until your client is in danger of seeing them.服务器并不需要告诉你什么,他们最多,直至您的客户是在危险的看到它们。

    Interesting thing about the resource-collection example that Raph uses: contrast LotRO and WoW craft collection with SWG craft collection.有趣的事情,关于资源收集举例说, raph用途:对比lotro和哇工艺的收集与号船收集。

  6. Raph said on raph说,
    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.仍然是一个问题,他们仍然发送下跌吨的数据,但是您可能再也看不到一切,他们携带,只有他们挥舞项目(和公正的图形,它显示) ,有时,如果他们携带一个光源。

    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.我几乎肯定我曾经看到一个入侵用户端显示的内容,该暴徒'下降,以及后来改用不产卵下跌,直到暴徒被打死。 It may have been during the beta, though.它可能已被试用期间,虽然。 (We were at Origin then, and someone on the UO2 team was analyzing the packet stream? I don’t quite recall). (我们在原产地,然后,有人就uo2小组分析数据包流?我不太记得) 。

    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.对我来说,后玩游戏,作为拟作一段时间,中继游戏黑客和自动化,是到目前为止,更有趣的比原来的游戏体验。 Programmers, by definition, are keen on automating boring, repetitous and dumb tasks.程序员,顾名思义,热衷于自动化,枯燥, repetitous和哑巴的任务。

    Designers shouldn’t be.设计师不应该。

    A small note: FPS games have performed a lot of culling, starting with Quake.一个小注:新鲜粮食店,游戏表现了很多扑杀,开始与地震。 ID used a concept called a vismap, or a visibility map.编号使用的一个概念,所谓的vismap ,或一能见度地图。 Basically, the map designer calculated in advance which parts of the map are visible from each location.基本上,地图的设计计算,在预先的哪些部分在地图上是可见的,从每个位置。 However, the main reason for calculating vismaps was not to deter cheaters, but to speed up rendering.不过,最主要的原因为计算vismaps不是以遏止作弊行为,但为了加快渲染。 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.有没有任何理由,使这堵墙的5走廊和七室远离你,因为有没有办法你可以看到它。 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.所有服务器需要做的是把vismap到一个新的使用及检查是否球员们的地区,不能被其他选手。

    Right, good point.正确的,良好的点。 I said:我说:

    Even on the client, we do culling, so that we don’t draw everything in the dataset the client knows about.甚至在客户端,我们做扑杀,使我们不借鉴一切在DataSet的客户端知道。 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 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.在该案件有什么您要描述-v ismaps和其他形式的集体扑杀,是不是所有的帮助,为遏止作弊,因为“所有的球员这个问题: ”是谁想要经营哈克对无论如何。 : )

    I know you know this, but for the sake of others reading the 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).方式想一想,这是-你有一个静态数据集( M AP)和一个动态的,快速移动的D ataSet(物体一样的球员,车站,子弹) 。

    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.地图是预先缓存,这意味着客户端知道所有的-这是可以a utomaps如果它想,它可以告诉您的最佳路径,它可以开刀的艺术。 But it can also optimize what to render.但它也可以优化什么使。

    The dynamic stuff has the potential to move very fast, so the server tells you where all of it is at any time.动态的东西有可能提出非常快,因此服务器告诉你所有的,这是在任何时间。 After all, it might round a corner, or you might round a corner.毕竟,它可能全面的一个角落,或者您可能一轮的一个角落。 This doesn’t mean the client is rendering it, but it does mean it knows about it.这并不意味着客户端渲染 ,但它意味着它知道它。 That is why I put “visible” in quotes.这就是为什么我提出的“有形”在引号中。

    The renderer then does render culling, which is decide which items to draw.该渲染那么令扑杀,这是决定哪些项目,以抽奖。 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.黑客可以改变如何的东西,令,并考虑到一个事实,即客户端,每个人都知道的是,它可以把事情想提请纲要他们对住房和城市发展部,让你可以“看” ,通过墙壁。 Or autoaim at them, lining up the shot before they come out from behind the wall.或autoaim他们,衬砌了开枪之前,他们出来,从背后的墙。

    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.像vismap不复杂的动态扑杀;相反,它说: “这个家伙,基本上是在一个不同的建设”或“这个家伙,基本上是在另一端一个长期的曲折的走廊” -有没有办法为其他人接触到的能见度在任何合理的时间内。 So the map gets chopped up into network update areas.因此,地图得到斩到网络更新的领域。 “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. “当在一室,告诉我关于室B动态的东西,但不是室C的东西” ,这是基本相同情商不告诉你约的东西,在未来区等。

    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.唯一的整体解决方案,就是要做好路线,视线网络扑杀,不过,这是双方CPU密集型,也将需要来回到服务器,这使得极端缓慢。 Most MMOs settle for radial network culling.最mmos解决径向网络扑杀。

  7. Richard Bartle said on 理查德bartle说,

    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 > “动态的东西有可能提出非常快,因此服务器告诉你所有的,这是在任何时候

    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.它的可能发送此信息在一个加密的形式,但只能发送解密密钥时,客户有权才能看到它。 It doesn’t have to be heavy duty encryption, just enough to make trying every key in a split second impractical.它没有被重型加密,只要足以使尽一切努力进行的关键在一个分裂的第二个不切实际的。

    I first saw this proposed on MUD-DEV, but haven’t seen it used in action.我第一次看到这个建议对泥- dev的,但还没有看到它用在行动上。 I suspect that even a single UDP exchange with the server may introduce too much lag.我猜想,即使是一个单一的UDP的交流与服务器可能会引入太多的滞后。 Using something similar for precached client-side material ought to be viable, though.使用一些类似precached客户端的材料应该是可行的,虽然。 The decryption algorithm may be in the hands of the enemy, but that doesn’t mean the decryption key has to be.该解密算法,可在手中的敌人,但这并不等于解密密钥要。

    Richard理查德

  8. Raph said on raph说,

    Very true — I had forgotten that came up on MUD-Dev, actually.很真实-我忘记了来对泥- d ev的,其实。 But yes, a token exchange of hashes or keys in classic key exchange style could be done.但是,令牌交换哈希或钥匙在经典密钥交换的作风可以做。

    I don’t think that for real-time apps an on-the-fly key exchange is practical — the roundtrip time could be too much.我不认为这为实时应用一对- -飞密钥交换是可行的-往返时间可太多。 But it’s worth exploring in the fashion you suggest.但值得一提的探索,在时装你建议。

  9. Shalkis said on shalkis说,

    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. 1 vismap不能阻止你从跟踪一个球员谁的只是运行到房间您在,但它可以防止服务器告诉你,他拿起一个重要powerup是由前室。

    That decryption-keys-sent-on-demand sounds interesting.即解密密钥发送-关于供求听起来有趣。 However, the preloaded encrypted packet needs to be padded to a predetermined size and it’s transmission time needs to be randomized.不过,预装加密的数据包,必须加垫,以一个预定的大小和它的传输时间,需要加以随机。 While you may not be able to decode the contents, the act of transmitting encrypted data can be telling in itself.而您可能无法破解的内容,该法案传输加密的数据可以告诉在本身。 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.如果您永远得到一包一定规模的2秒钟之前,龙出现时,您很快就会学会隐藏,每当这种情况发生。

  10. Spaz said on spaz说,

    These are serious problems now, but will they not eventually go away as bandwidth and server hardware get better?这些都是严重的问题,现在,但他们会不会最终消失,因为带宽和服务器硬件得到更好的呢?

    Do you think that the demands of things we want to do are growing faster or slower than the abilities of the physical infrastructure?你是否认为要求的东西,我们想做的事是增长速度快或慢的能力,有形基础设施?

  11. Michael Chui said on 迈克尔翠说,

    These are serious problems now, but will they not eventually go away as bandwidth and server hardware get better? 这些都是严重的问题,现在,但他们会不会最终消失,因为带宽和服务器硬件得到更好的呢?

    They can, but most of these improvements are being put to use in driving bigger and better features, rather than locking down security.他们可以,但大多数的这些改善现正投入使用,在驾驶更大更好的功能,而非锁定安全。 It’sa resource allocation thing, and security doesn’t make you any money.这是资源分配的事,与安全不作你的任何款项。 It just keeps you from losing too much.它只是让您可以随时从失去太多。

    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.”通知如何每一个提议的解决方案,到目前为止,隐含的说法, “这并不需要很大努力。 ”和每一个漏洞来自“ ,这使得更好的体验” 。

  12. Steven "PlayNoEvil" Davis said on 史蒂芬“ playnoevil ”戴维斯表示,对

    The other option is to pre-load multiple data sets or assets and then simply point to the right one when needed.另一种选择是预先载入多个数据集或资产,然后简单点,以正确的,必要时。

    In many cases you can stop tampering by using a keyed hash function (or MAC) instead of encryption.在许多情况下,您可以停止干扰用键控散列函数(或Mac ) ,而不是加密。 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).这有利于该服务器可以“欺骗” ,而不是检查陆委会代码所有的时间(巧合的是,我的编码之一,这些权利现在) 。

  13. Swift Voyager said on 迅速旅行者说,

    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.我个人的格言写作时的商业软件,供内部使用超过一个LAN或Intranet :您可以尝试猴-证明您的软件,但一只猴子仍然是猴子。

    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”.我们有大量的应用而设计,供内部使用和控制,因为我们各方面的使用,我们可以任意的声明一样, “此网站需要在Internet Explorer XX版或更高”或“屏幕分辨率的XXXXX由XXXXX或更高的要求鉴于此页“ 。 It saved a lot of time in testing and customizing.它保存了大量的时间在测试和定制。 Later, someone got the bright idea that certain outside clients and vendors should have access.后来,有人得到好主意,某些境外的客户和供应商应该有机会。 “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.和这并不甚至开始涉足领域的开放,公众查阅那里的人去刻意打破您的软件只是为了娱乐。 I can’t imagine having to handle that kind of problem without having full time people on staff who are dedicated experts.我无法想象有处理这样的问题,而不全职的人对工作人员谁是专门的专家。 What a nightmare.什么一场噩梦。

  14. Shalkis said on shalkis说,

    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.和这并不甚至开始涉足领域的开放,公众查阅那里的人去刻意打破您的软件只是为了娱乐。 I can’t imagine having to handle that kind of problem without having full time people on staff who are dedicated experts.我无法想象有处理这样的问题,而不全职的人对工作人员谁是专门的专家。 What a nightmare.什么一场噩梦。

    Security in general does require a specific mindset .在一般的安全是否需要一种特定的心态 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.你必须不断地问自己: “怎么这可以颠覆? ”和“什么损害可能我这问题呢? ”一旦你进入这心态,一切如下。

  15. Mox said on 的MOX说,

    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.与尊重,以加密的数据发送到用户端speculatively ,解密,只有当它成为适当的,在我看来,它可以是有益的快取记忆体潜在相关的数据在客户端。 For example, the stealther problem in Dark Age of Camelot.举例来说, stealther问题,在黑暗时代的洛特。 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).有整个桩的数据,你需要发送到用户端,以获得它充分代表一个数字,在一个图形mmo一样, daoc -种族,自定义外观选择,有形设备-但你不想“通风报信” 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

    Raph, I and the English language thank you. : )

  25. Ola Fosheim Grøstad said on

    Raph, you need to push a lot of data for that to be a problem. Here is a random page which suggests that cryptos takes less than 100 cycles per byte. A modern CPU can do billions of cycles per second…

    You might be thinking of public key encryption? Authentication rather than pure symetric encryption? Like SSL? I still think the server is on the loosing end, but I could be wrong.

  26. Ola Fosheim Grøstad said on

    (Turns out SSL only uses public key for setup and symmetric ciphers for encryption?)

  27. Steven "PlayNoEvil" Davis said on

    @Solok - the cryptographic system would have a unique key for each client (SSL does this as a default). Therefore, unless the client willingly shares its key with another, the server can tell them apart and it is cryptographically hard for a client to spoof another.

    @Ola Fosheim Grøstad - people rarely use public key for regular encryption, they use it for establishing a key because it is so computationally intensive.

    @Raph - It would seem surprising to have the computation problem for encryption on the client side. After all, they only have to encrypt one data stream while the server has to encrypt N times the data streams (one for each client with whatever computational overhead is associated with each).

    $Richard - Actually with encryption, the hardest problem is to protect data for a second. Also, it is distressing as to how willing people are to work at attacking these systems.

    #Michael - “Not Losing You Money” may be the difference between success and failure. There have been several online games that have been brought to their knees by security problems.. security (or lack thereof) is part of the game experience.

  28. Trend said on

    The last game architecture you describe already exists and it’sa quite successful MMO, especially if you consider it’sa no-monthly-fee MMO. This is Guild Wars, created by ArenaNet (with 3 guys from the battle.net platform originally used by Blizzard) and distributed by NCsoft. The client only has the static files (textures, maps, etc.) and they’re updated by streaming in the background (the whole thing with 3 campaigns and one extension is in one file and around 3.5Go so as not to cause problems with filesystems). All the dynamic stuff (movements, game mechanics, account & characters information) is on the server, sent when appropriate to the client. The only hack on the untrusted client is modification of the UI, and there’s only been one major hack on the server side (which allowed duping of items), with small hacks that give a very small in-game advantage.

    BTW there’s an interesting book on the topic, but mainly focused on WoW: “Exploiting Online Games” by Hoglund and McGraw (http://www.exploitingonlinegames.com/). My personal theory is that these security attacks are only a “first level” of