我有一个来自c ++应用程序的二进制数据。我想直接从我的C#应用程序运行该特定的二进制代码。
我有这个从互联网上获得的功能:
static void MemExe(byte[] buffer)
{
Assembly asm = Assembly.Load(buffer);
if (asm.EntryPoint == null)
throw new ApplicationException("No entry point found!");
MethodInfo ePoint = asm.EntryPoint;
object ins = asm.CreateInstance(ePoint.Name);
ePoint.Invoke(ins, null);
}
它适用于C#二进制代码,但如果我尝试打开C ++二进制代码,它就会崩溃。
这里的例外:
其他信息:无法加载文件或程序集'5154816字节已加载Test,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'或其依赖项之一。试图以不正确的格式加载程序。
我猜这是与标题相关的内容?我不是专家......
是否可以像 MemEx 一样运行c ++二进制文件 运行C#binary?
感谢。
答案 0 :(得分:0)
Assembly.Load(...)
只会加载.NET二进制文件。
如果您想要访问除.NET之外的二进制API,您可能希望使用P / Invoke签名。
如果要运行可执行文件,请使用System.Diagnostics.Process.Start(...)
。