小编Eri*_*rik的帖子

修复.NET程序中的错误,无需访问源代码

我有一个经常使用.NET程序.这个程序有一个非常烦人的小错误,应用程序的开发人员无处可寻.

我在反射器中找到了问题的位置,只想在这里添加一个if语句,然后重新编译该程序.

最简单的方法是什么?

我尝试在反射器中使用导出功能,但它似乎并不完美.例如,缺少很多using-directives,并且不能正确导出来回转换为int的枚举.我相信我可以通过一些工作解决这个问题,但我想知道是否有更简单的方法来做到这一点.

更新:解决这个问题:

该程序是单个文件可执行文件

  1. 使用C#-view查找反射器中的错误.然后切换到IL-view以查看在步骤5中应该查找的内容.
  2. 使用ildasm打开要更改的程序
  3. 按转储并选择一个空文件夹,默认设置适合我.
  4. 找到此文件夹中的.il文件,然后打开任何texteditor
  5. 找到步骤1中的代码.
  6. 用新代码替换它,在我的情况下,我只需用简单的返回(IL_0000:ret)替换函数的所有内容.我认为所有修复都不会那么容易.
  7. 从步骤3打开文件夹中的命令窗口
  8. 运行ilasm,我还必须包含原始exe中的一些资源.这些是使用ildasm自动输出的.我用这个ilasm像这样的"C:\ Windows\Microsoft.NET\Framework\v2.0.50727\ilasm.exe"test.il /resource=test.res /output=FixedProgram.exe

完成!我现在只使用固定程序几分钟但它似乎像以前一样工作除了bug :)

我还遇到了应用程序设置的一些问题.在%appdata%\ ProgramName中有一个名为ProgramName.exe_Url_qa5i3p42aomuvoxpuxuficvbmngksgjs的文件夹,其中存储了所有设置.我的新可执行文件创建了一个这样的新文件夹,最后用不同的随机字母和默认设置.要复制之前使用的设置,只需将旧文件夹的所有内容复制到新文件夹即可.

.net reflection reverse-engineering recompile

10
推荐指数
2
解决办法
613
查看次数

标签 统计

.net ×1

recompile ×1

reflection ×1

reverse-engineering ×1