-
-
[求助]请问如何修改.net的字符串常量(元数据?)
-
发表于:
2012-1-12 13:58
6904
-
[求助]请问如何修改.net的字符串常量(元数据?)
我需要修改一个.net程序的字符串常量。可是.net的字符串常量是在元数据中的,我也查了些资料,看了元数据结构,可没找到如何在文件中定位具体一个字符串信息的资料。
比如我用.net写个例子
private void Form1_Load(object sender, EventArgs e)
{
string s;
s = "(";
s = s + ")";
s = s + "-";
this.Text = s;
}
编译成exe后用IL打开
.maxstack 2
.locals init ([0] string s)
IL_0000: /* 00 | */ nop
IL_0001: /* 72 | (70)00000D */ ldstr "("
IL_0006: /* 0A | */ stloc.0
IL_0007: /* 06 | */ ldloc.0
IL_0008: /* 72 | (70)000011 */ ldstr ")"
IL_000d: /* 28 | (0A)00001E */ call string [mscorlib]System.String::Concat(string,
string)
IL_0012: /* 0A | */ stloc.0
IL_0013: /* 06 | */ ldloc.0
IL_0014: /* 72 | (70)000015 */ ldstr "-"
IL_0019: /* 28 | (0A)00001E */ call string [mscorlib]System.String::Concat(string,
string)
IL_001e: /* 0A | */ stloc.0
IL_001f: /* 02 | */ ldarg.0
IL_0020: /* 06 | */ ldloc.0
IL_0021: /* 6F | (0A)000019 */ callvirt instance void [System.Windows.Forms]System.Windows.Forms.Control::set_Text(string)
IL_0026: /* 00 | */ nop
IL_0027: /* 2A | */ ret
看到IL_0001: /* 72 | (70)00000D */ ldstr "(" 加载7000000D地址的元数据。
可具体这个元数据在该exe文件的什么位置?如何才能修改它?
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!