一直對加密比較關注.最近在分析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,...