為什麼即使世界最知名的軟體程序,也無法阻止被人破解的命運?
Win8上市一周就被偽造伺服器的方式破解了。Adobe CC等也很快被破解,為什麼軟體破解看起來很容易?是開發者故意降低破解難度嗎?對於開發者,有什麼方法可以防止軟體被破解?另外即使是最好的安全軟體、殺毒軟體也會被破解,這是否說明它們不夠安全呢?
破解和反破解是技術對抗,核心問題是成本和收益。
在PC架構上,由於所有的代碼都要送到CPU去執行,所以除了在線防破解之外,離線程序從「理論」上來說都是可以破解的,但實際操作中有難易之分,也有值不值得的區別。
先說破解者,破解軟體無非是為了名或者利,如果一個軟體難度太大,而且破解後帶來的名利收入不足,破解帶來的法律風險太高,那自然沒有人有動力去做破解。某些專業軟體就是如此,因為用戶使用量太少,而最終用戶是用來生產的,往往出於軟體穩定性、法律等原因不會考慮購買盜版,所以沒有破解者。
再說軟體開發者,高級防破解技術是需要付出代價的:性能、穩定性、可擴充性、易用性、易讀性都會受到影響,如果採用高級技術帶來的好處沒有遠大於採用法律手段,那麼這些技術就不會被採用。歐美版權保護比較充分,因此很多軟體都是採用Paper license,也就是純用法律來控制。
此外,在互聯網免費思維的今天,個人軟體易破解本來也是一種潛在的營銷手段,某軟中國最喜歡跟是用盜版的用戶談正版化,每次10%,小刀子割肉。
再多說句,在線防破解也不是堅不可摧的,伺服器被入侵(索尼罪大惡極,民不聊生:),或者密碼演算法被破解,或者大客戶Key泄露,都可以導致防破解手段無效。
@潘安仁 所提到的安全軟體不容易破解,那是因為,這是人家的臉面,當然要護好不被你打了,而且萬一被病毒破解,那就不是盜版影響收入的問題了。但是代價也是很大的,殺病毒軟體越來越消耗資源。
說個笑話,有一次某個客戶自己開發了一套軟體,還買了一個防破解插件,請我們測試破解難度,某K姓大牛用了三天,然後很鬱悶的說:「還挺難搞的,花了三天」。我一看,破錯了,把人家防破解插件給破了......如果你修鍊到看彙編就跟看編譯前的C語言一樣容易的話,那對你來說所有軟體全部是開源的,而且可以隨便改。只要你有精力,就一定能破解。
1、理論上都可以破解,只是看代價和收益。
2、專業軟體因為圈子小,需要的人相對少,但不代表沒人搞,搞了你也未必知道,何況有些有能力的人破解了也是自娛自樂而已。
3、有些軟體沒有做足夠的防護,一方面防破解技術本身也需要經驗,一方面也有法律保護因素在內。如果付費率足夠高的話,往往是防君子不防小人的想法。
4、開發者故意降低破解難度的行為,一直有流傳,但一般的即使出現也都在新出軟體以及專業軟體圈子裡出現吧。
5、想加大難度,只能加入伺服器因素,就像目前的單機和網遊的進化類似。
現在軟體 SAAS 化也是個例子,未來網速足夠的時候,本地都只是客戶機了。當然,離的還很遠。。。
對於本地驗證的部分程序,註冊碼是通用的,也就是說只要一個用戶買了,發到網上去就算破解了,根本不用看彙編代碼。有的註冊碼裡面包含機器特徵碼,這種就需要看彙編推演算法。但是寫出來的註冊機也是通用的。同理,需要網路驗證的只需要抓包分析介面,寫出來的偽造伺服器也是通用的。破解和免殺是兩個概念。比如node32的180天序列號滿天飛,而且沒有次數限制,一定程度上,你用這種序列號就算是破解了。
有足夠的利益,而且微軟/Adobe不追究。你試著破破Play Station看看(雖然不完全是軟體層面),索尼分分鐘弄死你
這邊閑著沒事幹的可以去嘗試一下破denuvo
是么……卡巴和nod32也有破解嗎,我咋不知道。
A Few Thoughts on Cryptographic Engineering: Cryptographic obfuscation and unhackable software
在這項技術成熟以前肯定都會被破解的。世界上任何系統都有bug找到與找不到只是時間的問題
首先軟體破解並不容易,之所以在國內橫行的原因請看孟德爾老爺這篇文章
問下外國遊戲玩家的價值觀? - 孟德爾的回答軟體這個東西它能讓你破解掉是因為他想讓你破解掉,他不需要你這裡的市場,他從你這賺不到幾個錢,根本懶得管你。像是你上面說的那些軟體,這些廠商只會去找學校,事業單位,公司要錢,因為這些地方丟不起這個臉,從法律上你也必須給錢,你用人家的軟體做出來像樣的東西到了市場上人家瞟一眼就能看出來,然後就找你要錢去了。你想要破解不了的軟體?有的是!ESRI公司的ArcGIS你給我破解一個,分分鐘讓你知道差距,出來之後哪都破解不了。後來北京ESRI一看大家都破解不了反倒著急,裝模作樣地弄了個馬甲到各大論壇上自己發破解,然後悶聲大發財。破解之後,ESRI公司的軟體比別的公司的不知道高到哪裡去了,大家自然都用這個,高校的老師也教學生這個,到了公司也只會用這個軟體,然後ESRI再去收錢。老師用破解版給學生們講課不管(其實人家都知道),老師做項目立馬來要錢,我們老師就花了10萬多買了一套ESRI的程序。說到底,真的是人家懶得管,你破解讓人家損失的那點錢還不夠人家塞牙縫的,至於核心被破解你想都別想,數萬工程師不眠不休蓋起的大廈,還能讓一民工端了?以上機器看的懂,人就看得懂
千里長堤毀於蟻穴。
修建堤壩很難,要保證毫無錯誤。
而鑽孔則容易的多。換個例子。 你覺得是「寫一篇沒有任何錯誤的文章」容易, 還是「在文章里找個錯誤出來」容易?
尤其是當一個人寫,而全世界找的時候。很多答案沒有說到本質。破解軟體的原理,無非就是利用軟體本身的註冊機制(比如用算號器填入一個隨機的註冊碼),或者利用這個機制的漏洞來達到讓這個軟體顯示「已註冊」的目的。就是這樣。再貴的軟體也是如此。也不能說是軟體開發商不管,而是防不勝防。破解軟體就跟給軟體捉蟲一樣,誰能保證軟體永遠沒有Bug?
Windows系統的漏洞也是一樣,微軟什麼時候說過Windows的某個版本是沒有漏洞的?又該如何解釋微軟定期發布Windows補丁呢?
因此,哪個軟體能夠保證自己是無法破解的?即使有,那也只是暫時無法破解而已。因為最知名的軟體是用來大量提供給用戶的,都是以更多賣錢的為目的的,而不是特意來反破解的,如果破解版能培養用戶習慣,增加實際銷量,打擊競爭對手,何樂而不為那?而那些真正就是為反破解而進行特意防護的東西是非常難破解的。
題主的問題其實只適用於代碼本地執行軟體,也就是理論上代碼在本地執行的都能破解,只是時間和成本問題。而核心做在server上的被人黑了,這個從字面上定義應該不屬於傳統意義的破解了。
如果題主真相了解反破解,大原則有如下幾個方面:
1.核心代碼非本地化。
2.核心代碼硬體化,詳見各種智能狗的SDK。
3.核心代碼虛擬化,非核心亂序化。VMP一類的是好東西,但和怎麼用,誰來用有很大關係。
4.校驗隨機化,隨機校驗,隨機出錯,隨機延時提示或無提示,最大限度防止重現。
5.臟樁分散化,把臟樁校驗都藏在細小的功能點裡,互不重複,破解的人一般不會使用這些細節配置。
6.升級常態化,升級速度大於破解速度,配合核心代碼非本地化一起使用,新版升級舊版失效。
7.其他,反調試,環境校驗,烏賊戰術等
有些程序破解以後還有暗樁!
我寫的一款批量控制手機的軟體就被別人破解了 這個程序是一天授權100 試用一年1600 用的key註冊機 然後拿了我的授權包 破解掉了之後還說不怎麼好用 心塞 就像被免費操了一個美女還說美女要給錢他一樣 講真我在程序防禦授權上沒花什麼精力 但是真真看到破解的時候還是很心累的 唉
如果windows設計為強制不可被破解,那linux的春天就來了
免費是隨便用,收費是被破解了隨便用,第二種方式明顯可以讓自己站在法律的制高點啊。
因為再牛逼的軟體也是人造出來的,當然擺脫不了被人破解的命運。
一個答案:因為它們都是人開發出來的。
因為要省錢。
道高一尺,魔高一丈。
等到量子計算機出來了,由於量子通訊的不可破解性,軟體的破解就變得理論上不可能了。
推薦閱讀:
※機器學習進階的五個境界
※linux中設備節點是設備文件嗎?
※淺談Intel Core i5 8400 —— 一顆本不該如此低調的CPU
※寫一個簡陋的程序,直接發布,是怎樣的體驗?