[转]将C#程序嵌入资源中(C# 调用嵌入资源的EXE文件方法)
2010-03-31 13:12
986 查看
1. 我们有一个test.exe的WinForm程序,这是我们要加壳的目标程序。
2. 新建一个WinForm工程,删除Form1,然后新建一个类。如下。
3. 将test.exe 拷贝到该工程目录,作为嵌入式资源。
编译后的程序会自动将资源中的目标文件加载运行。继续发挥一下,我们可以增加启动密码;将目标程序进
代码
Stream streamObj =this. GetType_r().Assembly. GetManifestResourceStream_r("Test_ExeInResource.AllTest.exe");
byte[] b =newbyte[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);
}
}
}
解决
2. 新建一个WinForm工程,删除Form1,然后新建一个类。如下。
3. 将test.exe 拷贝到该工程目录,作为嵌入式资源。
编译后的程序会自动将资源中的目标文件加载运行。继续发挥一下,我们可以增加启动密码;将目标程序进
代码
Stream streamObj =this. GetType_r().Assembly. GetManifestResourceStream_r("Test_ExeInResource.AllTest.exe");
byte[] b =newbyte[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);
}
}
}
解决
相关文章推荐
- 给C#程序加壳(C# 调用嵌入资源的EXE文件方法)
- 将C#程序嵌入资源中(C# 调用嵌入资源的EXE文件方法)
- 黄聪:将C#程序嵌入资源中(C# 调用嵌入资源的EXE文件方法)
- 将C#程序嵌入资源中(C# 调用嵌入资源的EXE文件方法)
- 将C#程序嵌入资源中(C# 调用嵌入资源的EXE文件方法)
- 给C#程序加壳(C# 调用嵌入资源的EXE文件方法)
- C# 加壳.exe程序文件(调用嵌入资源的exe文件)
- C#调用exe文件,IIS发布后无法掉用本地exe程序的解决方法
- C#调用Exe文件的方法及如何判断程序调用的exe已结束
- C#调用exe文件,IIS发布后无法掉用本地exe程序的解决方法
- C#调用Exe文件的方法及如何判断程序调用的exe已结束
- C#调用exe文件,IIS发布后无法掉用本地exe程序的解决方法
- C# 编译生成dll文件供程序调用的两种方法
- c#调用 windows api实现WinForm中嵌入EXE程序
- 在EXE程序中调用DLL文件后出现_CrtIsValidHeapPointer(pUserData)问题的解决方法
- web 程序调用exe文件---C#
- 在VC程序中调用exe文件或者批处理文件方法总结
- c#程序嵌入资源文件中
- 嵌入资源第二讲:WPF调用嵌入的非.net的EXE资源文件
- Matlab程序调用外部exe(可执行文件)方法及参数传递