我们的壳需要对原数据进行加密.而Xor未免有点太弱.为了避免我的壳在加密上被瞬间攻破.我们采用了一种新的加密算法.我称它为Xor动态加密.
这是一段从ZeroAccessRootkit中提取的算法.你可以从我的另一篇文章看到该算法的汇编形式:Xor动态加密
我将该算法转换成了C语言形式,示例如下:
#include<Windows.h>
BYTE XOR加密Data(BYTE* lpBuffer,DWORD dwSize,BYTE bKey)
{
for (DWORD d=0;d<dwSize;++d)
{
lpBuffer[d]=lpBuffer[d]+bKey;
bKey=lpBuffer[d]^bKey;
}
return bKey;
}
void XOR解密Data(BYTE* lpBuffer,DWORD dwSize,BYTE bKey)
{
for (signed int d=(dwSize-1);d>=0;--d)
{
bKey=lpBuffer[d]^bKey;
lpBuffer[d]=lpBuffer[d]-bKey;
}
}
int main()
{
char a[]={"Welcome To Beijing"};//28
BYTE Bb=10;
BYTE BRet=XOR加密Data((PBYTE)a,28,Bb);
XOR解密Data((PBYTE)a,28,BRet);
return 0;
}
为了让我们的壳变得有趣,这种算法会被如何使用呢?请听下回分解.