首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从加载的程序集执行IL MethodBody

从加载的程序集执行IL MethodBody
EN

Stack Overflow用户
提问于 2016-03-07 12:52:43
回答 1查看 1.3K关注 0票数 2

我正在为一个简单的.Net封隔器做一个解包器。

我想使用dnlib从加载的程序集中执行一个方法。

我不能使用System.Reflection,因为packer会打包原始的可执行文件,然后在执行之前将其解压缩到内存中,所以使用反射给我无法找到xxx模块的错误。

目前,我扫描加载的程序集并获得执行解压缩所需的方法的MethodDef。

如您所知,有一种方法可以使用C#从dnlib中加载的程序集执行IL代码?

其想法是调用封隔器的方法,以避免重写在每次封隔器更新。

这种情况有可能发生吗?还是只是个梦?XD

如果不可能,我的另一个想法是编写一个IL仿真器。

还有别的办法解决这个问题吗?

非常感谢你抽出时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-23 05:21:03

您不需要dnlib,只需使用这些方法调用程序集即可。此示例调用一个以单个整数作为返回字符串的参数的方法。

代码语言:javascript
复制
var assembly = Assembly.LoadFile(fullpathofexecutable);
BindingFlags eFlags = BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;

Type classInstance = GetClass("Class196", assembly.GetTypes());

MethodInfo myMethod = classInstance.GetMethod("methodThatIWantToExecute", eFlags);

object[] arguments = {1,2,3 };
string result = (string)myMethod.Invoke(null, arguments);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35844260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档