2009-12-25 52 views

回答

2

我只是寫了用戶許可證密鑰,並匹配電子郵件中的「文件〜/庫/應用程序支持/爲MyApplication/License.myApplicationlicense 」。我認爲這比使用NSUserDefaults更好,因爲用戶希望能夠拋棄他們的首選項,而不必像重新註冊他們的應用程序那樣發生任何戲劇性的事情。

該文件只是使用writeToFile編寫的NSDictionary的內容:atomically:並使用dictionaryWithContentsOfFile:讀取。內容未加密,但取決於許可證方案的工作方式,這通常並不重要。

我也建議你看看AquaticPrime如果你還沒有這樣做。我決定推出自己的許可證方案,因爲我想要許可證代碼而不是許可證文件。最後我覺得我會堅持AquaticPrime,這比我自己的許可證方案更加安全得多。當我在測試期間使用AquaticPrime時,我將許可證文件存儲在上述相同位置。

+0

這正是我所做的,除了我用NSKeyedArchiver編碼數據而不是NSDictionary。它增加了額外的安全級別。 至於AquaticPrime,請參閱: http://toxicsoftware.com/aquaticprime-warning/ – Chetan 2009-12-27 01:33:10

+0

應該指出的是,這裏描述的是對軟件的二進制破解。因爲即使iPhone應用程序加密已被破解,對二進制破解的防範仍然沒有人解決。 所以你需要決定你想要完成什麼。我建議你想保持誠實的人誠實,並有一個許可證密鑰生成系統,將讓某人從你自己的應用程序製作自己的許可證生成器。 AquaticPrime通過一些注意事項來完成此操作。您應該編譯代碼並混淆公鑰和方法。 – 2009-12-27 02:21:41

0

您可以使用NSUserDefaults或您自己設計的系統。

1

我決定使用NSKeyedArchiver,因爲它保持數據編碼,因此手動訪問和更改許可密鑰和激活狀態等敏感數據更困難。

+0

你可能會對http://www.cocoadev.com/index.pl?MAKeyedArchiver – RCIX 2009-12-25 10:14:58

+0

感興趣看起來很有用。我會嘗試的。我使用本教程將許可證密鑰和激活信息寫入用戶Application Data文件夾中的文件:http://cocoadevcentral.com/articles/000084。php – Chetan 2009-12-27 01:36:22

2

我建議使鑰匙依賴於用戶特定的事情,例如電子郵件或全名,或者如果有必要的話可能是機器特定的ID。然後,您可以將其存儲在NSUserDefaults或用戶主目錄中名爲的簡單點。這不需要加密它或做一些瘋狂的混淆。我們相信這是一些永遠不會支付任何東西的人,所以你實際上並沒有放任何東西。通過使關鍵取決於用戶特定的事情使得用戶更難分享它。

關於盜版。你覺得他們可以走多遠?我製作了一個小工具,無需付任何費用就能正常工作。但作爲對那些願意支持創建它的人的一種享受,我添加了一個小功能,只需5美元即可更改其中的圖形顏色。那麼,他們做了什麼?有人實際上扭轉了這個關鍵,他們創造了一個keymaker。我承認我沒有花費太多精力來混淆算法,但是,嘿,我更專注於讓所有真正的好用戶都能輕鬆輸入,而不是爲任何破解者拼命工作。我更高興的是他們認爲我的小應用程序值得爲逆向工程的努力付出努力。

鏈接:

10

蘋果公司爲這種需求提供了全面的設施。你想要的是鑰匙串API。

+1

+1這是正確的答案。任何敏感數據都應存儲在鑰匙串中。我會將用戶許可證密鑰稱爲「敏感」,因爲如果它們丟失了,它就消失了。 – 2009-12-27 02:23:53

+1

但我從未見過任何軟件應用程序將其許可證密鑰存儲在鑰匙串中。如果用戶丟失許可密鑰,他們應該將其保存在他們的電子郵件中,或者他們應該能夠聯繫客戶支持。即使鑰匙串數據可能會丟失,與用戶主文件夾中的數據相同。 – Chetan 2009-12-27 18:36:24

相關問題