2012-09-26 53 views
4

我知道如果開發者在Google Android Market發佈付費應用程序。很快,付費應用程序將通過其他Android Market免費發佈。當涉及中國市場時,這種盜版問題尤其如此。例如,Where's My Water (Chinese)可以在應用程序內購買防止軟件盜版

我想知道,可以在應用程序內購買防止這種盜版問題?

購買附加項目通過應用內購買

  1. 通過應用內購買的用戶購買額外的項目。
  2. 一個祕密密鑰,寫入用戶偏好。該密鑰是根據用戶在Google Apps帳戶中使用的應用內購買產生的。我們不使用硬件ID的原因是,我們希望同一用戶能夠享受應用內購買物品,即使他正在使用其他設備。

驗證使用保密密鑰

  1. 所以,驗證總是會做,當用戶傾向於使用其他項目。即使用戶將密鑰分發給其他人,也不會起作用。由於密鑰僅對該特定用戶有效。

我想知道,這是正在實施的常見做法之一,以對抗Android應用程序盜版問題?因爲我沒有看到有關這種技術的很多討論。我不確定是否有遺漏我錯過了?

回答

4

類似的東西:)

這在很大程度上取決於應用程序內購買的類型:如果是內容(圖片,視頻等),他們從你的服務器上下載,你可以在服務器上做檢查除非有人攻擊你的服務器,否則幾乎不可能作弊。

對於已經在應用程序中添加/啓用的功能,您需要將它們購買的物品列表保存到某個位置,以便您的應用程序知道要啓用的功能。如果您只是將其保存到文件/共享/首選項/數據庫,則可以簡單地編輯這些文件(當然是在根設備上)並添加他們想要的任何項目。因此,您需要混淆項目緩存,以便更改難度。這樣做的一種方法是在磁盤上加密並在您的應用程序中解密。如果您對所有設備使用相同的密鑰,只需將文件/數據庫複製到其他設備即可啓用這些功能,而無需付費。這就是爲什麼你需要從特定設備的某個特定項(MAC地址,ANDROID_ID等)中派生出密鑰。如果可以使用Google帳戶來派生密鑰,但您需要與AccountManager覈實,該用戶實際上是否在其設備上註冊了此帳戶(這需要額外的權限)。

至於使用硬件ID,項目/訂閱與用戶Google帳戶綁定,因此您可以在任何設備上使用RESTORE_TRANSACTIONS來獲取購買的項目。使用硬件ID來混淆項目緩存不是問題,因爲它僅用於將內容存儲在磁盤上,不會獲取購買狀態,因此不會阻止用戶在多個設備上使用該應用程序。

2

一般而言,應用內購買更能夠抵禦盜版。購買發生在遊戲內部的事實使得盜版者更難以用其他黑客部分替換軟件的一部分。此外,應用程序內購買靈活性較低,並允許您使用冗餘的保護方法。

根據您隱藏密鑰的方式,您描述的方法可能沒問題。確實,密鑰不能與其他人一起使用,但它可以一次又一次地被同一個帳戶使用。我們的建議是遵循這個過程:

  • 驗證使用自己的服務器通過TLS/SSL
  • 獲取密鑰,這將是有效的一個交易只
  • 使用事務的密鑰和忘了它imediatly

這將是更難以破解。

祝你好運,讓我知道你是否需要任何幫助。