我正在分析一些 Visual Basic 6.0 恶意软件(在 .NET 之前),我对格式的内部结构有几个问题。我拥有的样本都已编译p-code
或已native code
编译(取决于恶意软件版本)。在过去的几天里,我阅读了 Alex Ionescu 的论文以及关于该主题的另一篇论文,我对格式有几个问题。此外,如果您有更多资源,我可以在其中获得有关 Visual Basic 内部结构的更多信息,请随时在此处发布。
所以问题是:
在
ProjectInformation
结构中有一个0x20
名为 的偏移量字段lpNativeCode
。根据亚历克斯的论文,描述说Pointer to .DATA section
。在分析我的样本时,我注意到以下字段0x0
用于p-code
编译样本,并包含编译样本的地址native code
。所以,我的问题是:使用以下字段来确定样本是否已编译p-code
或已native-code
编译是否安全?在
ObjectInfo
结构内部有偏移量0x20
和0x24
称为wMethodCount
和的字段lpMethods
。对于已p-code
编译的示例,我注意到该lpMethods
字段指向该对象的一组方法。我不明白的是出现在数组中实际方法地址之前的零字节。为了更清楚,我附上了以下图片:
第一张图片是ObjectInfo
结构的转储视图,而第二张图片是lpMethods
字段指向的方法数组。请注意实际方法地址之前的 8 个零字节(在其他一些示例中,有超过 8 个零字节,因此并不总是那个数字)。我想知道的是那些零字节是什么?
最后我的最后一个问题。在该
PublicObjectDescriptor
结构中,存在在偏移的场0x1C
称为dwMethodCount
带的描述Number of methods in Object
。此外,内部ObjectInfo
结构有一个叫做字段wMethodCount
,并在OptionalObjectInfo
有字段称为wEventCount
和dwControlCount
。我想知道的是这些领域之间的关系是什么。我注意到对于
p-code
编译样本PublicObjectDescriptor.dwMethodCount
等于ObjectInfo.wMethodCount
,而对于native-code
编译样本,以下关系不成立。