通用托管代码注射器

通用托管代码注射器
http://chengchen.cnblogs.com/
      可以将插件形式的托管DLL注射进入任意正在运行的程序中,达到某种目的(反编译、破解、dump)。无论你使用的是C#还是VB.NET 还是VC++.NET编写的插件都可以。
    为什么要将托管代码注射到程序中呢?因为很多DONET程序是经过加密的,用Reflector软件是无法反编译查看的。但是当他运行后,最终会将自己交给JIT处理,这时如果注入到该程序就可以使用你自己的代码来获得该程序的相关信息。

我这里有一个Crackme。
用Reflector查看是这样的:


看我来操作
1、先运行这个Crackme,再运行“通用注射器”,拖动“通用注射器”的箭靶到程序上。


2、这时会弹出一个对话框进行选择插件,文本框中会有该插件作用的信息描述。


3、选择相关的插件,点击确定,便可以使用插件提供的功能了。这里我选择的是我自己写的一个查看程序集中信息的插件(附件提供源代码)。便可以自动弹出这样的对话框:


4、双击CrackMe1,….. (第二个)或者选择第二个点击确定。就会填出可以查看该CrackMe相关信息的窗体:


5、  这样我们就可以查看这个被加密的CrackMe的信息,而且我们很快可以分析出EncryCode类中可能就包含注册算法。可以尝试通过编写反射注册机的方法获得注册码。(当然仍然需要你将其注入到该CrackMe进程中获得注册码)反射注册机源代码参考附件。

    当然可以做的不仅仅是这些,只要你有充足的想象力,就可以编写出特定功能的插件。这里我提供两个插件,一个就是刚才这个可以查看信息的插件,还有一个就是DOENT的灰色按钮克星插件,提供全部插件源代码,其中灰色按钮克星包括C#和VB.NET两套代码。

如何编写插件:(以C#为例子)
1、  用VS建立一个C#类库。
2、  将任意一个类设置为public类,而且其中至少要写两个静态方法:
其一就是:这个方法就是实现插件的功能的方法。
public static void InjectMain()
{
     
}

还有一个是:这个就是插件的信息描述部分了,两个方法必须都存在,而且必须为静态方法!!!!可以查看附件源代码参考编写。
public static string InjectAbout()
{
    
return "插件描述";
}

点击此处下载通用代码注射器

posted on 2008-06-16 10:19  程晨  阅读(2599)  评论(9编辑  收藏  举报

导航