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().GetManifestResourceStream("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();
            if ((parameters != null) && (parameters.Length > 0))
                info.Invoke(null, (object[])args);
            else
                info.Invoke(null, null);
        }
    }
}
编译后的程序会自动将资源中的目标文件加载运行。继续发挥一下,我们可以增加启动密码;将目标程序进

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

Stream   streamObj   =   this.GetType().Assembly.GetManifestResourceStream("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();   
BindingFlags   flags   =   (BindingFlags.NonPublic   |   BindingFlags.Public   |     
BindingFlags.Static   |   BindingFlags.Instance   |   BindingFlags.DeclaredOnly);   
    
foreach(Type   t   in   mytypes)   
{   
            MethodInfo[]   mi   =   t.GetMethods(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);   
                }   
          }   
}

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

  1. html中引入调用另一个html的方法

    html中引入调用另一个html的方法,尝试了好几种,都列出来: 其中第一种是最好的,其他的方法,可以尝试看看,是不是适合你当前项目 一.div+$("#page1").load( ...

  2. Makefile中怎样调用python和perl文件为自己提供须要的数据

    Makefile中怎样调用python和perl文件为自己提供须要的数据,利用print函数对外输出数据 实例代码例如以下 perl.pl #!/usr/bin/perl print("he ...

  3. c# Winform 调用可执行 exe 文件

    c#是一个写windows桌面小工具的好东西,但有个时候,我们需要在 winform 程序中调用其他的 exe 文件,那么该如何实现呢? 如果只是拉起一个 exe 文件,可以参考如下方法实现: str ...

  4. ArcGIS学习记录-Excel和Txt中XY点数据生成点Shape文件方法

    (一)Excel中XY点数据生成点Shape文件方法 1.Excel表如下:   2.点击ArcGIS中的"+"号按钮,添加数据.选择第一步中制作好的Excel文件,点击Add按钮 ...

  5. 在InstallShield中发布单一的Setup.exe文件

    原文:在InstallShield中发布单一的Setup.exe文件 InstallShield默认的Release模式下,生成了一个setup.exe文件,一个msi文件,以及一些其它的杂项文件. ...

  6. AS2在FLASH中调用EXE文件方法详细说明 已测试可行

    熟悉FLASH功能的朋友都知道fscommand在FLASH中是一个经常用来控制窗口全屏或退出的命令,同时它也是FLASH调用外部可执行程序的一种方法,使用fscommand命令格式如下: fscom ...

  7. Magento中,调用静态块的几种方法

    在后台创建一个order_form静态块Block Title :Order FormIdentifier :order_formStatus :EnabledContent :自定义内容 1.如果要 ...

  8. WP8.1程序开发中,如何加载本地文件资源或安装在程序包中的资源。

    Web 要访问来自 Web 的文件,你可以使用标准的绝对 HTTP URI: <img src="http://www.contoso.com/images/logo.png" ...

  9. c++与matlab联合编程,调用Deploytool 生成exe文件和dll文件(转)

    转自:http://www.cnblogs.com/xlw1219/archive/2012/12/25/2832222.html 首先必须知道联合编程需要知道的一些命令解释: mcc 的作用是将 . ...

随机推荐

  1. java异常类的使用

    1.异常的概念 什么是异常?程序出错分为两部分,编译时出粗和运行时出错.编译时出错是编译器在编译源码时发生的错误: 运行时出错是在编译通过,在运行时出现的错误.这种情况叫异常. 例如:数组越界,除数为 ...

  2. oracle创建实例SID

    用oracle用户登录 输入startx开发可视化界面,打开命令行模式 (如果只有壁纸,没有桌面图标和任务栏,按下 Ctrl + Alt + T 打开命令行) 输入dbca打开配置窗口 最后就各种下一 ...

  3. Oracle分区表学习

    (1) 表空间及分区表的概念表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间.分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应 ...

  4. angular调用WCF服务,读取文件夹下图片显示列表,下载另存为图片

    读取文件夹下的文件 public string ReadImagesPaths() { string result = string.Empty; try { string path = System ...

  5. 【转载】一步一步搭建自己的iOS网络请求库

    一步一步搭建自己的iOS网络请求库(一) 大家好,我是LastDay,很久没有写博客了,这周会分享一个的HTTP请求库的编写经验. 简单的介绍 介绍一下,NSURLSession是iOS7中新的网络接 ...

  6. 07ADO.Net

    1.ADO.Net简介 代码示例: using (MySqlConnection conn = new MySqlConnection("Server=localhost;Database= ...

  7. JS键盘码值表

    值得注意的是,keypress事件中获取的keycode.which,都是按键对应的ascii值,而不完全对应下面的列表. 将字符转换为ascii值可以用charCodeAt函数. keycode 8 ...

  8. javascript——函数内部属性

    <script type="text/javascript"> //在函数内部有两个特殊的属性:arguments 和 this.arguments是一个类数组对象,包 ...

  9. Vim简明教程【CoolShell】

    vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...

  10. 分页插件jquery.simplePagination.js使用

    利用ecshop后台,利用插件更改分页显示样式遇到的问题,由于是利用Ajax获取数据进行页面数据更新?所以出现了以下情况: 初始化页面前 : 分页更新后: 点击后出现了分页插件内容消失, 原因:分页一 ...