2013-10-18 247 views
2

我正在構建一個連接到服務器的客戶端程序。這個客戶端程序需要將源代碼作爲授權的一部分提供給用戶(而不是選項)。但是,我需要確保當用戶使用該客戶端程序連接到服務器時,它使用原始代碼運行,並且未被更改和重新編譯。驗證客戶端/服務器握手中的客戶端二進制文件

有沒有辦法聯繫到他們正在使用的程序的不變版本的服務器中檢查?

回答

2

不,沒有辦法做到這一點。

你基本上遇到「受信任的客戶」的問題。客戶端代碼在用戶的PC上運行,用戶可以完全控制該PC。他可以更改磁盤上的程序字節,甚至可以更改內存中的字節。如果您試圖對代碼執行散列或校驗和,他可以簡單地更改執行驗證的代碼,並使其返回「未修改」。

您可能會嘗試對惡意用戶有點難,但沒有實際的方法來實現您的願望。

2

你所描述什麼是視頻遊戲行業一直戰鬥在過去十年半一個問題。簡而言之,如何防止用戶修改客戶端(在他們的情況下,通常是爲了防止作弊,儘管也是出於版權原因)。如果這種努力教會了我們什麼,那就是防止對客戶進行修改是一場永不間斷的軍備競賽,永遠不會取得勝利。鑑於此,請勿嘗試。

按照標準的客戶端 - 服務器假定客戶端是在敵人的手中,不能被信任。根據這個假設建立你的服務器端防禦,你會沒事的。

+1

我同意。你無法保護用戶免受他人的傷害。但至少要簽署申請表,以保護他們免受他人的傷害。 –

+0

即使努力阻止您的遊戲被破解並不科學安全,它至少會爲您爭取時間。希望足夠長的時間可以在遊戲的初始銷售期間(「商店保質期」)或第一次補丁的時間週期內(這使得它更難)。一年後,大多數客戶將會玩一些其他遊戲,而黑客將會繼續前進。 – selbie

0

這是非常非常困難的,也許不值得。但是如果你有興趣追求它,你必須開發一些由Windows核心代碼簽名和監控的東西。

一對夫婦的主題,將定位你的問題的範圍:

Protected media path

Driver signing

兩個媒體設備和設備驅動程序數字由製造商簽署,由Windows連續監測。如果任何事情發生,它會被關閉(這不是技術術語)。看起來非常令人生畏。我不知道該技術是否適用於不是設備驅動程序且與DRM無關的桌面軟件。

祝你好運!

相關問題