逆向分析使用COM组件对象模型的代码
《恶意代码分析实战》第七章实验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
《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读总结
以上是生活随笔为你收集整理的逆向分析使用COM组件对象模型的代码的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: reflective dll injec
- 下一篇: CreateFileMapping 内存