20145326蔡馨熤《计算机病毒》——高级静态分析
尝试使用IDA PRO分析文件lab05-01.dll,回答如下问题:
1.PSLIST导出函数做了什么?
- 首先在view中选择exports窗口,然后找到PSLIST导出函数。

- 双击PSLIST,然后按空格键,转换为图形模式,这样的话,观察更直观。

- 双击第一个call语句。看看有什么发现。如图所示。


- dwplatformid与2进行比较,看现在是不是处于WIN32-NT的这个平台。
-
majorversion与5进行比较, majorversion的值如果大于5的话,那说明它是Vista及以上的操作系统。 majorversion的值如果小于等于5的话,那说明它是Vista以下的操作系统。(根据MSDN得知)
-
《Microsoft Developer Network》(简称MSDN),是微软的一个期刊产品,专门介绍各种编程技巧。同时它也是独立于Microsoft Visual Studio制作的唯一帮助。目前大部分文章存放在MSDN的网站上,任何人可以免费参阅。
-
再往下看,点击左边那个call语句。





- 分析到这里呢,我们可以得知这个PSLIST导出函数,可能会通过网络,发送我们的进程列表,或者寻找我们这个列表中某一个特定的进程名,然后进行下一步操作。
2.使用图模式绘制出sub_10004E79的交叉引用图。当进入这个函数时,哪个API可能被调用?仅仅基于这些api函数,你可以如何重命名这个函数?
- 在Function name栏中找到sub_10004E79。




- 我觉得获得系统默认语言的这个函数很重要吧。
- send这个函数也很重要吧。像打印等的函数就不那么重要了。
- 于是进行如下修改:

- 修改后,我们可以非常直观的了解到这个函数的功能是什么。

3.DLLMAIN直接调用了多少个WINDOWS API?多少个深度为2时被调用?
- 先找到DLLMAIN。然后进行如下操作,将深度设为2。

- 它的交叉引用图很复杂啊。DllMain直接调用了4个API,有31个深度为2时被调用。

4.尝试使用MSDN页面的socket和IDA中的命名符号常量,使得0x10001701处对socket调用的参数更有意义。
- 先按下“G”键,跳到这个位置去。
- 可以发现调用socket函数之前,压栈了3个参数,这里要注意,2是第一个参数,1是第二个参数,6是第三个参数。








5.搜索in指令(OxED)的使用。这个指令和一个魔术字符串VMXh用来进行Vmware检测。这在这个恶意代码中被使用了吗?使用对执行in指令函数的交叉引用,能发现进一步检测vmware的证据吗?


- 在这里我们可以发现一个字符串,564D5868h。这代表什么意思呢?我们可以用右键将它转换为一个字符。于是VMXh出现了。


- 按一下空格,切换到图形界面。
- 在开头可以看到一个sub_10006196,交叉引用一下。

- 可以发现有三处交叉引用调用了这个函数。看看第一个。

- 下面又看见了一个字符串:Found virtual machine,install cancel。

- 于是可以说这个函数就是判断目前我们是否在VMware虚拟机中进行操作。
在这次实践的过程中,我一直在想一个问题。就是如何在没有这些问题的提示下,使用IDAPro对一个恶意代码进行高级静态分析。必须得加强练习啊,毕竟熟能生巧,只有实践多了,思维能力和分析能力才会提高。除了这些,我认为汇编和反汇编也是很重要的,工具交互使用的能力也需要提高。在接下来的学习中,我需要查漏补缺,以此来不断提高。
20145326蔡馨熤《计算机病毒》——高级静态分析
原文:http://www.cnblogs.com/cxy1616/p/6886354.html