加密狗原理-高強度加密-程序加密技巧

加密狗原理,加密狗加密的基本原理
本文將介紹軟件加密加密狗原理,加密狗加密的基本原理的一些編程技巧,以及軟件開發者將如何編寫安全可靠 的代碼,如何對付各種各樣的加密狗破解,編寫加密程序時應該儘量避免的一 些問題等等。

加密狗加密的基本原理
  開發商程序通過調用硬件加密狗的接口模塊對硬件加密狗操作,硬件加密狗響應該操作並通過接口模塊將相應數據返回給開發商的應用程序。開發商的應用程序可以對返回值進行判定並採取相應的動作。如果返回無效的響應,表明沒有正確的狗,開發商可以將應用程序終止運行,或者讓應用程序以錯誤的方式執行。
程序加密技巧1-如何提高加密強度
  下面,我們以Sentinel SuperPro加密鎖爲例,詳細介紹一下程序加密技巧,使用如何在編程的過程中提高加密強度的方法。
  1、程序加密技巧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
  2、反“監聽仿真”軟件保護鎖的編程方法
  1)隨機查詢法:開發商使用SuperPro開發工具生成大量查詢、響應對,如:1000 對,並在程序中使用這些校驗數據。在程序運行過程中,從1000 對查詢、響應對之中,隨機的抽出其中一對驗證SuperPro加密算法。因爲,校驗數據很多,每次驗證加密算法使用的“查詢響應對”可能不同,“監聽仿真”軟件即使紀錄了一部分“查詢響應對”,但無法紀錄全部“查詢響應對”。軟件每次運行時,都可能使用新的查詢響應校驗數據,“監聽仿真”軟件無法響應這些新的查詢。因此,“監聽仿真”也就失去了模擬、仿真SuperPro軟件保護鎖的作用。
  2)延時法:開發商可以事先使用開發工具生成大量的校驗數據,即:“查詢、響應”對,比如:200000 組“查詢、響應”對,開發程序過程中,開發商設計定時查詢、校驗加密鎖的機制。在程序運行過程中,每10分鐘查詢並校驗加密鎖一次,使用過的校驗數據,4年內不再重複使用。即使監聽軟件24小時記錄數據,也需要4年才能紀錄完畢。4年後,軟件早已過了“熱賣期”了,使用監聽軟件的解密者也就失去了行動意義。
  3)分組、分時法:開發商可以在程序中把查詢響應對分組,比如:1200 對校驗數據可分爲12組,每100對一組。程序在一年中的第一月使用第一組校驗數據,第二月使用第二組校驗數據,以此類推。監聽軟件就算記錄了第一月的校驗數據,第二個三個月以後校驗數據沒有紀錄,在以後的時間段軟件仍然無法正常使用,從而“監聽仿真”失去意義。
  4)隨機噪聲數據法:開發商可以在程序中隨機產生查詢數據,隨機數據和真實數據混合在一起,監聽軟件即使記錄了查詢數據,也會被其隨機性所迷惑,同時也無法仿真另一個次軟件運行產生的隨機數,加密軟件也就無法破解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章