存档

2012年7月 的存档

[转]虚拟机检测技术剖析

2012年7月21日 没有评论

前言

在当今信息安全领域,特别是恶意软件分析中,经常需要利用到虚拟机技术,以提高病毒分析过程的安全性以及硬件资源的节约性,因此它在恶意软件领域中是应用越来越来广泛。这里我们所谓的虚拟机(Virtual Machine)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件(比如VMware,Virtual PC ,VirtualBox),你可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问网络资源等等。攻击者为了提高恶意程序的隐蔽性以及破坏真实主机的成功率,他们都在恶意程序中加入检测虚拟机的代码,以判断程序所处的运行环境。当发现程序处于虚拟机(特别是蜜罐系统)中时,它就会改变操作行为或者中断执行,以此提高反病毒人员分析恶意软件行为的难度。本文主要针对基于Intel CPU的虚拟环境VMware中的Windows XP SP3系统进行检测分析,并列举出当前常见的几种虚拟机检测方法。
[……]

逆向分析中快速定位Delphi TThread线程函数代码

2012年7月12日 2 条评论

Delphi中对线程的操作封装了一个TThread类,没接触过Delphi的人来说跟踪线程函数毫无头绪,即便是对CreateThread函数下断点,依然会遇到层层包装。

TThread是个抽象类,有个Execute的抽象方法。使用时需要自己派生出一个新类,并重载Execute方法,也就是Delphi的线程函数了。网上似乎也没有文章介绍如何跟踪Delphi线程函数,本人经过测试找到了一个看上去似乎很不错的快速定位方法。下面介绍本人的方法:

(1)在IDA的Functions Window中单击标题栏Function Name对函数名进行排序,然后就可以快速找到Classes::TThread:DoTerminate(void),双击来到函数;[……]

使用Windows CryptoAPI计算MD5

2012年7月7日 没有评论

About Windows CryptoAPI: Application programming interface that enables application developers to add authentication, encoding, and encryption to Windows-based applications.

直接使用Windows提供的CryptAcquireContext、CryptCreateHash、CryptHashData、CryptGetHashParam等API就可以计算MD5了,稍微封装了一下,可以算文件或者字符串的MD5值,文件传入UNICODE类型字符串的路径,字符串使用普通的CHAR,因为UNICODE和非UNICODE算出来的MD5不一样(字符串看上去一样,实际的BYTE不一样)。

计算MD5的测试代码如下:[……]