我正在为一个简单的.Net封隔器做一个解包器。
我想使用dnlib从加载的程序集中执行一个方法。
我不能使用System.Reflection,因为packer会打包原始的可执行文件,然后在执行之前将其解压缩到内存中,所以使用反射给我无法找到xxx模块的错误。
目前,我扫描加载的程序集并获得执行解压缩所需的方法的MethodDef。
如您所知,有一种方法可以使用C#从dnlib中加载的程序集执行IL代码?
其想法是调用封隔器的方法,以避免重写在每次封隔器更新。
这种情况有可能发生吗?还是只是个梦?XD
如果不可能,我的另一个想法是编写一个IL仿真器。
还有别的办法解决这个问题吗?
非常感谢你抽出时间。
发布于 2016-07-23 05:21:03
您不需要dnlib,只需使用这些方法调用程序集即可。此示例调用一个以单个整数作为返回字符串的参数的方法。
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);https://stackoverflow.com/questions/35844260
复制相似问题