gpt4 book ai didi

c# - Dnlib - 从加载的程序集中执行 IL MethodBody

转载 作者:太空宇宙 更新时间:2023-11-03 15:24:43 25 4
gpt4 key购买 nike

我正在为一个简单的 .Net 打包程序开发一个解包程序。

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

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

目前我正在扫描加载的程序集并获取我需要执行解包的方法的 MethodDef。

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

想法是调用加壳器方法以避免在每次加壳器更新时重写解壳器。

这种情况可能吗?或者这只是一个梦? XD

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

还有其他途径可以解决吗?

非常感谢您的宝贵时间。

最佳答案

您不需要 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);

关于c# - Dnlib - 从加载的程序集中执行 IL MethodBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35844260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com