當前位置: 華文問答 > 數位

電腦軟體(例如 Adobe、Autodesk)為什麽那麽容易被破解?

2019-12-03數位

入眼就看到一群沒玩過破解的玩命YY……

軟體破解比開發容易一萬倍

軟體最終是要丟給CPU執行的;不管你用了多騷的手法、多牛逼的加密,到了CPU執行這一步,它就是一堆明文指令的組合。

既然是明文指令,那就可以拿來分析——這個事實決定了開放平台上靠電腦指令防盜版完全是癡人說夢。

最簡單的,你的程式每次執行前檢查是否正版、不是正版彈出個對話方塊或者直接結束,以為這樣就能阻止盜版使用者?

太遺憾了。破解者只需搜尋對話方塊文本所在、再找到相關的msgbox呼叫或者_exit呼叫或其他相關呼叫——有無數種辦法可以幫助破解者做到這一點,比如全文搜尋msgbox相關呼叫、比如用偵錯程式watch對話方塊文本相關的存取——你的盜版驗證程式碼就被順藤摸瓜了。

然後,最簡單的,直接把if(正版驗證透過)改成if(true)(組譯指令的JNZ改正JZ或JMP),跳過你的拒絕執行邏輯,你的保護就被廢了,破解版就搞出來了。

當年起碼80%甚至90%以上的盜版軟體就是這麽搞出來的。

所以你不敢那麽憨了,你發現軟體不是正版時,先不動聲色,做一個標記;若幹分鐘後再突然發難……

問題是,你「發難」的時候,照樣要執行結束之類邏輯;破解者只要抓到這個邏輯,修改exe檔,把相關指令跳過——你又被搞定了。

然後你說「反正我的軟體效能需求不高,幹脆學病毒,臨執行前解碼若幹字節,執行完繼續解碼;解碼前你看到的exe內容都是無意義的亂碼……」

很不幸的,你「餵」給CPU的仍然必須是指令。搞一個虛擬機器,把你「餵」給CPU的指令打印出來——解碼方法就有了。

現在,盜版軟體不需要每次執行都解碼,效能是正版的許多倍——你們,都是正版軟體的受害者!

當然,軟體破解並不像我描述那樣輕描淡寫;但當年盜版產業最興隆時,一款軟體釋出後幾小時內被破解才是正常現象。

因為軟體保護需要你絞盡腦汁,不能即時反應,也不能不反應;不能只在一處檢查,也不能用同一個呼叫檢查;不能立即檢查,也不能在某個時間間隔後僅僅檢查一次——最好在不同的隨機時間/事件後,用不同的方式檢查許多次:這些檢查還不能太直白不然太容易破解(比如不能單純檢查,而是把檢查和功能程式碼混到一起、敢跳過軟體就會在一段時間的執行後出bug);但也不能過於晦澀以至於影響了軟體的穩定(正版軟體受害者警告!)。

而破解嘛……盡可能找到你藏著的檢查邏輯、然後把它們跳過就行了。真用了幾天不能用了大不了加上新條件再破解一次(所以如果過去你用過盜版軟體的話,應該很熟悉「好好的軟體用著用著就壞了」或者「Windows打了個修補程式ps不能用了」之類場景)……

你說既然軟體沒轍了,我們玩硬體吧……

很遺憾。對電腦來說,硬體不過是執行存取外設相關指令後、放置在匯流排上的字節流。

破解者的PC是完全屬於他自己的。他完全可以監控這些東西……

不,他們才不搞這麽復雜呢:如果是透過硬體確認授權,他們同樣可以繞過確認程式碼;如果是透過硬體提供關鍵指令/解密金鑰,他們完全可以直接跳過相關程式碼、直接把解密後的指令/數據附加在記憶體中……

最「巴拉」的,你去讀光碟隱藏區域的隱藏標記?沒關系,使用者可以用一個更好的、連這些動作都能支持的虛擬光驅(所以過去使用者安裝Daemon Tools這個虛擬光驅軟體,基本上就意味著他是個盜版使用者;某些軟體甚至發現常用的虛擬光驅軟體就拒絕執行——顯然,這很容易破解),然後把包含暗記的iso放進去就行!

——當年軟體保護最成功的案例我記得是starforce;但這個技術並非不可破解,而是廠商掏錢給全球知名盜版組織,換取他們不破解被這個技術保護的軟體(然後還是被散兵遊勇們給破了)。

總之,過去,業界用無數真刀真槍的案例證明了:依靠軟體本身、軟硬體結合抵抗盜版者的破解是徒勞的。你能做到的,僅僅是「不要被人第一時間破解」而已。

想要抵禦盜版,法律以及正版意識是唯一有效的途徑。