簡體   English   中英

安全的應用程序不會從一台PC復制到另一台PC

[英]Secure application from being copied from one PC to another

我創建了一個JavaFX應用程序。 現在,我想確保它不會被復制到其他計算機。 更詳細地講,我將該應用程序出售給一位客戶,並且在安裝了該應用程序之后,我需要確保它不會從一台計算機復制到另一台計算機。

如何防止他人復制應用程序?

規則是:您不能阻止在其計算機上具有管理員權限的用戶復制該計算機上存在的任何文件的位。 句號

最好的辦法是找到一個硬件標識符,以標識該特定計算機,並在某個位置(在可執行文件本身內部或輔助文件中,甚至通過您擁有的服務器上的網絡) 混淆該值。

程序運行時,可以將硬件標識符與其存儲的標識符進行比較,如果不同,則可以扼流圈。

限制:

  • 除非您自己進行安裝,否則很難阻止用戶在安裝之前復制程序。 這意味着您將需要在安裝時進行在線操作,以防止從同一來源進行多次安裝
  • 如果用戶由於某種原因必須更換您監視的硬件,則測試將失敗,同時應允許用戶使用您的程序=>准備提供有關此程序的支持。 並且請確保,如果您沒有明確要求,那么臨時用戶就不會因為內部網絡接口已失效而無法想象其程序不再起作用。

TL / DR:您正在嘗試使用技術方法來解決法律問題。 盡量避免。 我記得在並行端口上需要特殊硬件的舊程序。 這引起了太多的噩夢,因為突然出錯了,我所工作的組織決定不再購買任何需要硬件密鑰的軟件,即使更好或更便宜。 用戶體驗確實是一個選擇標准,而那些@#&! 安全工具提供了非常差的用戶體驗。

您要查找的術語是DRM(“ 數字版權管理 ”),在大多數情況下,它是一個失敗的原因。 實施堅不可摧的DRM是不可能的,因為一台計算機可以做的另一台計算機也可以做,所以無法防止有人偽造“哦,它仍然是同一台計算機”。 可以嘗試進行諸如檢查硬件相似性和序列號之類的事情,但是這些都可以被欺騙(至少在理論上如此),並且在實踐中還會破壞合法的用例,例如更換故障硬盤。

也無法防止有人簡單地修改程序以刪除或削弱DRM。 甚至諸如加密二進制文件的整個非DRM實現部分以及僅在DRM檢查通過的情況下僅獲取解密密鑰之類的技術也是不夠的,因為該解密密鑰可以從進程的內存中捕獲並用於解密加密的部分,然后就可以丟棄DRM部分。 混淆會使執行此操作變得更加困難,但是如果計算機可以執行該程序,那么人們可以(有足夠的時間和/或有用的軟件)對程序進行反向工程。

混淆和DRM所做的全部工作是使某人成功進行反向工程/盜版程序花費的時間更長。 從理論上講,您可能會增加難度,以至於在使用當前可用工具的情況下,地球上沒有任何人可以對軟件進行反向工程以在短時間內刪除DRM ,而無需花費僅僅克隆程序行為的時間即可 。不可能做到這一點,也不能阻止人們編寫更好的逆向工程工具。


編輯:DRM毫無意義,以至於有些人只是出於娛樂目的而將其破壞,並盜用了破碎的DRM版本,而不是同一軟件的無DRM版本。 上面鏈接的Wikipedia文章中有一個有趣的關於DRM絕望的故事(添加了重點):

[CD Projekt Red的首席執行官Marcin] Iwinski談到DRM時說:“這太復雜了。我們發布了游戲。它在兩個小時內就破解了,對於Witcher 2來說來不及了。真正令我驚訝的是, 海盜沒有不要使用不受保護的GOG(無DRM)版本他們選擇了SecuROM(商業DRM)零售版,對其進行了破解並說“我們對其進行了破解” –同時,還有一個非安全版本同時發布 。您會認為GOG版本將是一個浮動版本。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM