对恶意软件所执行的指令的记录是分析过程中非常重要的一个步骤,通过记录下来的指令序列,研究者可以精确的描绘出其对系统做出的更改和程序的功能。通过VT技术,可以在Guest系统中设置一个陷阱(trap)标志来触发系统的异常机制,从而能够单步调试恶意程序。
同样,恶意软件在系统中的大部分操作都离不开对内存空间的读写。类似于上面对指令序列的记录,设置一个陷阱,使得Guest系统中的所有页面错误(Page Fault)的处理都转向到Host中,即VMX-root模式下,阻止Guset系统对其进行处理。关键代码如下:
hvm_op.domain = (domid_t)dom;
hvm_op.cmd = XEN_DOMCTL;
hvm_op.u.command_code= XEN_DOMCTL_ MEMWRITE;
hvm_op.u.on_or_off = on_or_off;
result = xc_domctl(xc_iface, &hvm_op);
if(0 == v->arch.paging.mode->shadow.set_np(current, va, on_or_off, need_lock)) {
return -1;
}else{
return 1;
}
return 1;
这样,可以分析出产生页面错误的原因,如果是系统正常的页面错误,则将其导向到Guest系统中。而那些由恶意程序产生的页面错误,则可以在Host系统中进行分析后再决定是否放行。
|