1

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

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

objdump -S ConsoleApplication4.exe 

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

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

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

编辑:我知道 MSIL disassmbler,我想知道等效的汇编语言..

4

2 回答 2

2

除非您已经对应用程序进行了 NGEN,否则将其反汇编为汇编语言是没有意义的,因为 MSIL 直到在运行时被 jitted 才被编译成 x86 代码。

于 2011-04-14T01:12:43.333 回答
1

如果这与 C# 而不是 C++ 有关,请使用 MSIL Disassembler。此外,如果你有 .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

于 2011-04-14T00:57:46.500 回答