想自制一个exe加壳程序,但在第一步就卡住了,不知道为什么,Assembly.Load时老是出错,exe文件是正常的,并且已设置成嵌入资源,程序代码如下:
using System;
using System.Windows.Forms;
using System.Resources;
using System.Reflection;
using System.IO;namespace Reader
{
public class LoadExe
{
[STAThread]
static void Main(string[] args)
{
Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Reader.aaa.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);
}
}
}
运行到
Assembly asm = Assembly.Load(bs);
时,报错:
Could not load file or assembly '1569465 bytes loaded from Reader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.换过几个exe文件,结果都一样,救命!!!
using System;
using System.Windows.Forms;
using System.Resources;
using System.Reflection;
using System.IO;namespace Reader
{
public class LoadExe
{
[STAThread]
static void Main(string[] args)
{
Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Reader.aaa.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);
}
}
}
运行到
Assembly asm = Assembly.Load(bs);
时,报错:
Could not load file or assembly '1569465 bytes loaded from Reader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.换过几个exe文件,结果都一样,救命!!!
解决方案 »
- 谁能让程序执行到这个断点上,关于测试模式的[有代码]
- 如何把datagridview中的数据copy到另外一个datagridview中?
- web.config文件的几个警告,
- 关于winform中tabcontrol的tabpage自动跳转的问题
- 请教个小问题关于login.DialogResult.Equals(DialogResult.OK)
- 无法显示 XML 页,用了2种方法都没解决
- 奇怪了,我用的是Visual studio2005,怎么C#运行不了,连新建一个空的项目都不行。
- [求助]将XML文件远程传送到服务器,并将里面的数据存在数据库中
- 请问asp.net中用odbc调用存储过程怎么返回多个数据集啊,急!!!
- --------------高手帮帮忙,关于C#中Split的使用,谢了---------------
- 如何显示系统默认的进度条样式?
- 如何用dropdownlist控件切换整站主题??(高手进)
第一步就是直接载入文件执行
第二步就是将文件处理成byte数组后载入执行
第三步就是将资源处理成byte数组后载入执行
关键是第一步现在是否实现?无他先关注一下
第二步没试,明天试一下,第三步就是我现在做的.
不过,跟踪时发现,将资源处理成Byte数组是正常的,到载入执行时才出错.
如何实现?你不会说是用
Process.Start();
这个方法可不是载入后再执行注意我说的也是通过Assembly载入
把你实现第一步的调试代码贴出来看看
把依赖的dll拷贝到外壳程序的目录上再试一下
PS:有一个小错误
info.Invoke(null, (object[])args); -〉 info.Invoke(null, new object[]{args});
currentDomain.ExecuteAssembly("Reader.aaa.exe");