【问题标题】:Changing the code in assembly更改汇编中的代码
【发布时间】:2011-05-05 07:53:57
【问题描述】:

我有一个dll文件是用C#写的,我通过Reflector打开文件,文件就是代码

if (a! = 5)
{
}

如何更改代码

if (a == 5)
{
}

我还有 Reflexil 插件

【问题讨论】:

  • @Brian - 如果 Jon Skeet 现在醒了,这个问题肯定会在几分钟内得到正确答案;)
  • 补充一下布赖恩所说的,如果你没有在社区中做到最低限度的参与,人们将不太可能帮助你。请为有帮助的答案投票,并接受最能回答您问题的答案(单击答案左侧的大勾号,在投票下方)。如果不这样做,您就有可能让人们开始忽略您的问题。
  • 嘿,你可以用十六进制编辑器来做,只需要将右边的 75 翻转为 74 ;) 如果你手头有反汇编器,你可以找到相关说明并将 75 翻转为 74 . 你在反转时通常不会做的事情:) 你正在寻找的操作码是 JNE (0x75),你希望它是 JE (0x74)

标签: c# reflector


【解决方案1】:

您可以使用 MSIL Disassembler 来做到这一点

使用该工具反编译,应用 IL 中的更改并使用 MSIL Assembler 再次编译

如果编译的应用程序不受保护,这将顺利运行。

【讨论】:

    【解决方案2】:

    虽然关于修改 IL 的答案是正确的,但您也可以使用 Denis Bauers plugin for reflector 反汇编代码并从中创建一个新项目。然后,您可以重新编译该项目以生成新的 dll。

    这使您可以在更熟悉的环境中进行更改,而不必处理 IL。您还可以选择要进行更改的语言。

    如果程序集需要签名,那么重新加载它可能会遇到问题。

    【讨论】:

    【解决方案3】:

    其他替代品是 ILSpy 或 Resharper 6.0,它也包含反汇编程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-13
      • 1970-01-01
      • 2014-09-17
      • 2012-05-06
      • 2011-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多