您的位置:首页 > 其它

DLL注入技术之ComRes注入

2013-06-28 16:24 183 查看
DLL注入技术之ComRes注入

    ComRes注入的原理是利用Windows 系统中C:\WINDOWS\system32目录下的ComRes.dll这个文件,当待注入EXE如果使用CoCreateInstance()这个API时,COM服务器会加载ComRes.dll到EXE中,我们利用这个加载过程,移花接木的把ComRes.dll替换掉,并在伪造的ComRes.dll,然后利用LoadLibrary()将事先准备好的DLL加载到目标的EXE中。
1.编写测试文件
    为了向大家完整的演示ComRes注入的过程,我们需要先建立一个使用CoCreateInstance()函数的示例程序。
    新建atl的DLL工程,这个工程中只提供了一个简单的com接口方法TestMsgBox,主要代码如下:

STDMETHODIMP CCMyCom::TestMsgBox(void)

{

    // TODO: 在此添加实现代码

    MessageBox(0,0,0,0);

    return S_OK;

}

复制代码
这时编译后会产生一个tlb文件,他是调用com接口方法工程中所要使用的导入文件。新建mfc对话框工程,在stdafx.h文件中加入#import  "tlb文件路径\xxxx.tlb
" no_namespace。添加一个BUTTON控件,双击后在单击事件中写入调用atl中com接口方法。主要代码如下:

void CReplaceRescomInjectDlg::OnBnClickedCallcom()

{

    // TODO: 在此添加控件通知处理程序代码

    CoInitialize(NULL);

    CLSID clsid;

    HRESULT hr = CLSIDFromProgID(OLESTR("CallComDll.CMyCom"),&clsid);

    ICMyCom *ptr;

    hr = CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,

        __uuidof(ICMyCom),(LPVOID*)&ptr);

    ptr->TestMsgBox();

    CoUninitialize();

}

复制代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: