在本机可执行文件中嵌入.net二进制文件

本文关键字:net 二进制文件 本机 可执行文件 | 更新日期: 2023-09-27 18:08:52

是否有一种方法将我的。net可执行文件(c#/VB.Net)嵌入到像C/c++文件这样的本机二进制文件中,该文件将在启动时加载。net程序集?比如在。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++或其他你选择的语言,这有点超出我的头现在…