20145120《计算机病毒》高级静态分析
1
PSLIST导出函数做了什么?
从EXPORT窗口双击查看PSLIST函数
发现其调用如下图函数,上面一个判断当前的平台(与WIN32比较),操作系统版本(与VISTA比较)
调用API(CreateToolhelp32Snapshot)获取进程列表,配合其他API达到发送进程列表到远端或寻找某个特定进程的目的
2
使用图模式绘制出sub_10004E79的交叉引用图。
当进入该函数时,哪个API可能被调用?
上图中粉色的API都有可能被调用,例如获取系统语言GetSystemDefaultLangID,输出sprintf,字符串长度strlen等等
仅仅基于这些API函数,可以如何重命名该函数?
显然该函数用于获取系统语言,重命名如图
3
DLLMAIN直接调用了多少个WINDOWS API?
类似上题,用图模式绘制以下DLLMAIN,recursion depth
设为2,数下粉色的,有33个(看得有点眼花不知道数错没有)
DLLMAIN调用图太复杂不放了
多少个深度为2时被调用?
2级调用的有16个
4
尝试使用MSDN页面重点命名符号常量,使得0x10001701处对socket调用的参数更有意义
原来的参数是2(AF_INET表示IPv4),1(SOCK_STREAM表示面向TCP的Socket),6(IPPORTO_TCP表示TCP协议),还好《网络安全编程基础》学过WIN SOCK,不过当时都没有直接用数字都是用宏常量名字的。
5
搜索in指令(0xED)的使用。
search>sequence of byte(或者直接点工具栏下标101的小望远镜也可以)查找ED,记得勾选查找所有
在众多结果中找到in,双击查看
该指令与一个魔术字符串VMXh用来进行VMware检测,这在这个恶意代码中被使用了吗?
在0x100061DC位置的字符串就是要找的,右键点击可以让它从ASCII码转换为字符串VMXh,然后,显然被使用了
使用对执行in指令函数的交叉引用,能发现进一步检测VMware的证据吗?
在这段代码的头部可以看到这个函数是sub_1006196,Ctrl+x
查看它交叉引用
第一个里就找到了(红框框起来的)