檢測 CRC 校驗記憶體補丁

2021-10-10 22:17:40 字數 1645 閱讀 1653

通常程式中至少包括了**段,資料段,而資料段中所儲存的資料是經常會發生變動的,例如我們的全域性變數,靜態變數等都會預設儲存在資料段,而**段則不會發生變化,我們在檢驗時只需要注重.text記憶體段中的資料完整性即可,針對記憶體的校驗同樣可以抵禦偵錯程式的cc斷點,該斷點原理就是在下端處寫入int3指令,同樣可以檢測得到。

校驗思路如下

1.首先從記憶體得到pe的**節的rva和節大小

2.根據得到的rva和節大小計算出crc32或是rc4值

3.讀取自身儲存的原始crc32值,與校驗結果進行比較

**:

#include

#include

dword crc32

(byte* ptr, dword size)

crctable[i]

= crctmp1;

}// 計算crc32值

dword crctmp2 =

0xffffffff

;while

(size--

)return

(crctmp2 ^

0xffffffff);

}// 檢查記憶體中crc32特徵值

上方**是保護了整個程式,在實際應用中,為了提高效率,有時我們只需要保護其中乙個片段**就好,這樣可以提高效率,所有我們對上面**稍作修改即可實現針對特定片段的記憶體校驗。

#include

#include

dword crc32

(byte* ptr, dword size)

crctable[i]

= crctmp1;

}// 計算crc32值

dword crctmp2 =

0xffffffff

;while

(size--

)return

(crctmp2 ^

0xffffffff);

}// 檢查記憶體中crc32特徵值

通過使用磁碟校驗結合記憶體校驗兩種方式綜合保護,可以極大的提高軟體的安全性,繞過方式則是找到哪兒跟全域性變數將其修正為正確的值即可,同樣的也可以更暴力一些直接將判斷條件改掉均可。

資料校驗 CRC校驗

工作原理 crc即迴圈冗餘校驗碼 cyclic redundancy check 是資料通訊領域中最常用的一種查錯校驗碼,其特徵是資訊字段和校驗欄位的長度可以任意選定。迴圈冗餘檢查 crc 是一種資料傳輸檢錯功能,對資料進行多項式計算,並將得到的結果附在幀的後面,接收裝置也執行類似的演算法,以保證資...

CRC校驗原理

crc校驗原理 1 迴圈校驗碼 crc碼 是資料通訊領域中最常用的一種差錯校驗碼,其特 徵是資訊字段和校驗欄位的長度可以任意選定。2 生成crc碼的基本原理 任意乙個由二進位制位串組成的 都可以和乙個系 數僅為 0 和 1 取值的多項式一一對應。例如 1010111對應的多項 式為x6 x4 x2 ...

CRC校驗程式設計

程式的宗旨 通過編寫crc的校驗程式,加深對crc原理的理解,同時學會將書本上的原理運用於實際,動手實踐才能學得更快。注 本文關於crc原理那部分內容,來自網路蒐集。1.需求分析 編寫乙個crc校驗的模擬程式,該程式實現的功能如下 輸入 一串二進位制位元串 輸出 crc校驗碼 2.crc校驗原理分析...