20145233计算机病毒实践九之IDA的使用
20145233计算机病毒实践之IDA的使用
PSLIST导出函数做了什么
-
这个函数是一个export函数,所以在view中选择export
-
查到后,双击打开这个函数的位置
-
仔细看这个函数可以发现这个
GetVersionExA
-
并且后续进入了其它函数,可以看到在循环使用
-
通过循环使用,获得了我们的进程信息
-
通过网络发送我们的进程列表,或者获得我们列表某一个特定的进程名,来进行后续操作。
使用图模式绘制出sub_10004E79的交叉引用图
-
sub_10004E79的交叉引用图,当进入这个函数时,哪个API可能被调用?仅仅基于这些API函数,你可以如何重命名这个函数?
-
ctrl+x打开交叉引用可以看到三个函数
-
双击这些函数,观察每个函数的行为
-
根据行为得到如下图的命名(因为它主要目的是获得了系统的语言并发送出去)
-
重命名比较简单右键
Edit
就可以改,这样的好处就是不只是看代码,改成函数名字后,可以直观的知道这个函数的意义。
-
通过操作,可以发现这个API函数主要是获取操作系统的语言。
DLLMAIN直接调用了多少WINDOWS API
-
这些WindowsAPI有多少个深度为2时被调用?
-
回到DLLMAIN我们,右键修改深度为2
-
这时候会自动打开一个图,很乱,因为里面涉及到的函数很多,所以我直截取一部分,
尝试使用MSDN页面
-
我先查找了什么是MSDN?
- 这是微软公司面向软件开发者的一种版本。MSDN 涵盖了所有的可以被开发扩充的平台和应用程序,因此如微软公司的百科全书 Encarta,或者是各种游戏,是不包括在MSDN 之内的,因为这些产品直接面向最终用户,没有进行程序开发的必要
- MSDN版是属于测试版的系统,MSDN的意思是Microsoft Developer Network,也就是微软的软件开发伙伴论坛,一般软件即将发售的时候微软都会提供一个测试版给内部的技术人员、开发人员进行测试,当然并不是所有的人 都能得到这个版本的,只有微软比较信赖的开发者或技术人员才能得到。然后这些版本会通过各种途径泄漏出来,这就是我们常见的MSDN版,MSDN版因为还 是属于测试版,所以一般用户如果只是尝鲜的话可以试试,不建议长期使用
-
使用MSDN的页面中socket和IDA中的命名符号常量,在0x10001701处对socket调用的参数更有意义
-
G打开查找:输入这个地址
-
可以找到三个push参数,每个参数代表不一样的含义,通过右键
Use standard...
可以转换成可以看懂的函数AF_INET
-
修改MSDN的页面中socket和IDA中的命名符号常量,在0x10001701处对socket调用的参数更有意义
-
这里我们需要查找MSDN的socket代码,每个数字都代表不一样的含义
搜索in指令
- 这个指令和一个魔术字符串VMXh用来进行VMware检测。这在这个恶意代码中被使用了吗?使用对执行in指令函数的交叉引用,能进一步发现检测Vmware的证据吗?
- 查找in指令,用空格进入图模式。
- 可以找到一个不叫VMXh的,但是右键转换后,发现这个就是所要找的位置。
- 继续在这个后面观察,可以看到下图红框中的这句话,证明Vmware的使用证据
实践感想
- 本次实践是实践八的后续,总体来说,IDA的功能还是很强大的,实践内容说实话还是比较有难度的,在指导下虽然可以快速的做出来,但是要理解还是比较难的,因为都是英文,并且代码深刻理解需要较为深厚的汇编知识,我对于一些汇编知识已经有些遗忘了,在理解的时候想了有一些时间。
- 但是通过IDA的分析,可以理解里面的很多函数的意思,里面的图文解释的很清楚,这很便于理解,相比之前的那些分析工具它有很强的连通性,容易明白一步完了接下来的操作,这是其他不具有的,使用了IDA后明白了自己学到的还是很少,自己应该在以后的学习中更注重实践,感到自己实践学到的比单纯的听学到的更多。