从字节数组创建方法

本文关键字:创建 方法 数组 字节数 字节 | 更新日期: 2023-09-27 18:19:21

我有一个byte[],其中包含表示汇编中方法的字节。例如一个简单的mov eax,1 - retn函数:

var method = new byte[] { 0xB8,0x01,0x00,0x00,0x00,0xC3 };

是否有可能在运行时创建一个方法,我可以在c#中使用字节数组来创建它?

从字节数组创建方法

是的,你可以使用反射发出。但是你应该编写逻辑来逐字节读取这个字节数组,并将你需要的OpCodes发送到ILGenerator中。

真的很简单。首先你创建一个新的DynamicMethod,从它调用GetILGenerator,执行一系列的"从GetILGenerator调用,从DynamicMethod调用CreateDelegate,最后通过调用这个委托调用新方法本身。