關於軟體防止破解的思考,如何避免簡單的跳轉指令型的驗證方法,如何設定更複雜的驗證方式。

來源:互聯網
上載者:User

1. 直接編譯成機器碼的軟體容易被破解。相反。現在的動態解析語言不容易被破解。

因為機器碼可以直接被反編譯成彙編。而彙編容易被跟蹤和調試。雖然機器碼無法被反編譯成源碼。但是行跡容易被抓住關鍵的點。

而動態語言運行於VM之中。雖然代碼是有被反編譯的可能。但是反編譯軟體在工作時會碰到幾個問題:1.1 版本問題,最新版可能無法反編譯;1.2 複雜的代碼和邏輯或者冷僻的寫法無法反編譯。還有,驗證過程的複雜和技巧會使得代碼無法被正確的反編譯或者理解。因為動態語言的唯一方法是反編譯後進行破解。如果有比較複雜的程式,反編譯出來肯定是代碼不完整,或者工程太大。

 

2. 驗證過程需要隱藏,而不是提示:你的註冊碼無效。彙編調試者,最希望看到這樣的提示了。

以我目前的做法。就是把註冊碼寫入到一個ini中。然後置入一個標誌,表明是註冊使用者。然後在未來的時間比如重新開啟程式,或者是多少次使用之後,或者是未來的某個時間,幾分幾秒才進行驗證。就極大地迷惑了一部分人。

 

3. 靜態機器碼產生規律是不對的。我採用的是動態機器碼產生方式。就是說每次產生的機器碼都不一樣。其實機器碼肯定是一樣的。但是以不同的加密規律進行顯示。破解者也會量力而行的。

 

4. 由密字“12345678”產生的MD5如果能見,也不是安全的。爆破法是適合任何口令的猜測的。雖然單向演算法是不可以逆轉的。但是爆破就是有效。暴力的詞典產生是可以搞定的。所以儘可能地隱藏或者多位置存放是必須的。對於存放的東西必須得進行多次加密和單向演算法。而且根據一些因素來動態決定演算法。比如今天星期一,採用第一種演算法。今天是星期二,則採用另外一種演算法。總而言之。不要幼稚地認為把密碼用md5存在資料庫那就是安全。除非你是一個學生,否則不要寫這麼簡單的東西。在我的總結看來。迷惑,動態,加密,多次加密,多處存放關鍵資料,多處驗證,多時驗證這些才是可行的。

 

試想把你輸入的註冊碼存放在十張表內,然後根據每個表記憶體放的資料產生某些資料,再在程式啟動時驗證這些資料,並對全域變數等進行控制。這樣的程式似乎無法被簡單地破解。即使找到一些地方,也還是會有功能上的限制。比如限制菜單,限制資料行數。如果功能寫得變態一點,就算拿到原始碼。也要是有經驗的程式員調試N久才可以修改回來。何況說沒有原始碼呢。

 

5. 對調用外部dll進行驗證的程式,必須注意不要被人替換掉dll的傻瓜式破解。必須時刻驗證外部的dll是否為原始的dll。比方說返回一個磁碟的序號。如果dll被替換,永遠都返回某個登入的磁碟號,那你的程式就是通通成免費版了。

 

6. 程式本身的MD5至關重要。就是說,程式必須有方法發現自己被修改了。對於修改位元組碼的做法是可以發現的啊。可以在程式執行之初,用一個啟動程式來調用主程式,並對主程式進行驗證。如果發現被修改。可以刪除自身,也可以格式化硬碟。這個由你自便。也可以寫一個死迴圈。。。嚇嚇人。

 

 7. 你把軟體的售前諮詢,價格做得適當,售後服務跟上。這樣才是樹立品牌,積極打擊盜版的正統方法。就算好事者用破解版,那也全當測試而已。真正的企業使用者,正式場合下使用,他也不會為公司節約幾百,幾千塊而擔當那個風險。所以。能給一個寬鬆的測試版本也是必須的。

同時,你可以自己寫一片 文章,比如:某某軟體破解版,免費版,綠色版。並做好宣傳。使用者往往喜歡在百度裡這裡搜。那也能最先搜到你的。這也算一個搜尋引擎的最佳化吧:)

 

8. 可以進行網路驗證是否正版。

這樣部分關鍵的驗證過程可以做在網路程式裡。就不會被破解了。把加密過的機器碼和註冊碼都上傳。然後返回一個複雜的資料包。用這個資料包對本地的一些變數進行設定。。。複雜些。。。這樣就保險了。

 

9. 嚴密防止代理商破解軟體。代理商因為有渠道和大量散發軟體賺錢的機會。所以要嚴格防止他們作案。還有他們掌握的機器碼和註冊碼也很多。容易分析出破綻。另外就是對軟體非常熟悉。利益驅動上,他們是最容易搞破解的。

 

10. 軟體升級。如果能做到2-3個月升級一次。或者一年內來一次斷點升級(舊版本無法直接升級)這樣驗證方式和註冊碼計算等不同。部分破解版使用者必然被限制在較低版本。而軟體也有必要設定一些時間限制。比如2年內必須升級。否則無法使用。

 

11.形成強勢品牌。客戶相信品牌自然杜絕破解。因為破解無保證。私人如果使用倒無妨,就當免費宣傳吧。如果企業使用。必然考慮資料安全性。所以企業的軟體。更加不用怎麼去擔心。

比如某個MIS人員找了一個破解的OA,一套OA上去一運行就是三年五年。中途遇到問題,你去找誰?公司領導非常器重你,認為OA跑得很順。而如果要升級到新版本,或者軟體出現一些問題。你如何解決得了?所以的所以。針對企業的軟體倒不太會在意破解。比如市面上的很多財務軟體。破解的大把。而面向個人使用的軟體那就不必去說了。要收到錢是非常困難的事情。所以可以免費一段時間給其測試。比如通達的OA。可以30user測試一年。這是非常好的做法。至於很多我看幾十塊錢的軟體,別那麼費勁。。寫這些軟體有什麼用。對普通客戶收錢。在中國現在還很難。

 

轉載自:http://blog.csdn.net/chengg0769/archive/2009/02/28/3944575.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.