从字节数组创建方法
本文关键字:创建 方法 数组 字节数 字节 | 更新日期: 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,最后通过调用这个委托调用新方法本身。