在本机可执行文件中嵌入.net二进制文件
本文关键字:net 二进制文件 本机 可执行文件 | 更新日期: 2023-09-27 18:08:52
是否有一种方法将我的。net可执行文件(c#/VB.Net)嵌入到像C/c++文件这样的本机二进制文件中,该文件将在启动时加载。net程序集?比如在。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;
}
将托管的。exe嵌入到包装器。exe中,并将原始数据传递给上述进程。
MyTools.RunInternalExe(Resources.ExeData);
当然,如果你想让你的包装器。exe是非托管的,你必须把上面的代码翻译成c++或其他你选择的语言,这有点超出我的头现在…