閉源軟體為何不能被破解開源?
「開源就是沒有版權」或者「披露了源碼就是開源」的理解是絕對錯誤的。
無論是 Free Software 還是 Open Source Software,「開源軟體」都代表了軟體創作者對著作權的一種行使方式——將源碼的閱讀、修改和再發行的權利按照特定的方式許可給更多的人。也就是說,著作權法本身就是工具,被用來保護開源軟體能被所有人閱讀源碼、修改源碼和創建分支。使用和修改開源軟體的代碼也並非可以肆意妄為,而是要在所用開源軟體發行時聲明的許可協議(License)約束之下進行。
常見的開源許可協議有 Copyleft 風格的 GPL 家族,也有商業友好的 BSD、MIT 家族。它們產生約束的目的、方式都不一樣。
例如,使用 GPL 許可的 FFmpeg 源碼製作播放器,悄悄地自己在家使用,這是沒有問題的;但是如果你在一個網站上將它分發出去,分發這個編譯好的播放器而沒有分發播放器源碼是違反 GPL 的,或者分發了播放器源碼但聲明了一個不允許他人二次開發的協議也是違反 GPL 的。只有將這個播放器的源碼隨軟體一起發行,並且也採用 GPL 許可授權,才是合法的。
再例如,開發一個 Android App 時使用了一個 MIT 許可的庫,這個 App 最終作為商業軟體發行,所以不可能開放源代碼。但是這不是問題,MIT 許可本身允許這樣的情況,只要在 App 的關於菜單中列出這個軟體的名字、項目主頁和 License 全文就屬 MIT 允許的再發行方式了。如果留意觀察一下,很多 App 的關於菜單中都有類似的內容(名字多半叫 Open Source、法律信息等)
除此以外,還有一些關於開源的誤解:- 「開源就是反商業」:前文提到了 Free Software 和 Open Source Software,這是從自由軟體運動以來對軟體自由的兩種不同的理解。前者嚴格來說叫「自由軟體」,其在立場上反對軟體著作權(Copyleft),但它使用著作權法本身作為渠道(正如 GPL);後者對開源有更寬泛的理解。但兩者都和「反商業」一點關係都沒有,不僅沒有,而且軟體開源本身可以發展成一種商業模式。例如 RedHat 公司的「開源軟體,出售服務」。
- 「開源就是無版權」:開源軟體是有明確的著作權歸屬的,例如 MIT/BSD 許可協議的第一句就是 Copyright (c) &
& 。不僅如此,一個開源項目的每個源碼貢獻者都對自己貢獻的部分擁有著作權。真正接近大眾意義上「無版權」的應該是「公共領域」(Public Domain),將源碼置入公共領域(也就是放棄著作權)的項目非常少,最寬鬆的 BSD 系許可也還是與其有差別的。 - 「Java 是開源軟體所以 Oracle 不應該以專利侵犯為由訴訟 Google」:「開源」圍繞的問題都是版權,也就是著作權。而著作權和專利是兩回事。並不是說開源軟體就不可以包含擁有專利的成分了。一個人可以自主開發一個 RAR 格式的壓縮解壓庫,並因為對這個庫擁有著作權而開源它。但是也可能與此同時因為沒有得到 RAR 演算法的專利使用權而違反了專利法。
所以把一個閉源軟體的源碼物理偷竊出來,或者反編譯出來再發行,其本身就是違反著作權法律的。連擁有著作權都談不上,怎麼能稱之為「開源」呢?但是相反,開發已有商業軟體的開源替代品,這則是名正言順的「開源」,因為開發者從零開始實現一個產品,自然擁有對它的全部著作權。事實上這也是 GNU 對商業 Unix 的 Shell 工具集所做的。
不了解軟體開源生態圈但又對此有興趣的話,推薦閱讀這本書 大教堂與集市 (豆瓣)因為私有財產受法律保護。
破解和開源是兩個事情。閉源軟體當然可以被破解,而開源是指原作者將源代碼公開並授予大眾一定的權利。相當於一個是你偷的,一個是別人送的。
公開源代碼 ≠ 開源開源 &> 公開源代碼
開源指的是是程序所有者自己願意公開源代碼,而不是被他人破解泄露源代碼。
即便是這樣的源代碼泄露出來,我等程序員也不能直接使用,因為沒有任何授權。
你以為是打土豪分田地嗎?
開源文化的基礎是我們尊重其他人的知識產權(著作權,專利權,版權),而不是剝奪其他人的知識產權,但是我願意把我開發的軟體按照某個許可權協議的規定發布出來。
比如說,我尊重其他人的糧食所有權,我把我的所擁有糧食分給大家。而不是把地主家糧倉扒了分給大家。
一句話,開源是處置自己知識產權的一種方式,不是侵犯他人知識產權的借口。顯然是可以的,只是這樣通常除了違法以外還有什麼用。
畢竟軟體受到許可證(合同)的約束。閉源許可證一般隨軟體而異,並無規定範本。但以下特徵一般是確鑿無疑的:
- 僅向最終用戶授予軟體的使用許可。
- 可能要求最終用戶通過DRM、在線激活等手段獲得軟體的許可權。
- 可能保留通過聯機驗證等手段,檢查最終用戶許可有效性的權力。
- 最終用戶沒有複製及再發行的權利(關鍵)。這一點可能是明示禁止的,也可能是暗示(沒有相關條款明確授予)的。
這裡插一句,許多閉源許可證也會有一個條文,單方面叫囂禁止用戶「逆向工程」,或其他禁止分析、研究軟體機制的限制條款。這些條款是無效的。
計算機是最終用戶私權的範疇,用戶有權得知機內的軟體進行了那些操作。這個知情權可能是文件讀寫、網路訪問,也可能是小到機器指令(能否解讀那是另一回事)。嚴格來講,這些條款甚至禁止安全工具(殺毒軟體)監控和分析軟體的行為,這無疑是荒謬、不可接受甚至違法的。所以最後真正準確的結論是:- 用戶獲得軟體使用權之前,無權對軟體進行逆向工程。即所有為繞過許可而進行的的「算號」、「破解」、「激活」均為非法。
- 用戶獲得使用權後,有權使用技術手段監視和分析軟體的運行行為。
- 但逆向工程所得到的任何結論,皆無權公開發布或透露給他人。
簡而言之:破解繞過許可證違法,破解查看軟體代碼不違法。對合法用戶而言,破解代碼不違法,但再發布絕對違法。這才是這個問題的真正關口——得到代碼也許可行(甚至合法),但再向外開源開不出去。
註:還有個問題是「破解後是否有權按照他人代碼的邏輯去重新造輪子」。這涉及到包括軟體專利在內的不少其他要點,因為離(bu)題(dong)所以不再展開。
可以逆向,如果逆向屬於所謂的破解,但是逆向之後還需要結合凈室工程。
可以參考美劇halt and catch fire為什麼你銀行卡裡面的錢不能被取出來發給大家
破解是違法的,絕大多數軟體的-同意什麼什麼什麼…裡面肯定有說破解軟體會被起訴之類的。有破解閉源軟體能力的人會沒錢買商業軟體?反而破了公開開來去牢里蹲蹲?
reactos通過re重寫和直接偷竊得來源代碼還是有區別的。
推薦閱讀:
※世界上最大的文件壓縮率是多少?
※如何看待在沒有安裝360的情況下彈出了"360文件損壞"的對話框?
※通常所說的「程序員」是特指「中小型開源Web應用二次開發者」嗎?
※怎麼標註 PDF 做筆記,並且同步到手機和電腦?
※如果想在金融軟體(銀行軟體)這方面長期發展,發展到後期是需要金融業務知識多些還是計算機技術多些?