WEB开发网
开发学院网络安全安全技术 托管注入深入研究 阅读

托管注入深入研究

 2008-12-11 13:36:11 来源:WEB开发网   
核心提示: 2. 虽然多次单击按扭注入时,DLL_THREAD_ATTACH都会得到通知;但反过来,托管注入深入研究(5),得到了通知,不意味着就是远程注入:一个最明显的情况是,而且,你可以编写自己的插件,对CreateThread的调用就会导致DLL_THREAD_ATTACH收到通知,但这并非远程

2. 虽然多次单击按扭注入时,DLL_THREAD_ATTACH都会得到通知;但反过来,得到了通知,不意味着就是远程注入:一个最明显的情况是,对CreateThread的调用就会导致DLL_THREAD_ATTACH收到通知,但这并非远程注入

我的解决办法是:每次主程序调用CreateRemoteThread迫使宿主调用LoadLibrary加载dll的时候,都会使模块计数器加1,根据模块计数器的值的变化,就可以确定是否是远程注入了。

示例程序说明:

示例程序包括3个文件:

1. SuperSpy.exe 用C#写的主程序

2. Invoke.dll 用C++写的dll,也只能用C++来写

3. PropertyControl.dll 用VB.NET写的插件,它不是必需的

除了Invoke.dll必须用C++外,其余两个可以用任意语言写。

你也许会感到奇怪,为什么有两个dll?

其中PropertyControl.dll是一个插件,你完全可以把所有的代码都放到Invoke.dll中,之所以用插件的形式,只是为了方便大家编写自已的插件,插件的规范是,在任意一个类中实现以下成员(你可以用你习惯的语言来编写这个插件):

public static void Inject();
public static string Description
{
get;
}

两个成员都必须是公共、静态的,其中Inject方法是注入后要调用的方法;Description属性是用于描述插件作用的。

我自已实现的插件的功能是:查询和编辑一个托管程序中所有窗口(包括控件)的属性,这是一个很强大的功能,我举两个例子:

1. 星号密码查看。由于已经注入,本来显示为星号的密码,可以直接通过Text属性获得

2. 灰色按扭突破。只需将窗口的Enabled属性设置成true即可

以往要实现这两个功能,都需要分别编写相关的程序,而现在仅仅是这个插件的一个简单应用。而且,你可以编写自己的插件,来实现自己的要求。

上一页  1 2 3 4 5 

Tags:托管 注入 深入

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接