C#运行字节数组而不转储到临时文件
我是来问这里是否有人能帮我。我一直在做以下工作:C#运行字节数组而不转储到临时文件,c#,arrays,reflection,byte,assembly.load,C#,Arrays,Reflection,Byte,Assembly.load,我是来问这里是否有人能帮我。我一直在做以下工作: 从文件中复制字节 使用base64加密字节并将其转换为字符串 用二进制编写器将字符串写入程序 程序将提取字符串并将其存储在变量中 程序现在将其转换回字节数组并解密 现在我试图让程序用assembly.load运行字节(出错的地方) System.BadImageFormatException:无法加载文件或程序集 如果您需要任何其他详细信息,请询问 注意:我希望能够对任何程序(因此任何体系结构,本机或非本机)执行此操作,我不希望将字节写入文件并运
Assembly execassembly=Assembly.Load(decryptedBuffer);
object[]参数=新对象[1];
execassembly.EntryPoint.Invoke(null,参数);
[解决方案]
我使用RunPE将字节自注入存根。很好,感谢所有帮助过你的人 这里有很多要求,因为您想加载任何类型的非本机文件,我建议您开始研究.net和常规PE文件之间的区别,看看win32 api调用
CreateProcess
,网络上有许多解决方案可以为.net应用程序和PE文件实现这一点,我从这里开始,当你遇到问题时,回来看看usI,我还记得这个错误“BadImageFormatException”,我在Roslyn程序集的实验中,在运行时将c#编译为内存中的程序集。您正在将二进制解密文件初始化为程序集。在这两种情况下,请检查程序集的引用,并确保在调用入口点之前添加它们。您必须将MetadataReference[]类型的数组连接到程序集才能使其工作,但我不确定在读取二进制文件时是否采用相同的方式。您在这里有很多要求,并且由于您希望加载任何类型的文件,因此我建议您开始研究.net和常规PE文件之间的差异,请看win32 api调用CreateProcess
,网络上有许多解决方案可以为.net应用程序和PE文件执行此操作,当您遇到问题时,请返回并查看usI,记住此错误“BadImageFormatException”从我在运行时编译c#的Roslyn程序集实验到内存中的程序集。您正在将二进制解密文件初始化为程序集。在这两种情况下,请检查程序集的引用,并确保在调用入口点之前添加它们。您必须将MetadataReference[]类型的数组连接到程序集才能让它工作,但我不确定在读取二进制文件时是否采用相同的方式。