【问题标题】:.NET compilation without JIT possible?.NET 编译没有 JIT 可能吗?
【发布时间】:2010-03-26 15:34:06
【问题描述】:

是否可以直接在 x86 代码中编译 .cs ? 我的意思是,我想观察 IDA Pro 发生了什么,所以我想要的不是 IL 代码而是 asm 代码。

谢谢

【问题讨论】:

  • 为什么?你想做什么?
  • 我要观察内部结构
  • 所以我需要 x86 代码,不需要 IL 代码。我可以用 windbg 来做,但我更喜欢 IDA...
  • 什么内部?底层 .NET 代码?你自己的代码?您希望通过观察这些内部实现什么目标?
  • @Thomas:这就是你想要做的什么,但它并没有说明为什么你想要这样做或你认为你可以做什么处理这些信息。如果您只想知道 .NET VM 应该如何运行,最好阅读规范。

标签: .net compilation jit


【解决方案1】:

看看Ngen.exe

【讨论】:

  • 我尝试了一个:ngen.exe /install myprogram.exe 但是接下来使用 IDA,我有 IL 代码,没有 x86.. :(
  • Ngen 通常会在 /assembly/NativeImages 或类似目录下的 Windows 目录中安装本机映像。你在那里看你的程序吗?我更喜欢查看程序集的另一个选项是在 Visual Studio 调试选项中启用地址级调试并使用提供的调试窗口。
  • 是的,我已经查看了 WINDOWS\assembly\nativeimages... 但接下来,它是 IL 代码。如果我想研究内部结构,我认为这是不可能的,或者更容易找到规范。
【解决方案2】:

很遗憾,IDA 不会从 NGEN 的程序集中加载原生部件。我发现的唯一方法是使用 Visual Studio 调试器。

如果您对 Microsoft .NET 框架内部结构不感兴趣,但也对任何其他 JIT 感兴趣,您可以使用 mono --aot,它会生成普通的 PE 或 ELF 可执行文件(甚至是可读的汇编源代码) .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 2010-09-11
    • 2010-09-21
    相关资源
    最近更新 更多