《恶意代码分析实战》第七章实验7-2的程序使用了COM进行联网通信。首先把书上第七章关于COM介绍的原文贴出来:



总结一下,就是说恶意程序有时会通过另一个服务程序提供的接口函数实现一些操作,书上给的例子就是调用IE浏览器的 IWebBrowser2 接口的 IWebBrowser2Vtbl.Navigate 函数实现访问WEB地址。
逆向分析实验7-2,我们会看到如下代码(已注释):

HRESULT CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter,
DWORD dwClsContext,
REFIID riid,
LPVOID *ppv
);
关注 CoCreateInstance 函数的参数,rclsid 是一个全局变量,类型是 GUID,里面的值是这样的:

这个值可以在注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{0002DF01-0000-0000-C000-000000000046} 找到,里面存储的字符串值就是IE浏览器:

riid 参数表示接口,这个值是 IE 程序指定的,在本例中表示 IWebBrowser2 接口:

调用 CoCreateInstance 后,通过参数 ppv 返回一个函数指针表,在本例中,调用了 +2C 偏移指向的函数,我们可以在结构体视图添加一个标准结构体 IWebBrowser2Vtbl:

然后应用到汇编中,可以自动识别到 +2C 处是 Navigate 函数:

因此,这个程序的功能之一就是通过IE提供的 IWebBrowser2Vtbl.Navigate 函数访问了 http://www.malwareanalysisbook.com/ad.html
本文档介绍了如何通过逆向分析恶意代码来理解其利用COM组件,特别是IWebBrowser2接口进行网络通信的过程。在实验7-2中,程序通过CoCreateInstance函数创建对象,并调用IWebBrowser2Vtbl结构体中Navigate函数,访问特定网页。通过对全局变量rclsid和riid的分析,揭示了恶意程序如何与IE浏览器交互以实现网络通信。
2618

被折叠的 条评论
为什么被折叠?



