我正在尝试做的事情:
我有一个用 C# 编写的 .exe。Ilspy 显示了代码。它里面有一个DoWork带有静态字段的类SomeValue:
// Program.DoWork
public static int SomeValue => 15;
然而,在代码中,它不是一个字段而是一个 getter 函数:
// return 15;
IL_0000: ldc.i4.s 15
IL_0002: ret
我想修改这个函数以返回 127。我在 .exe 二进制转储中找到了该函数的位置:
0x123456 1f 0f 2a
我在 HxD 编辑器中修改了 .exe,所以新的二进制转储有这个:
0x123456 1f 7f 2a
当我用 Ilspy 打开修改后的 .exe 时,它显示:
// Program.DoWork
public static int SomeValue => 127;
所以一切看起来都很好,但它不起作用。修改后的.exe文件仍然运行,好像SomeValue是15。
问题:
- 这是修改 .net 程序集的有效方法吗?
- 如果是,我错过了什么?