Xor動態加密

2021-07-02 14:12:44 字數 915 閱讀 5299

一直對加密比較關注.最近在分析zeroaccessrootkit這款rootkit,也叫max++,是一款優秀的rootkit.使用了很多讓人眼前一亮的技術.它流行於2023年.在感染最高峰2023年統治著數量高達190萬的計算機組成的殭屍網路.

在它的**前端使用了加密演算法用來給反彙編者造成混淆,下面是它的解密程式:

00413a2b > /ad lods dword ptr ds:[esi]//從目標讀取內容到eax

00413a2c . |33d0 xor edx,eax//初始金鑰在edx,更新金鑰

00413a2e . |2bc2 sub eax,edx//結果放在eax

00413a30 . |ab stos dword ptr es:[edi]//存回原位

00413a31 . |3bfd cmp edi,ebp

00413a33 .^\7d f6 jge 00413a2b//直到讀取位置為ebp,解密完畢

00413a35 . c3 retn

算術運算和位運算的結合體.

以下是對該演算法的歸納:

倒推可知其加密流程,其中d為初始金鑰,[esi]待加密資料,[edi]為儲存加密結果的地方.

[edi]=[esi]+d;

d=d^a;

解密:

d=d^[esi];

[edi]=[esi]-d;

加密產生最後的d儲存為解密金鑰.

解密方向和加密方向相反.

在彙編中使用cld,std控制串操作指令來控制讀取方向.

你可能會驚嘆:怎麼會這麼弱?其實此人並沒有意圖構建一種很強的加密方式.

好了本文就到這裡.一直計畫寫一篇談談如何構建乙個超級程式,我會在其中對加密和自保護進行一些討論.see you late.

加密101 異或(xor)

異或 xor 是邏輯運算子,符號是 當輸入同時為真或同時為假時,輸出為假。否則,輸出為真。xor可以叫做 可程式設計反向器 乙個輸入bit位決定要不要對另乙個輸入bit位取反。異或 xor 操作的圖示如上,在圖示左邊pi是明文文字 plaintext 的bit位,i是bit位的索引,因為我們要處理不...

XOR (異或)加密簡單實現

參考 一 xor 運算 邏輯運算之中,除了 and 和 or,還有一種 xor 運算,中文稱為 異或運算 它的定義是 兩個值相同時,返回false,否則返回true。也就是說,xor可以用來判斷兩個值是否不同。true xortrue false false xo lse false true xo...

c語言實現xor加密

異或運算 定義 它的定義是 兩個值相同時,返回false,否則返回true。也就是說,xor可以用來判斷兩個值是否不同。特點 如果對乙個值連續做兩次 xor,會返回這個值本身。1010 1111 第一次異或後結果 0101 0101 1111 第二次異或後結果 1010 上面 中,原始值是1010,...