问题 如何在DLL中修补一行代码?


我有一个错过了一行代码的.Net dll。我想修补该DLL,但我没有源代码。我该怎么办?有谁知道 快捷方式 修补这样的东西?


11393
2018-04-20 14:21


起源

@ 0A0D DLL未签名。 - Kees C. Bakker
@John不,我可以升级,但我没有时间正确测试他们的新版本,但这个错误让我的客户很烦恼。 - Kees C. Bakker
@Kees:你没有时间测试新版本,但是你 做 有时间测试你的补丁,你认为这只会影响单行代码吗?我告诉你的客户等待升级。 - John Saunders
@Kees,我们都去过那里。版本X有1个小错误,版本Y修复了它,但也引入了100个新功能,因此您不想升级。但约翰所说的是,在没有看到整个来源的情况下尝试修复这一个错误可能会破坏其他一切。部分代码可能依赖于此错误,因此为您修复它可能会在其他地方破坏它。 - Chris Haas
@Kees:我建议你不要浪费你的时间。


答案:


随着 Reflexil 插件 反光,修改DLL的一小部分是 快捷方便。我在少数情况下使用它来更改已部署的dll中的一行或两行,通常是为了禁用某些条件导致的行为(不,不破解应用程序,合法使用我们自己的代码以避免完全部署的重量)。


12
2018-04-20 14:58



如果您有源代码,并且修补dll比修复代码中的错误并重新编译更容易,那么您做错了。 - Lasse Vågsæther Karlsen
@Nick:因为我在杀死Reflector v6之后拒绝支持Reflector和RedGate,所以一定是弗洛伊德式的。 - quentin-starin
@Lasse:这是一个非常乐观的观点,在面对真实情况时往往是不真实的。 - quentin-starin
我会试试的!希望它也适用于试用版! - Kees C. Bakker
@qes嗯,这是我的意见,我从来没有修补过一些程序 我有 通过修补生成的二进制文件,我也得到了源代码 总是 更容易修复代码中的错误并重新编译。所以,是的,在我看来你做错了什么。 - Lasse Vågsæther Karlsen


你可以使用ildasm.exe反汇编你的DLL,然后修复代码,然后用ilasm.exe重新组装。这是一些非常先进的东西......我过去尝试过并取得了一些成功。


4
2018-04-20 14:44