軟體加密鎖編程技巧

來源:互聯網
上載者:User

本文將介紹軟體加密鎖的一些編程技巧,以及軟體開發人員將如何編寫安全可靠的代碼,如何對付各種各樣的加密狗破解,編寫加密程式時應該盡量避免的一些問題等等。以下是全文。   

一、加密狗加密的基本原理  開發商程式通過調用硬體加密狗的介面模組對硬體加密狗操作,硬體加密狗響應該操作並通過介面模組將相應資料返回給開發商的應用程式。開發商的應用程式可以對傳回值進行判定並採取相應的動作。如果返回無效的響應,表明沒有正確的狗,開發商可以將應用程式終止運行,或者讓應用程式以錯誤的方式執行。簡要示意如下:   

二、常用的解密方法  

    1、反組譯碼後靜態分析: W32Dasm、IDA Pro   

    2、用調試工具跟蹤動態分析:SoftICE、TRW2000   

    3、針對各種語言的反組譯碼工具:VB、Delphi、Java等  

    4、其他監視工具:FileMon、RegMon 等   

三、如何提高加密強度  下面詳細介紹一下使用如何在編程的過程中提高加密強度的方法。   

     1、反DEBUG解密的編程方法和技巧  訪問狗之後不要立即做判斷,判斷狗不正確後,不要立即提示,或者不提示。開發商在程式各個部分插入校正演算法的代碼,用以增加程式碼的複雜性,防止解密者輕易跟蹤發現全部的校正代碼。校正代碼插入程式的頻率越高,破解難度越大,軟體就越安全。   重要的字串不要在程式中以明文出現,應該使用演算法動態產生。   在不影響程式效率的情況下,盡量多寫一些查狗的函數,彼此要有區別,使用不同的演算法,多一些查狗出錯的標誌,讓這些標誌參與運算,在不同的模組中,使用不同的查狗函數。   針對某一具體查詢校正,都有三步驟組成:查詢得到響應串;比較響應串和查詢串是否匹配;根據校正結果執行相應的步驟。建議三個步驟要延時執行。最好將三步驟相互遠離些,甚至放到不同的子程式或函數中。例如:執行“查詢得到響應串”後,相隔50行執行“比較響應串和查詢串是否匹配”,假如程式需要調用一個函數。那麼就在這個函數裡執行“執行相應的步驟”。解密者在跟蹤過程中,即使發現了其中一部分程式碼,但很難發現另外兩部分代碼和全部三部分之間的關聯。程式難於被破解。   將加密鎖返回的“響應串”作為程式中的參數使用。例如:演算法單元返回“響應串”是“87611123”,而程式中需要使用“123”這個參數。程式中得到“響應串”後,將“響應串”減去“87611000”得到參數。如果解密者修改代碼跳過查詢校正加密鎖部分,參數將是錯誤值,從而會使程式運行紊亂。   程式在驗證密碼編譯演算法過程中,一般情況下驗證資料不正確程式就會選擇退出。這樣一來很容易被解密者發現代碼特徵,跳過查詢校正部分。開發商設計查詢校正部分時,如果程式校正資料不正確,程式也不退出可以繼續執行一些無用的操作使程式紊亂,用以隱蔽代碼迷惑解密者。   開發商的軟體可能有多個模組,查狗的模組或介面不要用顯而易見的名字來命名,這樣會令解密者更容易找到加密點,當然也可以利用一些名字來迷惑解密者,尤其是dll,引出函數時甚至可以不用函數名。   給查狗函數加入一定的隨機性,例如,隨機地執行某一API函數,或者在狗的儲存區中劃定一小塊地區作隨機讀寫,讀寫地址、讀寫內容、讀寫長度都是隨機取的,這樣可以很好地防止那些類比工具。   試用版與正式版要分開,試用版不提供的功能,代碼已經刪掉,使得不可能利用試用版破解得到正式版。   在大多數情況下,破解是通過更改exe 或 dll 檔案實現的,要在程式中檢查exe或dll檔案的完整性,即利用某種演算法計算出整個檔案的校正和,在程式中比較,如果檔案被更改,校正和就會變化,這類演算法網上有很多,可以查得到。另外,exe和dll之間要相互認證,一方面防止dll被替換,另一方面防止非法exe訪問dll。   

 

小結:

       應該盡量避免的問題   

           1)訪問狗、做判斷、提示使用者寫在一起   

           2)重要的字串在程式中以明文出現   

           3)在狗中存放字串,程式中讀出比較   

           4)調用同一函數或判斷同一個全域標誌查狗   

           5)試用版軟體同正式版軟體是同一份   

           6)查狗的模組或介面名字太明顯   

           7)程式無隨機性,每次運行執行路徑都一樣   

           8)沒有檢查exe 或 dll 檔案的完整性,exe 和 dll 之間也沒有相互認證   

     2、反“監聽模擬”軟體保護鎖的編程方法  

          1)隨機查詢法:開發商使用SuperPro開發工具產生大量查詢、響應對,如:1000 對,並在程式中使用這些校正資料。在程式運行過程中,從1000 對查詢、響應對之中,隨機的抽出其中一對驗證SuperPro密碼編譯演算法。因為,校正資料很多,每次驗證密碼編譯演算法使用的“查詢響應對”可能不同,“監聽模擬”軟體即使紀錄了一部分“查詢響應對”,但無法紀錄全部“查詢響應對”。軟體每次運行時,都可能使用新的查詢響應校正資料,“監聽模擬”軟體無法響應這些新的查詢。因此,“監聽模擬”也就失去了類比、模擬SuperPro軟體保護鎖的作用。   

          2)延時法:開發商可以事先使用開發工具產生大量的校正資料,即:“查詢、響應”對,比如:200000 組“查詢、響應”對,開發程式過程中,開發商設計定時查詢、校正加密鎖的機制。在程式運行過程中,每10分鐘查詢並校正加密鎖一次,使用過的校正資料,4年內不再重複使用。即使監聽軟體24小時記錄資料,也需要4年才能紀錄完畢。4年後,軟體早已過了“熱賣期”了,使用監聽軟體的解密者也就失去了行動意義。   

         3)分組、分時法:開發商可以在程式中把查詢響應對分組,比如:1200 對校正資料可分為12組,每100對一組。程式在一年中的第一月使用第一組校正資料,第二月使用第二組校正資料,以此類推。監聽軟體就算記錄了第一月的校正資料,第二個三個月以後校正資料沒有紀錄,在以後的時間段軟體仍然無法正常使用,從而“監聽模擬”失去意義。   

         4)隨機雜訊資料法:開發商可以在程式中隨機產生查詢資料,隨機資料和真實資料混合在一起,監聽軟體即使記錄了查詢資料,也會被其隨機性所迷惑,同時也無法模擬另一個次軟體運行產生的隨機數,加密軟體也就無法破解。   

 

                              轉載自月光部落格 [ http://www.williamlong.info/ ]

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.