Xor动态加密

一直对加密比较关注.最近在分析ZeroAccessRootkit这款Rootkit,也叫Max++,是一款优秀的Rootkit.使用了很多让人眼前一亮的技术.它流行于2009年.在感染最高峰2013年统治着数量高达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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值