首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dnlib注入带有方法的类

使用dnlib注入带有方法的类
EN

Stack Overflow用户
提问于 2019-01-30 20:51:44
回答 1查看 1.3K关注 0票数 0

我正在尝试在文件中注入一个带有方法的类。我知道在ConfuserEx的源代码中有一个有效的解决方案,但它需要编辑dnlib的代码,这是我想要避免的。

代码语言:javascript
复制
ModuleDef manifestModule = assembly.ManifestModule;
Importer importer = new Importer(manifestModule);
IMethod method = importer.Import(typeof(AntiDumpRuntime).GetMethod("Initialize"));

TypeDef type = new TypeDefUser("AntiDump");
type.Methods.Add(method.ResolveMethodDefThrow()); // dnlib.DotNet.MemberRefResolveException: 'Could not resolve method: System.Void Obfuscator.Core.Protections.AntiDump.AntiDumpRuntime::Initialize() (Obfuscator, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null)'
manifestModule.Types.Add(type);

在上面的代码片段中,我试图通过Importer类来做到这一点,但它在注释行上抛出了一个异常。

下面是ConfuserEx的解决方案:https://github.com/yck1509/ConfuserEx/blob/master/Confuser.Core/Helpers/InjectHelper.cs,下面是需要在dnlib中完成的修改:https://github.com/yck1509/dnlib/blob/master/src/DotNet/Importer.cs#L72

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-28 00:15:46

dnlib的最新版本包含使其正常工作所需的更改。导入器有一个允许设置ImportMapper实现的构造函数。使用它,您可以正确地使用dnlib的默认版本注入代码。

我正在维护一个ConfuserEx的fork,它使用dnlib而不做任何修改。所以它工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54441057

复制
相关文章

相似问题

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