C# 在本机可执行文件中嵌入.net二进制文件
有没有办法将我的.net可执行文件(C#/VB.net)嵌入一个完整的二进制文件中,比如启动时加载.net程序集的C/C++文件?C# 在本机可执行文件中嵌入.net二进制文件,c#,c++,vb.net,security,native,C#,C++,Vb.net,Security,Native,有没有办法将我的.net可执行文件(C#/VB.net)嵌入一个完整的二进制文件中,比如启动时加载.net程序集的C/C++文件? 就像在.NET组件上构建一个本地墙一样, 你可以将你的.NET二进制文件嵌入到C++项目中作为一个资源,并加载它运行时,但是我怀疑这是一个推荐的增加安全性的方法。 编辑: 有人问我源代码,建议我发表评论而不是回答。我刚刚注册了StackOverflow,我还没有足够的声誉发表评论。 但这里有一些我在某个时候用过的资料: public static int R
就像在.NET组件上构建一个本地墙一样, 你可以将你的.NET二进制文件嵌入到C++项目中作为一个资源,并加载它运行时,但是我怀疑这是一个推荐的增加安全性的方法。 编辑: 有人问我源代码,建议我发表评论而不是回答。我刚刚注册了StackOverflow,我还没有足够的声誉发表评论。 但这里有一些我在某个时候用过的资料:
public static int RunInternalExe(byte[] rawData, params string[] args)
{
Assembly asm = Assembly.Load(rawData);
MethodInfo mi = asm.EntryPoint;
if (mi == null)
throw new Exception("Entry point not found");
ParameterInfo[] prms = mi.GetParameters();
object[] mtd_args = null;
if (prms.Length > 0)
mtd_args = new object[] { args };
object result = mi.Invoke(null, mtd_args);
if (result is int)
return (int)result;
return 0;
}
将managed.exe嵌入到wrapper.exe中,并将原始数据传递给上面的进程
MyTools.RunInternalExe(Resources.ExeData);
当然,如果你希望你的包装器.exe是非托管的,你必须把上面的代码翻译成C++或你选择的其他语言,这是我现在的头绪……/P>你想在没有.Net FW的情况下运行它吗?或者这是什么目的?如果你是指混合汇编?请参阅@chrfin:No,它仍然需要FW。原因是为了提高安全性。您能解释一下混合程序集在哪里有助于提高安全性吗?我认为您在这里走错了路,因为IMO管理的程序集更安全……也许它没有用于安全问题,模糊处理就是为了这个。如何,确切地说?Windows加载器要求可加载的二进制文件(或.exe或.dll)在磁盘文件上是实文件。不是.NET可执行文件,它们不是由Windows加载器加载的。支持Assembly.Load(字节[])。坏主意。如果你添加到外部资源的链接,甚至一些源代码,以增加你答案的可信度,这会有所帮助。现在,作为一个评论,它确实站得住脚。