2015-09-07 48 views
1

我製作了一個Java(在IntelliJ IDEA)應用程序,我想通過USB或Dropbox將它提供給某人。防止應用程序被複制/生成激活密碼

但是我不想讓他把它給別人,就像你知道的那樣,他下載了這個文件,所以他可以將它複製/粘貼到他的USB上,並將它傳給更多的人。

有沒有辦法阻止應用程序在我給他的應用程序後被複制?起初,我想到了創建登錄窗口,但後來我想:「嘿,如果他知道登錄到應用程序的密碼,他可以將應用程序給予某人,並給他密碼」,所以登錄窗口不是選項(我認爲?)。複製一次後,可以使用If語句禁用複製/剪切功能嗎?

或者我只能通過鏈接我的應用程序與數據庫並生成獨特的密碼來激活我的應用程序來阻止它?例如,有人要求使用我的應用程序,所以我會給他的應用程序,但他將無法運行它。然後我生成一個密碼並給他發送密碼。然而,該密碼只能使用一次,所以如果他將嘗試在2臺不同的PC上使用相同的密碼,則會給他一個錯誤。是否有任何指導/教程/提示在Java上做類似的事情?

+0

Google「軟件版權保護」。 – Andreas

回答

1

您可以爲您的軟件創建某種「激活碼」,該軟件根據有關正在運行的硬件的某些信息生成。我見過一些使用MAC地址的人,您可以通過Java以獨立於平臺的方式獲得這些地址。

但是,請記住,這些技術只適用於最基本的用戶。 MAC地址可以由任何人都知道如何使用谷歌,即使你使用的東西,令人難以置信的複雜,而不是MAC地址,Java程序都死了簡單的反編譯和輕易改變,一旦攻擊者知道什麼功能,如果程序正確激活的檢查,他/她可以輕鬆替換它。是的,你可以混淆你的字節碼,但它只會讓這項任務變得更難一些,而不是不可能。

你可以做你的建議和使用,只能使用一次的密碼,但隨後你的程序需要知道它已經被激活,通過某處存儲該信息(文件或類似的東西)。一旦用戶知道信息的存儲位置,它就可以在其他計算機上覆制。

不幸的是,一旦用戶有你的程序,你無法控制他/她能做什麼。您可以確保用戶不會因爲完全不給他/她的計劃而做他/她不應該執行的任何事情。例如,您可以通過網絡展示您的程序功能。但是,正如你所說,沒有什麼能阻止用戶與他人共享登錄憑證。是的,您可以檢查用戶是否從不同的IP地址訪問該頁面,但是當合法用戶在從不同的WiFi網絡訪問您的程序時可能會遇到問題。在這種情況下,您的保護不僅無法解決問題,而且對於誠實的用戶也變得煩人。

綜上所述,在巨大的軟件公司輝煌的工程師一直在努力保護他們的軟件多年,我還沒有看到,不能被非法激活給予足夠的時間和精力軟件。