修改已编译的.Net示例

本文关键字:Net 示例 编译 修改 | 更新日期: 2023-09-27 18:28:56

我有一个用C#编写的应用程序(当然没有源代码),需要稍微更改一下。例如,我需要停止几行创建不必要菜单的代码。所以我想我应该把它们评论掉。

源代码没有混淆。我知道我可以使用Reflector/Reflexil这样的工具完全反编译、更改和重新编译。但每个人都知道,这样做,代码的许多部分就不会再编译了!Reflector(或任何其他产品)中是否有一种方法可以在没有此过程的情况下禁用/更改其一部分?

谢谢。

修改已编译的.Net示例

您可能想要尝试dnSpy。它是从ILSpy派生的.NET程序集编辑器、反编译器和调试器。

https://github.com/0xd4d/dnSpy

如果你真的需要这样做,你可以用Reflector(或类似的产品)对它进行反编译,然后用它在.Net中重新创建一个可以生成相同可执行文件的解决方案。

你可能会遇到以下问题:

  1. 代码混乱
  2. 反编译向您显示特定部分的准确代码的部分,但由于某种原因,它在您的新解决方案中不起作用(然后您该怎么办?)

更不用说与此相关的潜在法律问题了。如果可执行文件是在允许您执行此操作的许可证下发布的,那么您很可能有权访问源代码。因此,您无法访问源代码这一事实意味着您所建议的操作可能不合法。

最终,我成功地"禁用"了编译后的exe中的几行代码。

我使用安装了Reflexil插件的Reflector。Reflexil允许我编辑MSIL指令,然后将结果保存回exe文件。因此,它涉及到学习一些MSIL指令,尤其是"无操作"命令(使一行代码什么都不做)。要查看说明和教程列表,请参阅此处和此处。

希望它能帮助其他人。

为了完整起见:另一种可能的解决方案是使用ildasmhttp://msdn.microsoft.com/en-US/library/f7dy01k1%28v=vs.80%29.aspxMSIL反汇编程序,编辑MSIL并将其反馈给ilasm。

这个解决方案的实用性当然取决于

此线程可能有助于:dotnet dll反编译并更改代码

上次当我尝试使用反射反编译源代码时,我遇到了太多关于资源和其他子代码的编译问题,尽管dll没有混淆。因此,除了提取源代码和修改以使您的新dll与旧dll一样工作之外,还有其他事情。

因此,我建议使用其他线程中提到的任何选项进行直接dll操作。

如果在测试exe文件的同一台机器上有源代码,并且在visual studio中对源代码进行了更改,那么在编译时,它将自动反映在exe文件中。

你不需要为它做任何特殊的事情。如果不是,那么只需在代码中进行更改,并将调试文件夹的新exe(带有调试文件夹)粘贴到另一台具有所有最近更改的机器上。