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

时间:2014-06-16 12:46:05

标签: c# c++ vb.net security native

有没有办法将我的.net可执行文件(C#/ VB.Net)嵌入到像C / C ++文件这样的二进制二进制文件中,它会在启动时加载.net程序集? 就像在.net组件周围构建原生墙一样?

1 个答案:

答案 0 :(得分:2)

您可以将.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中,并将原始数据传递给上面的proc。

MyTools.RunInternalExe(Resources.ExeData);

当然,如果你想要你的包装器.exe是非托管的,你必须将上面的代码翻译成C ++或你选择的其他语言,这就是我现在的头脑......