-->

修正了在.NET程序中的错误得不到源(Fix bugs in .NET program withou

2019-08-17 07:22发布

我有一个程序,我经常使用与.NET制成。 这个方案有一个小虫子,这是非常讨厌,开发者应用程序是无处可寻。

我发现在反射问题的位置,只是想在这里补充一个if语句,然后重新编译程序。

什么是最简单的方法是什么?

我已经使用反射器的出口功能的尝试,但它似乎并没有很好地工作。 对于using指令的例子很多失踪,被投来回整数枚举也不会导出正确。 我相信我可以用一些工作,解决这个问题,但如果有这样做的任何更简单的方法我不知道。

更新:解决它通过这样做:

该计划是一个可执行文件

  1. 找到C# - 视图在反射器的bug。 然后切换到IL-视图来查看你应该寻找在第5步中的内容。
  2. 打开程序要与ILDASM改变
  3. 按转储,并选择一个空文件夹,默认设置为我工作。
  4. 找到这个文件夹中的文件的.il并打开任何文本编辑
  5. 查找步骤1中的代码。
  6. 用新的代码替换它,在我来说,我只是用了一个简单的返回来替代函数的所有内容(IL_0000:RET)。 我不认为所有修补程序会这么容易。
  7. 步骤3中的文件夹中打开一个commandwindow
  8. 运行ILASM,我还必须包括从原来的exe文件的一些资源。 这些都是与ILDASM自动输出。 我用这个ILASM这样的“C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ ilasm.exe” test.il /resource=test.res /output=FixedProgram.exe

完成! 我只用固定的程序了几分钟,但现在它似乎就像之前除臭虫工作:)

我也遇到了一些问题,应用程序设置。 在%APPDATA%\ ProgramName中有一个叫像中存储了所有的设置ProgramName.exe_Url_qa5i3p42aomuvoxpuxuficvbmngksgjs文件夹。 我的新的可执行文件创建一个新的文件夹这样的,并在最后与默认设置不同的随机字母。 要复制您使用之前只是旧文件夹中的所有内容复制到新的设置。

Answer 1:

如果程序很简单,从理论上讲,你可以使用反射来扭转整个程序返回到C#,进行更改并重新编译。

或者你可以尝试像工具ILDASM ,它应该让你提取白细胞介素,使你的变化(MSIL),并重新组装(使用ILASM )。 显然,要做到这一点,你必须弄清楚如何写你的IL变化,所以你可能会不得不做一些尝试,看看如何if语句编译。

我怀疑两者都将采取乱搞得到重新编译工作的相当多。

祝好运。

如果你得到它的工作,回来后,让我知道,我会在你如何做这个很感兴趣。



Answer 2:

我建议你使用Reflexil插件反射 。 它可以让你轻松地修改组件,甚至被自己的C#代码替换方法的主体。



Answer 3:

我不认为还有一个更简单的方法来做到这一点比你已经提到了什么。 其实,我反编译的程序与ILDASM类似的东西,花了相当多的修修补补。

如果有一个更简单的方法,我想知道这一点。



Answer 4:

您可以使用ILDASM和ILASM使往返。 虽然这是不切实际的大的变化,我认为它应该做的伎俩,你的情况。



Answer 5:

试试这个.net反射插件 。

这为我工作。 它有时会造成不能遵守“编者生成的”标签。 但是,你可以轻松地手动解决这个问题。



Answer 6:

Telerik的只是反编译(免费),然后reflexil插上

2分钟的工作与上面的(我已经尝试了所有其他方法!)



文章来源: Fix bugs in .NET program without access to source