某vm加壳分析
背景
早上哥们儿那里发了一个样本过来,让弟弟简单的看看这是个什么东西,好嘛!点开就是vm警告,右键回收站。
还是得给好哥哥一点面子,在看看,放进虚拟机之后直接运行,现象就是闪一下,也没有vmp的警告,你这闪一下是什么意思?吓唬谁呢?
开摆
当第一次触发异常的时候,.text段的代码已经初始化了可以用VMPImportFixer把它给dump下来
dump下来之后在假装看看字符串,发现了如下数据
通过对该初始化函数下断点,动态调试,往上找调用的call发现了main函数
观察一下这个参数也不难发现这个就是main函数
继续看看,发现是自定义的vm代码,经典(x)vm,只有单步跟踪看看都进行了什么操作。
第一个call,检测当前进程列表中是否包含下面这些进程,以及closehandle的反调试手段,我也说为什么闪一下就妹了,原来是有反调试。
第二个call,反vm通过查询cpuid判断当前是否处在虚拟机环境
第三个call就是它的主要逻辑
每隔0x3E8写入一次文件,文件的内容先解密,解密方式为异或,之后写入文件的时候在进行加密。(这里其实有bug,并不是每隔0x3e8写一次,应该是0x3e8*2,因为每次%2==0的时候都是加密的文件名(包含特殊字符),所以这一次写入是失败的,只有是明文的文件名写入才是成功的)
结束
vmp不vm代码还是能玩,但是vm了代码基本就是右键回收站。