我在.net中注意到它非常容易逆向工程exe.这是因为.net可执行文件只是.net引擎的指令代码,因此.net是一种解释型语言?并且从未执行过本机?
我必须承认,我从来没有.net代码的任何性能问题,所以这就是我怀疑的原因.
有人可以向我解释一下吗?
感谢到目前为止的答案,有谁知道为什么微软决定创建这种需要框架的方法,如果我在vb6代码被编译为本机时正确记得.是不是有一个非常好的理由让.net代码现在必须通过解释器运行>
问题应该是什么是"真正的"可执行文件.
可执行.NET程序集以可移植可执行文件(PE)格式存储,该格式是用于Windows中可执行文件的文件格式之一.
这是一种包装格式,告诉操作系统执行包含的代码所需的所有信息.
从这个意义上说,.NET可执行文件是完全"真实"的exes.
但是,对于.NET程序集,PE格式已扩展:
Microsoft的.NET Framework扩展了PE格式,其功能支持公共语言运行时.其中包括CLR标题和CLR数据部分.加载二进制文件后,OS加载程序通过PE/COFF IMPORT表中的引用生成执行到CLR.然后CLR加载CLR标题和数据部分.
CLR数据部分包含两个重要部分:元数据和中间语言(IL)代码:
元数据包含与程序集相关的信息,包括程序集清单.清单详细描述了程序集,包括唯一标识(通过哈希,版本号等),导出组件的数据,扩展类型信息(由公共类型系统(CTS)支持),外部引用和文件列表>在集会内.CLR环境广泛使用元数据.
中间语言(IL)代码是抽象的,与语言无关的代码,满足.NET CLR的通用中间语言(CIL)要求.术语"中间"是指IL代码的本质是跨语言和跨平台兼容.这种中间语言类似于Java字节码,允许平台和语言支持常见的.NET CLR.IL支持面向对象的编程(多态,继承,抽象类型等),异常,事件和各种数据结构.IL代码被组装到.NET PE中以供CLR执行.
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |