跟踪c#程序的反汇编

时间:2011-04-14 00:27:27

标签: c# disassembly objdump

我正在尝试使用objdump来理解c#程序的反汇编,因为我使用的是vsiaul c#2008 express edition,它不显示反汇编。

我正在运行以下命令来获取输出:

objdump -S ConsoleApplication4.exe 

因为我无法在反汇编输出中识别我的函数代码,所以我输入了一个值为0x1234的虚拟变量。

 public static void myfun()
    {
        int i;
        i = 0x1234;
        Console.WriteLine(i.ToString());
    }

但是,我无法在生成的文件中的任何位置找到1234的值!我尝试了其他选项,如-t或-T用于objdump,但它没有找到符号表。有人可以告诉我们如何使用objdump查看函数的反汇编,或者是否有其他免费工具?

编辑:我知道MSIL disassmbler,我想知道相当于汇编语言..

2 个答案:

答案 0 :(得分:2)

除非你已经对你的应用程序进行了NGEN,否则反汇编成汇编语言是没有意义的,因为MSIL在运行时被编译到x86代码之前不会被编译成x86代码。

答案 1 :(得分:1)

如果这与C#而不是C ++有关,请使用MSIL反汇编程序。此外,如果您有.Net Reflector,FileDisassembler也是一个很好的工具。

以下是MSIL Disassembler的完整示例分步链接及其msdn文章。

http://www.mactech.com/articles/mactech/Vol.19/19.12/NETbinaries/index.html

http://msdn.microsoft.com/en-us/library/f7dy01k1%28v=vs.71%29.aspx