.NET IL 字节存储在 .NET 可执行文件中的何处?

逆向工程 视窗 。网 C#
2021-06-18 19:13:35

当我编译 ac# 代码时,它会编译成一个 .NET 可执行文件,它只从 mscoree.dll 导入 _CorExeMain,现在我的问题是:

  1. _CorExeMain 是获取 IL 并执行其相应 x86 代码的解释器吗,就像 VMprotect 等一样?

  2. IL 字节实际存储在哪里?它们似乎存储在 .text 部分,但我找不到任何可以找到它们存储位置的工具。它们存放在哪里?

1个回答

对于 .NET 程序集,可以在数据目录中找到一个 .NET 元数据目录。从中您可以访问MetaData HeaderMetaData Streams保存所有信息以供您提取和定位代码。

Simon Cooper撰写的“ .NET 程序集剖析”是本主题的一个良好开端(甚至可能是完整指南)

对于第一个问题 - 是的,这_CorExeMain是执行所有技巧以使您的程序集执行的入口点。有关在调用期间发生的所有事情的解释,请检查CLR 在执行一行代码之前所做的 68 件事