5.分析sub_4057A4后续删除功能
接着我们继续分析,由于之前进行了重命名操作,所以代码的可读性更好了,从0x00408079位置下面的代码我们都能看懂。
0x0040807E test al, al 0x00408086 push 80h 0x 004080C5 call SetFileAttributesA
它会根据上一段代码的查找结果进行判定al,即如果当前目录下Desktop_.ini文件存在,那么就会调用SetFileAttributesA函数。该函数会改变他的属性,将它的属性改为80h所代表的值,即该文件的文件属性调整为NORMAL(正常属性)。
继续往下看, 调用了一个Sleep函数停止1毫秒。停止1毫秒之后,它接着调用DeleteFileA函数将Desktop_.ini删除。正常来讲,病毒还没有运行的时候,这个Desktop_.ini文件应当是不存在的;如果存在的话,病毒首先会改变这个文件的属性,再将这个病毒给删除掉。
push 1 call Sleep call DeleteFileA
这里看到一个未知函数sub_4040CC,它的参数是[ebp+var_3C4],事实上3C4就是文件的路径。将文件路径赋值给EAX,我们进入sub_4040CC函数。发现其功能:
验证EAX是否存在,即判定文件的路径是否为空
如果文件不存在它会直接执行loc_408110位置的函数,sub_4040CC其实就是一个验证机制,在IDA中按下ESC返回,我们给它进行重命名。
总结,重命名及对应功能如下:
- sub_4040CC -> CheckPathIsExist
- 功能:检测文件的路径是否存在
6.sub_4078E0子函数
我们接着分析下一个函数
0x00408126 call sub_4078E0
第一步,我们在IDA中大致看下函数的内容。
我们可以看到这个函数非常的长,且也调用了很多其它的函数,那么看上去很难分析清楚这个函数到底是做什么的。这里我们先不管其具体的实现细节,只看看该函数执行完后,这些参数或寄存器位置发生了什么变化,主要关注该函数执行前后,程序使用了哪些寄存器。
第二步,打开OD跳转到40811D位置,按下F2增加断点,再按F9执行过来。
注意,病毒逆向分析就是调用IDA和OD反复调试的过程。
第三步,在OD中分析具体代码。
- mov eax, dword ptr ss:[ebp-0x3CC]
- lea edx, dword ptr ss:[ebp-0x4]
- call 004078E0
首先它是将EBP-3CC赋值给EAX,再将EBP-4赋值给EDX,调用call函数。
我们现在按F8来步过这个call函数,再观察数据窗口中存在什么变化。可以看到执行完call函数后,这个函数用了很大一片区域写入了非常多看似无意义的字符,结合右边的ASCII码,可以将这些内容理解为暴力P解的字典。
- 病毒的编写者企图利用暴力P解的方式来攻破计算机中某些验证机制
我们F8步过这个函数看一下数据窗口的数据变化
当然这些内容还是非常多的,病毒作者也写入了很多其他信息,有兴趣的作者可以好好分析下。这些信息有助于我们获取病毒的行为信息,只有当我们深入分析其原理和实现过程,才有助于我们获取病毒的行为信息。
总结,重命名及对应功能如下:
- sub_4078E0 -> WriteVirusInfoToMem
- 功能:写入病毒信息到内存中,病毒作者企图利用暴力P解的方式,来攻破计算机中的某些验证机制