IDA -> main -> Name字符串,HGL345,很明显,这个程序我们之前分析过,特征字符串

这次的分析目的不一样,是要patch掉反虚拟机技术,从而使得代码运行起来

根据书中17.2.5反虚拟机的x86指令一节,如下指令:

sidt,sgdt,sldt,smsw,str,in(第二个操作数被设置为VX),cpuid

恶意代码通常并不运行这些指令,除非它们执行VMWare检测

在IDA的汇编中显示出来标红,可能是asm汇编嵌入C中,导致这部分代码逻辑和其他代码不一样

 

在main入口运行findAntiVM.py

from idautils import *
from idc import *

heads = Heads(SegStart(ScreenEA()), SegEnd(ScreenEA()))
antiVM = []
for i in heads:
	if (GetMnem(i) == "sidt" or GetMnem(i) == "sgdt" or GetMnem(i) == "sldt" or GetMnem(i) == "smsw" or GetMnem(i) == "str" or GetMnem(i) == "in" or GetMnem(i) == "cpuid"):
		antiVM.append(i)

print "Number of potential Anti-VM instructions: %d" % (len(antiVM))

for i in antiVM:
	SetColor(i, CIC_ITEM, 0x0000ff)
	Message("Anti-VM: %08x\n" % i)

结果如下:

Number of potential Anti-VM instructions: 3
Anti-VM: 00401121
Anti-VM: 004011b5
Anti-VM: 00401204

 

在cmd中运行程序,发现程序一直在跑起来,没有检测到

分析sidt:

sidt指令如果检测成功,该程序会立即删除自身

str指令检测成功,恶意代码将不会创建Malservice这个新服务

当sldt检测成功时,函数返回值不为0xDDCC0000,即不执行多线程操作

 

 

问题1:恶意代码使用了什么反虚拟机技术

 

问题2:运行IDApy脚本,结果是什么

 

问题3:每种反虚拟机技术成功执行后会发生什么

 

问题4:哪些技术生效,原因是什么

在我的机器上都没有生效,可以双击或cmd运行

问题5:怎么使得这些反虚拟机技术失效,从而让恶意代码运行

全部NOP即可