2010-12-23 95 views
15

它可能與其他問題重複,但我發誓我搜索了很多並且在StackOverflow.com搜索了很多,而且我找不到我的問題的答案:哪裏可以存儲軟件保護的保護試用信息目的

在C#.Net應用程序中,存儲保護試用信息的位置,如過期日期,使用次數?我知道,所有類型的軟件保護策略都可以被高級黑客破解(因爲他們幾乎總是可以繞過到期檢查步驟)。但是我現在要做的只是以一種合理的方式來保護它,以便「普通」/「高級」用戶不能搞砸它。

OK,爲了證明我用Google搜索,搜查了很多在StackOverflow.com,我列出所有可能的戰略,我得到:

1.註冊表項

首先,一些用戶可能無法訪問甚至讀取註冊表。其次,如果我們將保護試用信息放在註冊表項中,用戶可以通過比較軟件安裝前後的差異來找到它的位置。他們可以簡單地改變它。

好的,你可能會說我們應該加密保護試用信息,是的,我們可以做到這一點。但是,如果用戶在安裝之前更改其系統日期呢?

好的,你可能會說我們也應該放一個最後使用的日期,如果有什麼不對,最後使用的日期可以作爲保護指南。但是,如果用戶只是卸載軟件並刪除與此軟件相關的所有註冊表項,然後重新安裝軟件呢?

我不知道如何處理這個問題。請幫忙。

普通文件

首先,有一些地方把純文本文件:

  • 2.A)下軟件的安裝路徑
  • 2.B)配置文件,一個簡單的XML文件

同樣,用戶可以卸載軟件並刪除這些純文件,然後重新安裝軟件。

- 在軟件本身軟件本身

如果我們把保護審判信息(到期日期,我們不能把使用次數的數量),它仍然易受我上面提到的情況。而且,這樣做甚至不是很酷。

- 試用產品密鑰

它就像一個許可的過程,也就是我們把試用信息到一個RSA簽名的字符串。然而,用戶嘗試使用該軟件需要太多的步驟(他們可能會失去耐心):

  • 4.a)用戶下載軟件;
  • 4。b)用戶通過提供用戶名(或電子郵件)或硬件信息發送電子郵件來請求試用產品密鑰; (c)服務器收到請求,RSA簽名併發回給用戶;
  • 4.D)用戶現在可以使用它的(到期日的情況下&使用次數的數量)。

現在,服務器記錄了用戶的用戶名或硬件信息,因此用戶將被拒絕請求再次嘗試。收集硬件信息是否合法?

總之,用戶必須做一件額外的步驟(要求試用產品密鑰),不僅僅是因爲使用該軟件,這是不冷靜(思考自己作爲一個用戶)的嘗試。

注:這個問題是不是發牌,相反,它是關於在哪裏存儲試用信息。試用期過後,用戶應該要求獲得許可證(CD-Key/Product-Key)。我將使用RSA數字簽名(綁定到用戶設備)

P.S:我的軟件將被靶向中國市場,其軟件市場與我們不同。大多數中國人,他們只買硬件,他們通常不買Micosoft Windows/Office等軟件(他們只是使用盜版副本)。然而,一些針對特定領域的專業軟件,研究人員仍然願意購買它,如果沒有破解版或破解版非常難以安裝。

+0

+1表示完美。 – 2012-01-24 07:30:41

回答

13

任一選項1(純註冊表項)或2(純文本文件)是就好了。這是我的推理:

  • 標準特權用戶確實擁有註冊表的讀取權限。如果他們不能讀你的鑰匙,那麼別的是錯的。標準特權用戶對註冊表沒有寫權限,但這並不重要,因爲他們也無權首先安裝軟件。換句話說,無論用戶是否有權在安裝時創建註冊表項,或者無論如何都需要幫助。因此,您爲註冊表項提出的基本技術問題並不是真正的因素。
  • 只要不要擔心那些做了諸如退回系統時鐘或手動破解註冊表來破解密鑰的用戶。讓我再說一遍:只需不用擔心用戶有意識地決定改變他們的系統以顯着的方式來超越您的試用限制 —並且毫無疑問,設置回系統時鐘或編輯註冊表重大修改。你不應該擔心這些用戶的原因是他們他們代表完全$ 0潛在收入。如果用戶願意採取這種關於盜版軟件的有意識的選擇,則不會放棄並決定在產品無效時支付產品費用。如果他們無法免費獲得軟件,他們可能會與競爭對手一起或者沒有。你是爲了賺錢 - 你不想花費時間和資源試圖搶奪銷售,你不能贏得或將用戶發送給競爭對手。因此,您爲任一選項提出的基本安全問題不是一個因素。
