将C#程序嵌入资源中(C# 调用嵌入资源的EXE文件方法)

简介:

1. 我们有一个test.exe的WinForm程序,这是我们要加壳的目标程序。
2. 新建一个WinForm工程,删除Form1,然后新建一个类。如下。
3. 将test.exe 拷贝到该工程目录,作为嵌入式资源。
using System;
using System.Windows.Forms;
using System.Resources;
using System.Reflection;
using System.IO;
namespace test
{
    static class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Stream stream = Assembly. GetExecutingAssembly_r(). GetManifestResourceStream_r("test.Code.exe");
            byte[] bs = new byte[stream.Length];
            stream.Read(bs, 0, (int)stream.Length);
            Assembly asm = Assembly.Load(bs);
            MethodInfo info = asm.EntryPoint;
            ParameterInfo[] parameters = info. GetParameters_r();
            if ((parameters != null) && (parameters.Length > 0))
                info.Invoke(null, (object[])args);
            else
                info.Invoke(null, null);
        }
    }
}
编译后的程序会自动将资源中的目标文件加载运行。继续发挥一下,我们可以增加启动密码;将目标程序进

---------------------------------------------------------------------------------------------------

Stream   streamObj   =   this. GetType_r().Assembly. GetManifestResourceStream_r("Test_ExeInResource.AllTest.exe");  
   
byte[]   b   =   new   byte[streamObj.Length];  
streamObj.Read(b,   0,   b.Length);  
   
Assembly   a   =   Assembly.Load(b);  
Type[]   mytypes   =   a. GetTypes_r();  
BindingFlags   flags   =   (BindingFlags.NonPublic   |   BindingFlags.Public   |    
BindingFlags.Static   |   BindingFlags.Instance   |   BindingFlags.DeclaredOnly);  
   
foreach(Type   t   in   mytypes)  
{  
            MethodInfo[]   mi   =   t. GetMethods_r(flags);  
            Object   obj   =   Activator.CreateInstance(t);  
   
           foreach(MethodInfo   m   in   mi)  
           {  
                  if   (m.Name   ==   "Main")  
                 {  
                        MainDelegate   md   =    (MainDelegate)Delegate.CreateDelegate(typeof(MainDelegate),   m);  
                       md.BeginInvoke(null,   null);  
                }  
          }  
}




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/archive/2010/03/23/1693293.html,如需转载请自行联系原作者

相关文章
|
1月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
11 0
|
1月前
|
C#
C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录
C# 文件操作(全部) 追加、拷贝、删除、移动文件、创建目录
23 0
|
1月前
|
Java 调度 C#
C#学习系列相关之多线程(一)----常用多线程方法总结
C#学习系列相关之多线程(一)----常用多线程方法总结
|
1月前
|
C#
C#学习相关系列之数组---常用方法使用(二)
C#学习相关系列之数组---常用方法使用(二)
|
7天前
|
XML C# 数据格式
C# 解析XML文件
C# 解析XML文件
17 1
|
1月前
|
安全 数据处理 C#
C# Post数据或文件到指定的服务器进行接收
C# Post数据或文件到指定的服务器进行接收
|
1月前
|
C# 开发工具 数据安全/隐私保护
C#实现基于Word保护性模板文件的修改
C#实现基于Word保护性模板文件的修改
|
1月前
|
Java C# 开发工具
第一个C#程序
第一个C#程序
12 0
|
1月前
|
C#
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
|
1月前
|
开发框架 .NET C#
C#学习相关系列之Linq常用方法---排序(一)
C#学习相关系列之Linq常用方法---排序(一)