2011-05-05 29 views
1

的代码,我有一个dll文件在C#写的,我通过反射器打开该文件,该文件是代码改变装配

if (a! = 5) 
{ 
} 

我怎样才能改变

if (a == 5) 
{ 
} 
代码

我仍然有插件Reflexil

+0

@Brian - 如果Jon Skeet现在清醒了,这个问题肯定会在几分钟内得到一个正确的答案;) – 2011-05-05 08:07:54

+0

为了补充Brian的话,如果你没有在这里做最低限度的社区参与,人们会不太可能帮助你。请投票选出有帮助的答案,并接受答案(点击答案左侧的最大答案,在选票下面),以最好地回答您的问题。如果不这样做,你会冒着让人们开始忽视你的问题的风险。 – 2011-05-05 08:09:03

+0

嘿,你可以用十六进制编辑器做到这一点,只需要将右边的75转换为74;)如果你有一个反汇编器,你可以发现相关的指令并将75转换为74.通常你不需要的东西倒序时执行:)您正在寻找的操作码是JNE(0x75),并且您希望它是JE(0x74) – Shark 2012-07-30 18:04:52

回答

1

你可以做,使用MSIL Disassembler

反编译USI该工具,在IL中应用更改并使用MSIL Assembler

再次编译回来如果编译的应用程序不受保护,这将工作顺利。

1

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

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

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

+0

Reflexil附带完整的VB/C#编辑器和智能感知,允许直接从Reflector进行代码注入。请参阅:http://www.codeproject.com/KB/msil/reflexil.aspx – 2011-05-13 14:29:53

1

其他替代品有ILSpy或者包含反汇编程序的Resharper 6.0。

+0

+1,因为这对我来说是新的事实。谢谢! – 2011-05-05 08:44:18