首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# dnlib / IL代码-创建新字典

C# dnlib / IL代码-创建新字典
EN

Stack Overflow用户
提问于 2018-01-27 14:55:01
回答 1查看 565关注 0票数 1

我正在创建自己的程序,通过dnlib更改.exe代码。

然后,我想通过IL和Dnlib代码创建一个字典。

但这两本教程都不多,所以很难。

它编写错误的字典代码并使DnSpy崩溃。

我的代码:

代码语言:javascript
复制
            MethodDef cctor = Module.GlobalType.FindOrCreateStaticConstructor();
        IList<Instruction> inst = cctor.Body.Instructions;
        var objectCtor = new MemberRefUser(Module, ".ctor",
                    MethodSig.CreateInstance(Module.CorLibTypes.Void),
                    Module.CorLibTypes.Object.TypeDefOrRef);
        var Global_Array = new FieldDefUser(
"field_obfuscator_array",
new FieldSig(Module.CorLibTypes.GetCorLibTypeSig(,
FieldAttributes.Public | FieldAttributes.Static);
        Module.GlobalType.Fields.Add(Global_Array);
        if (inst.Count < 1)
            inst.Add(new Instruction(OpCodes.Ret));
        inst.Insert(0, new Instruction(OpCodes.Ldc_I4, 100000));
        inst.Insert(1, new Instruction(OpCodes.Newobj, "[mscorlib]System.Collections.Generic.Dictionary`2"));
        inst.Insert(2, new Instruction(OpCodes.Stsfld, Global_Array));

任何帮助都是非常感谢的,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-10-30 20:22:17

最简单的方法是用C#编写这个实现,然后把它放到反编译器中(例如,在这种情况下或者其他情况下不重要--只需要有IL代码读取器)。

有三种方法可以做到这一点:

  1. 打开你的类型/方法,无论你有什么,你可以改变它在顶部点击C# -> IL或点击打开用鼠标右键,这里!

  1. 选择方法,右键点击鼠标edit method body,完成!在此之后,您可以通过dnlib编写相同的IL代码,也可以在dn间谍中编写。

  1. 创建相同的代码(在项目中创建类似于使用dnlib并更改模块的外部组件)-编写相同的类-方法-字段等,然后通过Importer加载它(执行您的魔术-导入此方法,很多示例都是正确的这里)

dnlib的示例代码如何完成:

代码语言:javascript
复制
var externalComponentsImporter = new Importer(externalComponentsModuleDefMD, ImporterOptions.TryToUseDefs);
var redirectStubMethodDef = externalComponentsImporter.Import(typeof(Hooking).GetMethod(nameof(Hooking.RedirectStub), BindingFlags.Public | BindingFlags.Static)).ResolveMethodDefThrow();

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

https://stackoverflow.com/questions/48477012

复制
相关文章

相似问题

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