2009年8月16日 星期日

談facebook遊戲掛機與作弊-序

認識我的都知道,我打死不玩線上遊戲。從國高中的經驗看來,我絕對擁有優良且純正的練功血統,會很拼命的玩遊戲,當線上遊戲越做越華麗,我只能壓抑內心的渴望這樣XD 取而代之的我會玩小遊戲,但是現在小遊戲實在是越做越精美,一點也不小,要全破都要十個小時起跳,這點也真讓人頭痛。

兩年前我碩一的時候社交網路正夯,facebook當然是要加入玩玩看啦!不過那個時候朋友不多,自然也不覺得他到底紅在哪裡,直到這半年來朋友越來越多,我才發現這個所謂的社交平台是多麼的吸引人,從技術上看來,facebook也有很多非常不錯的設計!有一個寫網頁程式多年、在網路上很多被轉錄教學文的朋友曾經跟我說過:『幹!facebook怎麼能方便成這樣,方便到我的隱私都給他也沒關係~』。我從那個『幹』就知道這個網站成功了,世界上除了無名小站,還有哪個網站會被罵一聲幹呢?

我在facebook上面倒也沒有做很多事情,偶爾看著很多有趣的應用程式,研究一下他的設計和概念:我發現有些應用程式真的可以很快速的認識人或拉近彼此之間的距離,難怪有些人一整天可以宅在上面(這是在說我嗎?)。不過我始終堅信著自己的原則:『不玩遊戲』,因為我真的很容易著迷,即使是很爛很廢的遊戲。這件事情在五個月前破了局,一個神祕學弟跟我說:『少林,要不要玩這個遊戲,不花時間,你只要加入就可以了,朋友會自動帶你練』。不花時間四個字果然是扎實的一槍,讓我中彈後還全身蘇麻,誰知道這一跳進去,就是一個大坑阿!而且這段時間正是碩士的最後半年,哭哭!

『facebook是全世界最大的網路遊戲』,我真的只能很感慨的這樣說。最熱門的遊戲寵社、餐城,還有最近台灣很紅的農場系列,登入人數是上億人,億耶!魔獸世界可以有上億會員嗎?這數字太恐怖了。

沈淪的不只是有我,login團隊的大家也都沈進去了,只能說非常意外,因為大家真的原本都跟我有一樣的高尚情操,說不玩就不玩,搞到最後login團隊變成外掛團隊,很多異想天開的功能竟然還實作出來,中間還有某款遊戲的某一版外掛可以跟我們的service連線,傳簡訊通知最新狀況,讓你在外面也能夠不用擔心自己沒有掛到唷!太智障的功能。

會寫下這篇,是因為這半年來除了論文之外,有花時間研究的就是這個東西,算是做點紀念,也為login團隊的短期分開留下些回憶。本篇並不是要鼓勵大家作弊或用外掛,我們也堅持不影響整個遊戲的公平性,即使擁有誇張的power,還是不會影響朋友們玩遊戲的樂趣!我們只是幾個技術人,從玩的角度,切換到設計的角度,接著分析遊戲流程,尋找解決方案,甚至探討安全性。從這樣多角度去檢視每一款facebook的遊戲,從遊戲概念學習人家的成功之道,黑箱測試去猜想別人程式是怎麼寫的,封包分析研究每一款遊戲的資料傳輸,這些過程都學到了很多東西!

我們不是專業寫外掛的,會開始寫只不過是因為facebook是網站,跑的是HTTP,好實作而且工具又多。這樣玩下來,我覺得這跟真的製作線上遊戲的外掛差不多了,只是比較簡單,要分析的要解決的東西也遠比現在市面上的遊戲少很多很多。即使如此,在這樣簡單的遊戲簡單的架構下,還是有很多有機可乘的地方,可以讓我們掛著練功,那更複雜的遊戲不就有可能有更多機會?最近在看HIT2009的投影片,其中Dark的結論真是深得我心,『要保護遊戲是件不容易的事情』。我深深的覺得那些遊戲開發者很了不起,因為我沒有辦法做出遊戲這樣龐大架構的東西,生一隻大象跟拿跟針戳大象,所花費的cost差太多了。(說到HIT就要提到這屆駭客年會orange學弟和agos學弟分別拿到第一名和第二名,被請了兩次大食團,沾光阿XD)(順便感嘆orange才高二,我高二連程式都不會寫XD)

接下來會從模擬真人行為開始介紹起,有時候我們會碰到遊戲叫你做一些很繁瑣的動作,點點點,這個過程相當浪費時間,明明只是個簡單的邏輯。所以就很希望程式幫忙處理這樣的動作。程式幫忙模擬人類行為大致上還有兩種分類,一種是程式模擬人使用瀏覽器,一種是程式直接就把瀏覽器功能也包進去,直接處理送HTTP封包。從伺服器的角度看來,這兩種方式最大的差異在於如果要抓掛機的行為,前者不容易被抓到,可以模擬的很像不睡覺的真人,後者不但要模擬人還要模擬瀏覽器,花費的力氣很多甚至還模擬的不像。不過後者還是有必要存在的,現在比較熱門的遊戲幾乎是flash做成的,而flash game很難從瀏覽器去操控,所以解決方案通常都是分析HTTP封包然後學著他做,也就是後者。一般來說,我沒有看過有facebook遊戲在抓這種行為,畢竟這是社交平台上面的遊戲,遊戲是其次,社交的功能才是主要功能,一群朋友可以在上面聊天、討論、一起玩遊戲闖關,這才是真諦!以下會分成『藉由瀏覽器掛機篇』和『模擬瀏覽器掛機篇』來介紹。

再來,就跟線上遊戲一樣,有程式代練行為,也會有洗錢阿!洗經驗!洗道具這些事情。facebook有些遊戲的使用者太多,不可能什麼事情都由伺服器來做,於是有些動作就會交給使用者端去處理,這也就是可以作弊的地方;或是有些遊戲設計不太精良,造成bug出現,最後一篇『修改篇』會探討這些問題。注意:『修改篇』主要是在研究不同遊戲的模式、架構,他們背後潛在的危險是什麼?這些危險伺服器是不是可以承受?本篇不談論怎麼修改,畢竟facebook上的遊戲太多,而且國內外都有好多高手教學文,他們真的很強勁!所以想看那些的就自行去找囉!

--
希望一個禮拜能寫出一篇XD

0 意見:

張貼留言