Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在本机可执行文件中嵌入.net二进制文件_C#_C++_Vb.net_Security_Native - Fatal编程技术网

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

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可执行文件(C#/VB.net)嵌入一个完整的二进制文件中,比如启动时加载.net程序集的C/C++文件?
就像在.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(字节[])。坏主意。如果你添加到外部资源的链接,甚至一些源代码,以增加你答案的可信度,这会有所帮助。现在,作为一个评论,它确实站得住脚。