我正在開發一個小型的網絡Flash遊戲。我有我自己的服務器內置C/Linux,我通過閃存插座連接到服務器。我在辯論是否將重負載的遊戲邏輯放在客戶端或服務器上。主要擔心的是有人盜用了代碼並破壞了其他人的遊戲。動作腳本代碼的可觸發性如何操作
即使我在服務器上放置了儘可能多的邏輯,如果有人可以破解代碼並找出發送到服務器的消息,似乎不可能阻止所有入侵。
我應該如何處理這個問題,以及我應該如何擔心AS3黑客?
我正在開發一個小型的網絡Flash遊戲。我有我自己的服務器內置C/Linux,我通過閃存插座連接到服務器。我在辯論是否將重負載的遊戲邏輯放在客戶端或服務器上。主要擔心的是有人盜用了代碼並破壞了其他人的遊戲。動作腳本代碼的可觸發性如何操作
即使我在服務器上放置了儘可能多的邏輯,如果有人可以破解代碼並找出發送到服務器的消息,似乎不可能阻止所有入侵。
我應該如何處理這個問題,以及我應該如何擔心AS3黑客?
2年前,我在一次關於保護Flash遊戲的會議上做了一次演講。 Check out the slides。
是的,很容易反編譯swf並根據需要進行修改。風險是相當低的,但如果有一些可能的鉅額金錢獎勵,那麼是的,我會小心。
所以,我的建議是:
編輯:我想補充一點。如果服務器依賴於客戶端的遊戲狀態,您還可以使用Charles之類的工具代理,檢查並修改請求。有人可以使用此工具在請求上設置斷點,然後在將結果轉發給服務器之前修改結果。它比反編譯和修改swf更容易。
教訓是,你永遠不應該依賴擁有一個誠實的客戶。
謝謝你們。但即使我將所有的邏輯放在服務器上,所有人都必須做的是找到我的客戶端發送給服務器的消息,並且可能會造成嚴重破壞。我不知道有什麼辦法可以避免這種情況,是嗎? – 2012-03-09 03:29:16
是永遠不會相信客戶始終認爲客戶端應用程序試圖欺騙。驗證所有數據包。無論如何,因爲這是一場遊戲,客戶應該是「愚蠢的」。客戶端沒有遊戲邏輯。爲預測目的而鏡像一些邏輯很好,但要確保服務器是負責人。 – Feltope 2012-03-09 10:38:40
這是迄今爲止最好的答案之一。我已經看到了一個完全可執行的代碼,可以用於C#,Java和Delphi代碼的項目反編譯器,但這並不意味着我們不應該停止編寫應用程序。只要遵循最好的反黑客慣例,一切都會好的。畢竟一個難以在飛行中被編譯的編譯文件比完全應用程序源代碼(html-js項目)要好得多,它甚至可以在飛行中被忽略 - 不是它:) – 2012-03-11 18:00:23
Flash代碼非常容易被破解。我可能是錯的,但我認爲當你反編譯swf時,它是一個完整的反編譯 - 它給你的變量和一切的原始名稱。在遊戲運行時使用Cheat Engine等工具修改內存也相當容易。除非你故意混淆你的代碼和數據結構,否則我建議把大部分計算放在服務器上。
基本上每個代碼都可以被黑客入侵,意味着它很容易在飛行中被緩存。 – 2012-03-11 17:57:15
「hackability?」的指標是什麼? – 2012-03-09 02:15:18
您至少可以混淆您的代碼,有幾個應用程序可以做到這一點。 – Eric 2012-03-09 03:05:37