修改编译的.Net Exe

Del*_*Boy 12 c# reflector .net-assembly

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

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

谢谢.

小智 20

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

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

  • 很棒的发现!github页面描述看起来像是一个糟糕的非维护项目,但应用程序本身就是任何免费替代品之前的联盟. (6认同)

Yaa*_*lis 5

如果确实需要执行此操作,则可以使用Reflector(或类似产品)对其进行反编译,然后使用该代码尝试在.Net中重新创建将产生相同可执行文件的解决方案。

您可能会遇到以下问题:

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

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


Del*_*Boy 5

最终我设法“禁用”了编译后的exe中的几行代码。

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

希望它对其他人有帮助。