2009-11-03 70 views

回答

0

您可以使用CRC的有效檢查,看是否有文件被意外更改,但他們並不能有效複製保護,或者在遊戲中作弊預防。

通常,當我的程序有某種CRC校驗時,我找到執行檢查的代碼,並將彙編指令從條件分支更改爲無條件分支。這通常很容易找到,因爲通常在CRC失敗後,程序會顯示一條消息並退出。當消息發生時,我放置一個斷點,並檢查堆棧中的所有幀。然後我在堆棧中的每個點上放置斷點,再次運行程序,並查看哪一個進行了CRC校驗。

這並不是特別困難,人們通常會捆綁一些小程序,它們會對您選擇的軟件進行相同的更改。

0
  1. 您的代碼中需要一個靜態變量。該變量需要初始化爲一個十六進制編輯器很容易找到的值(例如DEADBEEF)
  2. 您需要一個crc算法(嘗試搜索谷歌)
  3. 棘手的部分。您需要將內存中的指針指向您exe文件的開頭和結尾。您可以解析代碼位置的pe文件標頭,並從代碼開始到代碼結束運行crc-algorithm。然後你有價值。
  4. 當然,您必須檢查計算值與靜態變量中的值。
  5. 插入值 - 取決於您建立的頻率,您可能需要編程一個工具。您始終可以運行程序並在比較中設置斷點。然後記下該值並將其十六進制編輯爲可執行文件。或者你也可以創建一個獨立的程序來解析pe-header,並使用相同的函數(這次是在文件中)並打好補丁。雖然這可能很複雜,因爲我不知道操作系統在操作系統期間發生了什麼變化加載。