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

1. 我们有一个test.exe的WinForm程序,这是我们要加壳的目标程序。
2. 新建一个WinForm工程,删除Form1,然后新建一个类。如下。
3. 将test.exe 拷贝到该工程目录,作为嵌入式资源。
编译后的程序会自动将资源中的目标文件加载运行。继续发挥一下,我们可以增加启动密码;将目标程序进

代码
1 using System;
2   using System.Windows.Forms;
3   using System.Resources;
4   using System.Reflection;
5   using System.IO;
6 namespace test
7 {
8 static class Program
9 {
10 [STAThread]
11 static void Main( string [] args)
12 {
13 Stream stream = Assembly. GetExecutingAssembly_r(). GetManifestResourceStream_r( " test.Code.exe " );
14 byte [] bs = new byte [stream.Length];
15 stream.Read(bs, 0 , ( int )stream.Length);
16 Assembly asm = Assembly.Load(bs);
17 MethodInfo info = asm.EntryPoint;
18 ParameterInfo[] parameters = info. GetParameters_r();
19 if ((parameters != null ) && (parameters.Length > 0 ))
20 info.Invoke( null , ( object [])args);
21 else
22 info.Invoke( null , null );
23 }
24 }
25 }
26

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

代码
1 Stream streamObj = this . GetType_r().Assembly. GetManifestResourceStream_r( " Test_ExeInResource.AllTest.exe " );
2
3 byte [] b = new byte [streamObj.Length];
4 streamObj.Read(b, 0 , b.Length);
5
6 Assembly a = Assembly.Load(b);
7 Type[] mytypes = a. GetTypes_r();
8 BindingFlags flags = (BindingFlags.NonPublic | BindingFlags.Public |
9 BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly);
10
11 foreach (Type t in mytypes)
12 {
13 MethodInfo[] mi = t. GetMethods_r(flags);
14 Object obj = Activator.CreateInstance(t);
15
16 foreach (MethodInfo m in mi)
17 {
18 if (m.Name == " Main " )
19 {
20 MainDelegate md = (MainDelegate)Delegate.CreateDelegate( typeof (MainDelegate), m);
21 md.BeginInvoke( null , null );
22 }
23 }
24 }
25

 

解决

 

转载于:https://www.cnblogs.com/root7/archive/2010/03/31/1701302.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值