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即可