【发布时间】:2014-09-25 13:57:47
【问题描述】:
我正在尝试创建一个简单的 CIL 代码反编译器。我已经设法正确加载标题和部分,现在我正在努力处理 .text 部分。
这是我的测试应用:
using System;
namespace Sample2
{
class Program
{
static void Main(string[] args)
{
int localVarriableOne = 123;
int localVarriableTwo = 654;
Console.WriteLine(localVarriableOne + localVarriableTwo);
}
}
}
.text 部分标题告诉我PointerToRawData = 0x0200,这是我所期望的。现在,当我尝试跳到那个偏移量时,我遇到了奇怪的字符(标记为红色),这不是我所期望的。我以为我应该遇到 Method Header,无论是小还是大,但我似乎并不正确。方法标头应该设置第二个最低位,而不取决于标头类型。
但是,我设法找到了我期望的 CIL 代码(标记为蓝色)!使用我参考中的 CIL 操作码,我看到代码符合我的期望:
ldc.i4.s 123
stloc.0
ldc.i4 456
stloc.1
...
现在我很困惑。在我的方法声明之前肯定有一些东西,但我找不到任何关于 .text 部分的内容。如果有人能给我任何线索,我会很高兴的。
【问题讨论】:
标签: .net reverse-engineering cil portable-executable