我教Sega做遊戲之淺談Project Sekai 排位賽中可以新增的反作弊手段分析
於3月30日開啟的Project Sekai排位賽測試賽季中,不負眾望地出現了大批掛哥。Sega已經開始封禁部分賬號,但是單純封號顯然並沒有用。
須知對於任何一款遊戲,反作弊唯一目標就是極大地提升作弊成本,使其顯著地高於作弊收益。對於一款音樂遊戲而言,開啟排位賽約等於開啟外掛質檢大賽,因此我認為Sega客觀上是有反作弊的想法的。在此,我將提出若干條建議並分析其成本和有效性。這篇文章將在近期翻譯併發上藍鳥。
1.禁止模擬器/root機器/越獄機器進入排位模式
成本:啟動時新增若干檢測程式碼,基本無感知。
有效性:可以有效阻止模擬螢幕點選指令碼。但是模擬器/root/越獄檢測是移動端安全攻防的重要一環,如果技術不能超過對手,那麼約等於不存在。
2.新增點選檢測,將所有打擊note的動作記錄下來
成本:在打擊的時候增加了RAM讀寫負擔,可能會對低配置裝置產生一定影響。產生本地打擊檔案約每次遊玩20K,對於一個每週都更新幾十M資料的遊戲可以忽略不計。不上傳到伺服器而是僅上傳其校驗碼,並且限制條數,需要驗證時再從裝置上上傳以供分析。
有效性:可以識別直接用簡單指令碼的作弊者。但是可以被指令碼新增擾動,模擬正態分佈騙過。
3.新增隨機譜面模式,並在高段位(如黃金以上)強制啟用。
成本:一個本地的譜面生成器,在排位開始前通過伺服器傳送的種子生成臨時譜面。一個好的譜面生成器效果並不會惡化打歌體驗,並且添加了排位賽作為一個競技模式的挑戰性和對初見力的考驗性。伺服器需要儲存隨機數種子,由於短時間(比如一分鐘)內開啟的排位賽可以共享同樣的種子,所以儲存成本可以忽略不計。
效果:結合點擊檢測和模擬器檢測,直接斷絕了固定指令碼的活路,而把可行的作弊方案壓縮到了實時對螢幕識別並生成物理打擊序列這一條。這樣作弊成本已經非常非常高了,需要一個好的顯示卡+一套外接物理輸入裝置。
而且這個模式本身也足夠有趣,可以水一期遊戲機能更新。
但是 但是 但是
在遊戲底層程式碼被完全破解的情況下,以上手段通通沒有用,畢竟包都發布到公開了,理論上裡面任何程式碼都可以被裁剪或者修改。然而現在sega根本沒做好籤名、完整性校驗和程式碼強混淆,人掛哥拿著假簽名的包照樣登入遊戲,實在是很呃呃。據我所知,pjsk就是unity下用il2cpp直接編譯出來的,沒做任何混淆,沒任何技術手段加密,global-metadata.dat往公開軟體裡一放,底褲都出來了。
當然,如何混淆,和反編譯之間的攻防又是另一回事了,但是總不能什麼都不做吧。
Sega再擺下去,這排位賽就是笑話了,現在已經一堆高水平選手在推上陰陽怪氣了,希望大家去推上多給給壓力。當然,現在還在只是測試賽季,還要看五月份(大概)的project sekai S1情況如何。