频道栏目
读书频道 > web开发 > .NET > .NET安全揭秘
3.3.2 托管环境下的线程注入实例
2012-10-24 16:54:02     我来说两句
收藏   我要投稿

本文所属图书 > .NET安全揭秘

全书共分为五个部分。第一部分:.NET安全基础,透彻讲解了.NET体系结构、程序集与反射、应用程序域和CLR寄宿等核心技术,这部分内容是.NET架构的核心,同时也是理解.NET底层安全机制的基础;第二部分:.NET平台安...  立即去当当网订购

线程注入是有关黑客编程的一个经常被提到的话题,利用宿主来实施线程注入是在托管环境下实施线程注入的重要方法。本节不会深入探讨线程注入,只为加深读者对宿主的理解。下面只举一个简单的例子,更多的内容不在本书的探讨范围内,感兴趣的读者可以自行研究。

对于非托管程序的注入,注入程序通过CreateRemoteThread函数迫使宿主调用LoadLibrary函数加载DLL,从而执行DLL的入口函数DllMain,只要我们把代码放到DllMain里,就可以被调用了。但是使用C#编写出来的DLL是没有DllMain函数的,但是托管C++的DLL是有DllMain函数的,所以我们只能借助托管C++来实施注入。

首先初始化一个非托管宿主并加载CLR,如代码清单3-14所示。

代码清单3-14初始化一个非托管宿主并加载CLR

ICLRRuntimeHost *pCLRHost = NULL;HRESULT hr = CorBindToRuntimeEx(
L"v4.0.10103",
NULL,
STARTUP_CONCURRENT_GC,
CLSID_CLRRuntimeHost,
IID_ICLRRuntimeHost,
(PVOID*) &pCLRHost);
pCLRHost->Start();

在代码清单3-14中,通过CorBindToRuntimeEx函数实现了一个非托管宿主,下面通过它来执行托管代码,如代码清单3-15所示。

代码清单3-15使用非托管宿主执行托管代码

hr = pCLRHost ->ExecuteInDefaultAppDomain(L"xh.exe",
L" xh.Program",
L"Start",
NULL,
&retVal);
3-15xh.exeC++

在代码清单3-15中,通过非托管宿主来启动托管程序xh.exe。通常可以再C++中调用一个函数,通过该函数来调用托管代码,这样就间接地实现了托管注入。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:3.3.1 托管宿主
下一篇:3.4 本章小结
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站