1

你不會找到一個完美的解決方案。您爲此付出的努力應與您所做產品的價格成正比。如果它的價值很大,那麼購買一個專業的解決方案。如果不是,則使用您找到的任意方法組合。使用註冊表,請求在線試用密鑰,檢查用戶是否操縱系統時間等。

+0

@fejesioco,我同意你的建議。不過,我目前正在學習如何找到解決方案。對於商業產品,我們絕對可以購買專業解決方案。 – 2010-12-23 18:54:58

0

你可以要求使用試用用戶可以連接到互聯網?如果是這樣,只需要試用版在啓動過程中聯繫服務器,並且可以檢查各種事情。您不必擔心在用戶計算機上存儲的內容或他們篡改數據或系統時間。

+0

我也想到了,不幸的是,每次他們使用軟件時都要求用戶連接到互聯網是不合理的。 – 2010-12-23 19:39:02

+0

@Peter Lee,你確定嗎?這幾天幾乎每臺電腦都在互聯網上。你在這裏給他們一些免費的東西。 – tster 2010-12-23 19:40:57

+0

我確定互聯網連接在美國並不是問題,但它在中國。我的潛在市場在中國(我知道盜版問題阻礙了很多公司) – 2010-12-23 19:54:29

1

我建議採取稍微不同的機智。

給你的軟件「精簡版」。沒有試用,只是功能非常有限。

如果他們想試用一個「專業」版本,然後要求他們獲得試用密鑰。這應該以某種格式進行加密,將其存儲在任何你想要的地方。當應用程序啓動時,測試此試用密鑰的存在性。如果它在那裏解密它。密鑰內應該是軟件的到期日期。

測試日期並採取相應措施。如果它不存在,那麼只需運行lite版本。

要獲得試用密鑰,您可以讓他們在您的應用中輸入您想要的電子郵件地址和其他一些信息。要求機器連接到互聯網以獲得有限的部分並非不合理。即使MS Office也要求您短暫地連接到互聯網以驗證密鑰。讓應用程序通過密鑰請求聯繫您的服務器。通過電子郵件發回密鑰。

對於獎勵積分將試用鍵與機器本身的一些指標聯繫起來。即使它只是盒子的名字。無論如何這些變化很少,無論如何都是一場試驗。

如果你真的不能強迫他們連接到互聯網獲得一個關鍵,那麼你可以走一個稍微不同的路線。讓應用程序生成一個請求(其中包括機器名稱或沿着這些行的內容)。讓用戶使用該生成的請求ID來呼叫您,或讓他們將其插入網站。然後給他們發送該機器的鑰匙。

所有這些都會阻止共享密鑰。如果鑰匙位置被頂起,並且防止鑰匙被移動到其他機器,則會後退。它也爲您提供了一種完全斷開連接的方式。即使他們將公開的加密密鑰從您的應用程序中剝離出來解密軟件許可證密鑰,它們也不會擁有您的私有密鑰以構建新的許可證密鑰文件。

現在,密鑰管理只是你正在戰鬥的邪惡的一個方面。

下一步是您需要混淆您的應用程序,使其無法簡單地反編譯並繞過您的密鑰檢查。這比傳遞關鍵文件更常見。

您甚至可能在應用程序中使用不同方法測試密鑰的多種方法..但這是一個不同的問題。


至於那些足夠的鬥氣做這最後的獎金:種子的各種盜版板與主要的根軟件,做有趣的事情誰試圖人民的機器撕裂你了。你可以在這裏變得非常有創意。或者像Joel說的那樣,你可以不用擔心他們。畢竟,如果他們想要找到一個破解版本的軟件,他們無論如何都不會爲此付出代價,而且您確實沒有失去任何東西。