点评:以前看Kaba的驱动,它
发现它的kl1.sys读
参数在
启动,然后解密数据驱动下的
驱动程序和
内存分配负载本身(加载代码填充IAT部分BUG)。
写一个解密程序:
只是klick.sys
#包括stdafx.h。H
#包括窗口。H
#包括
以前看Kaba的驱动,发现其kl1.sys读参数在启动,然后解密数据驱动下的驱动程序和分配内存加载(加载代码本身充满了IAT部分BUG)。
写一个解密程序:
只是klick.sys
#包括stdafx.h。H
#包括窗口。H
#包括恒基达鑫。H
#包括malloc的。
无符号char数据{ 256 } { { { { }
0x42,0xa3,0x53,0x04,0x4d,0x4b,0xa3、0xC4,0xec,0xf8,0xe5、0x41。
0x95,0x59,7d,0xf3,0x98,0xbd,0xdc、0xd4,0x1F,0xe9,0xc1,0xd9。
0x85,0x0b,0x7B,0x14,0x56,0x12,0x33,0xcc,0xfd,0x47,0x48,0xf5。
0x3d,0x2F,0xB6、0xC4,0x66,0xd3,0xdd,0x73,0x54,0xae,0xe4,0x4f。
0xbc,0x4e,0x7c、0x66,0xf4,0x90,0xcd,0xA1,0xa2,0xf7,0xB6,0xdd。
0x10,0x14,0x20,预料,0xf4,0x3C,0x2c、0x7a,0x87,0x30,0xab,0x3C。
0x4d,0x63,0xad,0xcb,0xb3,0x13,0x94,0xfa,0x5b,0xd5,0x88,0x98。
0x20,0x3a,0xdb,0x7a,0x80,0xbd,0x1d,0x08,0xc3,0x05,0x56,0xca。
0x41,0x43,0x6a,0x2c,0x64,0x27,0x53,0xcd,0xe9,0x09,0x45,0x16。
0x0d,0x8d,0xba,0x1B,0xe1,0xf3,0xd2,0x50,0xAA,0xd1,0x3C,0xca。
0x59,0x2c,0xA1,0x21,0x9b,0x08,0xdb,小数,0x2c,0x62,0x6e,0xff。
0x90,0xFF,0x0c,0x59 0x7B 0x3a 0x08,,,,0xec,0x0A,0xc9,0xc3,0x4c。
0xc8,0x4e,0xa5、0x9c,0xb0,0xee,0xf4,0xee,0x4d,0x93,0x13,0x67。
0x01,0x5f,0x1F,0x61,0x8f,0x9e,0x57,0xac,0x44,0xb5,0xfb,0x40。
0xda,0x36,0xea,0x49,0x64,0x05,0x1a,0x1B,0x4e,0xd4,0x29,0x4d。
0xC4,0xf2,0x39,0x98,0xc9,0x2F,0xb7,0xcb,0xbd,0x6d,0xfc,0x3e。
};
int main(int argc、argv char * { })
{
文件*文件;
如果(argc!= 2)
{
printf(
输入系统名称!);
返回0;
}
printf(解码DRV文件:%s
文件= fopen(argv { 1 },R B);
Fseek(文件,0,seek_end);
页T = ftell(文件);
printf(文件长度BX
则U =(ULONG)malloc(T);
Fseek(文件,0,seek_set);
DWORD Z = fread((PVOID)U,1,T,文件);
Fseek(文件,0,seek_set);
页我;
为(i = 0;i;t;i)
{
__asm
{
把EDX
把ecx
mov EDX,U
mov ecx,我
mov eax,我
和EAX,0xff
MOV AL,数据{中}
{ Al } XOR ECX EDX,
pop ecx
流行分析
}
}
printf(%
Fwrite((PVOID)U,1,T,文件);
Fclose(文件);
printf(好!);
返回0;
}