第三步,sub_4060D4函数的参数分析。
该函数存在一个参数存在EAX中,通过数据窗口跟随发现值为:
- spoclsv.exe
我们回到IDA查看该函数的基本组成,双击进入sub_4060D4函数。可以看到这个函数非常长,并且内部包括很多CALL函数,如果说一个个CALL分析,会发现它调用了很多的API函数。通过分析归纳该函数的作用如下:
查找当前内存中指定的进程,即查找当前是否有spoclsv.exe这个进程
总结,重命名及对应功能如下:
- sub_4060D4 -> SearchAndTerminateProcess
- 功能:查找当前内存中的指定进程,若存在,则将其终止
4、CopyFile和WinExe子函数
在CopyFile函数位置我们停下来分析。
- 0x004082A6 call CopyFileA
第一步,我们将OD跳转到文件名0x0040828C的位置,按下F2增加断点。
- 0x0040828C push eax
程序执行过来后,在这里我们跟踪下这个EAX地址。这里可以看到想要拷贝的地址就是刚才我们所连接成的字符串地址。
- C:\Windows\system32\drivers\spoclsv.exe
那么,它所拷贝的内容是什么呢?
第二步,继续分析拷贝文件的内容。
按下F8执行到0x004082A5位置,可以看到它是将当前这个病毒文件复制到drivers目录下,通过CopyFile来实现。
事实上,它是将我们的当前文件改为spoclsv.exe之后,再复制到drivers目录中。
第三步,我们继续往下分析,看到一个WinExec函数。
通过OD来到4082E3位置,我们看看这个参数来判断它想执行什么程序。
第四步,按下F2增加断点,然后F9执行过来,并在数据窗口中跟随EAX值。
可以看到,它实际想执行的就是这个spoclsv.exe程序。也就是说,它在把当前这个病毒样本复制到drivers目录之后,那么这句代码就是将它执行起来。再往下ExitProcess是结束当前正在运行的进程,即熊猫烧香的病毒样本。
注意,当病毒本体将自身复制到“drivers”中并改名后,这里就是对改了名字的病毒程序执行运行的操作,然后主体程序就退出了。如果想继续用OD进行动态分析,要么载入“spoclsv.exe”,要么对之前的一处条件跳转进行修改,令程序以为自己就是“spoclsv.exe”。