c# - 在 native 可执行文件中嵌入 .net 二进制文件

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

有没有办法将我的 .net 可执行文件 (C#/VB.Net) 嵌入到像 C/C++ 文件这样的 ntive 二进制文件中,从而在启动时加载 .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++ 或您选择的其他语言,这有点超出了我的理解...

关于c# - 在 native 可执行文件中嵌入 .net 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24244090/

相关文章:

c# - 定义内联扩展方法

c# - 如何使用 VB.net 或 C# 从 Excel 动态删除行并保存

c++ - 最初宣布为持续困惑

c++ - 我们可以在 C 或 C++ 中交换两个数字而不传递指针或对交换函数的引用吗?

c++ - int (abc)(int,int) 是什么意思?

.net - 处理错误字符串的最佳实践

c# - 函数定义中的阿拉伯字符

c# - 4 点变换图像

vb.net - 按值对字典排序

c# - 如何在不同网络上创建和使用基于 DNS 的自签名证书