D01 pushad       寄存器入栈,在LordPE设置为新入口点
D02 call D03        调用下一行代码的VA,在OD中也可采用二进制编辑,输入E8 00000000
D03 pop ebx       出栈,ebx的值就是这一行代码的VA,也就是D03
D04 sub ebx,A1    A1是这样计算的,加密点起始的VA减去上面的D03,ebx的值就是加密点起始的VA
D05 xor ecx,ecx     清空ecx为下面循环解密xor的字节做准备
D06 mov ax,5D62     传5D62给ax做初始密匙用,可以修改的
D07 xor word ptr ds:[ebx+ecx*2],ax 对ebx+ecx*2处进行双字节解密
D08 inc ecx       ecx加1,也就是密匙加1,动态变换密钥
D09 inc eax       eax加1,累计解密多少次了.为下面判断做准备
D10 cmp ecx,A2    此处的A2就是加密的代码的总长度除二,计算公式是:(最终VA-起始VA+1)/2 (十六进制)
D11 jl short D07 没有解密完就跳,继续解密
D12 popad           寄存器出栈,如果还要加密下一段,此处从D04开始继续。
D13 jmp到原入口点
需要计算A1和A2

加密二段的十六进制代码如下:
60 E8 00 00 00 00 5B 81 EB 00 20 00 00 33 C9 66 B8 7D 4A 66 31 04 4B 41 40 81 F9 11 11 00 00 7C
F2 81 C3 00 10 00 00 33 C9 66 B8 7D 4A 66 31 04 4B 41 40 83 F9 50 7C F5
posted on 2009-11-24 20:47  电仔的博客  阅读(736)  评论(0编辑  收藏  举报