在没有方法体的情况下反编译C#DLL

时间:2017-04-18 19:28:22

标签: c# dll decompiling cil disassembly

是否有简单的方法来反编译C#DLL(例如ILSpy),但是代替方法体,让方法返回默认值(或抛出运行时异常)?

为什么我需要这个?我试图替换.dll库中的一些类。我无法对整个库进行反编译,因为它包含许多lambda函数和迭代器,这些函数在反编译时会导致问题。

然而,我有成功的做法:复制我想要更改的类的反编译源,将其粘贴到一个新项目中,并将原始.dll包含为库。然后,将类更改为我喜欢的(暂时改变方法实现),然后编译项目并通过反汇编程序将编译的IL代码注入原始的.dll中。

到目前为止,这已经取得了成功,但现在我遇到了一个问题。我现在尝试更改的课程(让我们说A)将this作为参数传递给其他课程(让我们说B ),并且它产生编译错误(因为原始的B类需要原始的A类,而不是"假的" A类我正在编辑。

如果我有.dll库的完整源代码,这当然不会有问题,但我不知道。幸运的是,我不必这样做。如果我只有#34;结构"源代码(类,字段,方法,接口的声明,但没有,但没有方法实现),我可以将类A的源复制粘贴到这个仅仅结构的代码中,进行我需要的更改,编译,然后像以前一样注入IL代码。

那么,我是否可以轻松获得仅仅结构化的代码(再次,方法实现可以更改默认值,或者抛出运行时异常),或者更好地替换.dll库中的类?

0 个答案:

没有答案