信息安全第五次作業小結

小結一下軟件版權保護專題的作業。下面逐條介紹一下用到的技術

-----------------------------------------------------------------------------------------------------------------

1. TLS反調試技術

什麼是TLS反調試技術請看下面一篇文章,講得非常詳細:

http://uzone.univs.cn/news2_2008_39971.html

可以在TLS回調函數中新開一個線程用來監視調試器。具體就是枚舉窗口,查找調試器的窗口,一旦發現調試器窗口就退出自身進程,防止被調試。

破解方法也很簡單,因爲這種方法只能對付像OD,WinDbg這樣比較老實的ring3調試器,對於XueTr這樣的ring0級進程監視器毫無辦法,監視線程可以簡單地被幹掉。

2. 動態驗證口令

這個比較簡單,就是隨機生成一串字符串作爲驗證口令。作業要求最終要通過某種途徑顯示出自己的passkey,所以這個驗證口令必須能被獲取。所以我用了命令行參數。如果是以命令行啓動的,參數爲/f “路徑”,則在對應路徑下把驗證口令寫入文件。這樣既能使對方無法通過社會工程學的方法猜解口令,又能滿足作業的要求。

3. 口令驗證

口令驗證模塊做了特殊處理。

首先,所有和用戶交互的字符串都經過加密後以十六進制硬編碼的方式存在全局變量中,這樣能防止調試器和IDA這樣的靜態反彙編器反彙編出字符串常量而找到口令驗證的代碼段。僅在需要的時候解碼字符串。

其次,在進入驗證函數前先把解密字符串的密鑰更改成其他值,只有在口令驗證通過後纔將密鑰改回真實值。這樣就能防止75則74的爆破,因爲密鑰不對,就算無條件跳轉到驗證通過的分支裏也沒法顯示passkey。

4. MessageBox的特殊處理(僅針對此次作業)

借鑑inline hook的思路,將MessageBox的前幾個字節複製到自定義的跳轉函數中,執行完畢後再跳轉到真實的MessageBox中,這樣就能防止OD的模塊間調用檢查。因爲OD的模塊間調用檢查的功能應該是看call後面的地址是否和已知的API地址匹配來確定調用的API的名字的。

-----------------------------------------------------------------------------------------------------------------

各位歡迎拍磚

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